OpenSolaris 2009.06 was released a few days ago!
As it’s been a while since I’ve used this distro and I feel like creating my inaugural blog post; lets give it a spin.
The point of this exercise will be to have OpenSolaris 2009.06 and SXCE (nevada) b115 installed to the same zpool.
I’ve installed OpenSolaris 2009.06 to the 300GB disk in my machine as follows:
(insomnia:~) houst0n > zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 93.2G 5.22G 15.2G /data
data/scratch 18.8G 5.22G 18.8G /data/scratch
data/music 52.8G 5.22G 52.7G /data/music
data/tmp 4.65G 5.22G 4.65G /data/tmp
data/tools 690M 5.22G 690M /data/tools
rpool 15.2G 180G 77.5K /rpool
rpool/ROOT 4.95G 180G 19K legacy
rpool/ROOT/opensolaris 4.95G 180G 4.80G /
rpool/dump 1023M 180G 1023M -
rpool/export 8.28G 180G 23K /export
rpool/export/build 214M 180G 214M /export/build
rpool/export/home 7.94G 180G 21K /export/home
rpool/export/home/houst0n 7.94G 180G 7.94G /export/home/houst0n
rpool/export/zones 136M 180G 21K /export/zones
rpool/export/zones/z00 136M 180G 21K /export/zones/z00
rpool/export/zones/z00/ROOT 136M 180G 19K legacy
rpool/export/zones/z00/ROOT/zbe 136M 180G 136M legacy
rpool/swap 1023M 180G 196M -
Everything went smooth, and thus far IPS hasn’t died once yet either. A definite improvement over the previous releases.
Next, we install SXCE b111 into VirtualBox
(Get it here (sun.com): http://tinyurl.com/p4bh8r )

This takes a good old while, best to find something other to do while it runs.
After that, we create a share and dump the root fs from the VM onto it:
(insomnia:~) houst0n > pfexec zfs create rpool/export/share
(insomnia:~) houst0n > pfexec zfs sharenfs=on rpool/export/share
(insomnia:~) houst0n > pfexec chmod 777 /export/share/
From the VM:
# mount -F nfs 10.0.0.12:/export/share /mnt
# zfs snapshot rpool/ROOT/snv_111@v2p
# zfs send rpool/ROOT/snv_111@v2p > /mnt/snv_111.zfs
This process takes a while, so you’ll need to find yet another way to keep yourself amused while it runs.
Once this (finally) completes, we want to recv the zfs snapshot from the file into our host’s rpool:
(insomnia:~) houst0n > pfexec zfs recv rpool/ROOT/snv_111 < /export/share/snv_111.zfs
Lets see what we have:
(insomnia:~) houst0n > zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 93.8G 4.62G 15.2G /data
data/scratch 18.8G 4.62G 18.8G /data/scratch
data/music 52.8G 4.62G 52.7G /data/music
data/tmp 4.65G 4.62G 4.65G /data/tmp
data/tools 1.27G 4.62G 1.27G /data/tools
rpool 30.2G 165G 77.5K /rpool
rpool/ROOT 9.40G 165G 19K legacy
rpool/ROOT/opensolaris 4.96G 165G 4.81G /
rpool/ROOT/snv_111 4.45G 165G 4.45G legacy
rpool/dump 1023M 165G 1023M -
rpool/export 18.8G 165G 24K /export
rpool/export/build 214M 165G 214M /export/build
rpool/export/home 14.1G 165G 21K /export/home
rpool/export/home/houst0n 14.1G 165G 14.1G /export/home/houst0n
rpool/export/share 4.34G 165G 4.34G /export/share
rpool/export/zones 136M 165G 21K /export/zones
rpool/export/zones/z00 136M 165G 21K /export/zones/z00
rpool/export/zones/z00/ROOT 136M 165G 19K legacy
rpool/export/zones/z00/ROOT/zbe 136M 165G 136M legacy
rpool/swap 1023M 165G 290M -
Cool. Can we mount it?
(insomnia:~) houst0n > pfexec zfs set mountpoint=/mnt rpool/ROOT/snv_111
(insomnia:~) houst0n > pfexec zfs mount rpool/ROOT/snv_111
cannot mount ‘rpool/ROOT/snv_111′: filesystem already mounted
(insomnia:~) houst0n > ls /mnt
bin@ etc/ lib/ opt/ rpool/ typescript
boot/ export/ media/ platform/ sbin/ usr/
dev/ home/ mnt/ proc/ system/ var/
devices/ kernel/ net/ root/ tmp/
(insomnia:~) houst0n >
Now we want to make it bootable. All we should need to do is copy over some files from the opensolaris root zvol. A reconf reboot should take care of the rest:
(insomnia:/) houst0n > cd /mnt/etc
(insomnia:/mnt/etc) houst0n > pfexec mkdir vb_files
(insomnia:/mnt/etc) houst0n > pfexec mv path_to_inst zfs/zpool.cache driver_* vb_files/
(insomnia:/mnt/etc) houst0n > pfexec cp /etc/path_to_inst /etc/zfs/zpool.cache /etc/driver_* .
(insomnia:/mnt/etc) houst0n > touch /mnt/reconfigure
Next up is grub, I added an entry for snv_111 like this
to /rpool/boot/grub/menu.lst:
title SXCE b111
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/snv_111
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,disable-ehci=true
module$ /platform/i86pc/$ISADIR/boot_archive
A reboot later, and we’re booted successfully into snv111.
Now it’s time to LU to b115
Download and mount the 115 iso, upgrade the lu bits on the b111 BE:
(insomnia:~) houst0n > lofiadm -a /export/home/houst0n/isos/sol-nv-b115-x86-dvd.iso
/dev/lofi/1
(insomnia:~) houst0n > mount -F hsfs /dev/lofi/1 /mnt
(insomnia:~) houst0n > cd /mnt/Solaris_11/Product
(insomnia:/mnt/Solaris_11/Product) houst0n > pkgrm SUNWlucfg SUNWlur SUNWluu SUNWluzone
(insomnia:/mnt/Solaris_11/Product) houst0n > pkgadd -d . SUNWlucfg SUNWlur SUNWluu SUNWluzone
Next, create a new BE:
(insomnia:~) houst0n > lucreate -c snv_111 -n snv_115
Checking GRUB menu…
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <snv_111>.
Creating initial configuration for primary boot environment <snv_111>.
The device </dev/dsk/c3d0s0> is not a root device for any boot environment; cannot get BE ID.
PBE configuration successful: PBE name <snv_111> PBE Boot Device </dev/dsk/c3d0s0>.
Comparing source boot environment <snv_111> file systems with the file
system(s) you specified for the new boot environment. Determining which
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment <snv_115>.
Source boot environment is <snv_111>.
Creating boot environment <snv_115>.
Cloning file systems from boot environment <snv_111> to create boot environment <snv_115>.
Creating snapshot for <rpool/ROOT/snv_111> on <rpool/ROOT/snv_111@snv_115>.
Creating clone for <rpool/ROOT/snv_111@snv_115> on <rpool/ROOT/snv_115>.
Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/snv_115>.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <snv_115> as <mount-point>//boot/grub/menu.lst.prev.
File </boot/grub/menu.lst> propagation successful
Copied GRUB menu from PBE to ABE
No entry for BE <snv_115> in GRUB menu
Population of boot environment <snv_115> successful.
Creation of boot environment <snv_115> successful.
Lets see what we have:
(insomnia:~) houst0n > lustatus
Boot Environment Is Active Active Can Copy
Name Complete Now On Reboot Delete Status
————————– ——– —— ——— —— ———-
snv_111 yes yes yes no -
snv_115 yes no no yes -
Finally, upgrade and activate it:
(insomnia:~) houst0n > luupgrade -u -n snv_115 -s /mnt
System has findroot enabled GRUB
No entry for BE <snv_115> in GRUB menu
Uncompressing miniroot
Copying failsafe kernel from media.
52479 blocks
miniroot filesystem is <lofs>
Mounting miniroot at </mnt/Solaris_11/Tools/Boot>
Validating the contents of the media </mnt>.
The media is a standard Solaris media.
The media contains an operating system upgrade image.
The media contains <Solaris> version <11>.
Constructing upgrade profile to use.
Locating the operating system upgrade program.
Checking for existence of previously scheduled Live Upgrade requests.
Creating upgrade profile for BE <snv_115>.
Checking for GRUB menu on ABE <snv_115>.
Saving GRUB menu on ABE <snv_115>.
Checking for x86 boot partition on ABE.
Determining packages to install or upgrade for BE <snv_115>.
Performing the operating system upgrade of the BE <snv_115>.
CAUTION: Interrupting this process may leave the boot environment unstable
or unbootable.
Upgrading Solaris: 100% completedeted
Installation of the packages from this media is complete.
Restoring GRUB menu on ABE <snv_115>.
Adding operating system patches to the BE <snv_115>.
The operating system patch installation is complete.
ABE boot partition backing deleted.
PBE GRUB has no capability information.
PBE GRUB has no versioning information.
ABE GRUB is newer than PBE GRUB. Updating GRUB.
GRUB update was successful.
Configuring failsafe for system.
Failsafe configuration is complete.
INFORMATION: The file </var/sadm/system/logs/upgrade_log> on boot
environment <snv_115> contains a log of the upgrade operation.
INFORMATION: The file </var/sadm/system/data/upgrade_cleanup> on boot
environment <snv_115> contains a log of cleanup operations required.
WARNING: <1> packages failed to install properly on boot environment <snv_115>.
INFORMATION: The file </var/sadm/system/data/upgrade_failed_pkgadds> on
boot environment <snv_115> contains a list of packages that failed to
upgrade or install properly.
INFORMATION: Review the files listed above. Remember that all of the files
are located on boot environment <snv_115>. Before you activate boot
environment <snv_115>, determine if any additional system maintenance is
required or if additional media of the software distribution must be
installed.
The Solaris upgrade of the boot environment <snv_115> is partially complete.
Installing failsafe
Failsafe install is complete.
(insomnia:~) houst0n > pfexec luactivate snv_115
System has findroot enabled GRUB
Generating boot-sign, partition and slice information for PBE <snv_111>
Saving existing file </etc/bootsign> in top level dataset for BE <snv_111> as <mount-point>//etc/bootsign.prev.
WARNING: <1> packages failed to install properly on boot environment <snv_115>.
INFORMATION: </var/sadm/system/data/upgrade_failed_pkgadds> on boot
environment <snv_115> contains a list of packages that failed to upgrade
or install properly. Review the file before you reboot the system to
determine if any additional system maintenance is required.
Generating boot-sign for ABE <snv_115>
Saving existing file </etc/bootsign> in top level dataset for BE <snv_115> as <mount-point>//etc/bootsign.prev.
Generating partition and slice information for ABE <snv_115>
Copied boot menu from top level dataset.
Generating direct boot menu entries for PBE.
Generating xVM menu entries for PBE.
Generating direct boot menu entries for ABE.
Generating xVM menu entries for ABE.
Disabling splashimage
Re-enabling splashimage
No more bootadm entries. Deletion of bootadm entries is complete.
GRUB menu default setting is unaffected
Done eliding bootadm entries.
**********************************************************************
The target boot environment has been activated. It will be used when you
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You
MUST USE either the init or the shutdown command when you reboot. If you
do not use either init or shutdown, the system will not boot using the
target BE.
**********************************************************************
In case of a failure while booting to the target BE, the following process
needs to be followed to fallback to the currently working boot environment:
1. Boot from Solaris failsafe or boot in single user mode from the Solaris
Install CD or Network.
2. Mount the Parent boot environment root slice to some directory (like
/mnt). You can use the following command to mount:
mount -Fzfs /dev/dsk/c3d0s0 /mnt
3. Run <luactivate> utility with out any arguments from the Parent boot
environment root slice, as shown below:
/mnt/sbin/luactivate
4. luactivate, activates the previous working boot environment and
indicates the result.
5. Exit Single User mode and reboot the machine.
**********************************************************************
Modifying boot archive service
Propagating findroot GRUB for menu conversion.
File </etc/lu/installgrub.findroot> propagation successful
File </etc/lu/stage1.findroot> propagation successful
File </etc/lu/stage2.findroot> propagation successful
Deleting stale GRUB loader from all BEs.
File </etc/lu/installgrub.latest> deletion successful
File </etc/lu/stage1.latest> deletion successful
File </etc/lu/stage2.latest> deletion successful
Activation of boot environment <snv_115> successful.
And we’re done!
(insomnia:~) houst0n > beadm list
BE Active Mountpoint Space Policy Created
– —— ———- —– —— ——-
opensolaris N / 5.28G static 2009-06-02 21:25
snv_111 - - 17.72M static 2009-06-07 17:41
snv_115 R - 8.76G static 2009-06-07 21:55