Solaris domU creation

NB: This text was moved to its own page in 2014 and thus was written before that, perhaps well before that. It should be read only as a hint at how things used to be, for those attempting to figure out how they are now.

Download an Opensolaris release or development snapshot DVD image. Attach the DVD image to a MAN.VND.4 device. Copy the kernel and ramdisk filesystem image to your dom0 filesystem.

dom0# mkdir /root/solaris
dom0# vnconfig vnd0 osol-1002-124-x86.iso
dom0# mount /dev/vnd0a /mnt

## for a 64-bit guest
dom0# cp /mnt/boot/amd64/x86.microroot /root/solaris
dom0# cp /mnt/platform/i86xpv/kernel/amd64/unix /root/solaris

## for a 32-bit guest
dom0# cp /mnt/boot/x86.microroot /root/solaris
dom0# cp /mnt/platform/i86xpv/kernel/unix /root/solaris

dom0# umount /mnt

Keep the MAN.VND.4 configured. For some reason the boot process stalls unless the DVD image is attached to the guest as a "phy" device. Create an initial configuration file with the following contents. Substitute /dev/wd0k with an empty partition at least 8 GB large.

memory = 640
name = 'solaris'
disk = [ 'phy:/dev/wd0k,0,w' ]
disk += [ 'phy:/dev/vnd0d,6:cdrom,r' ]
vif = [ 'bridge=bridge0' ]
kernel = '/root/solaris/unix'
ramdisk = '/root/solaris/x86.microroot'
# for a 64-bit guest
extra = '/platform/i86xpv/kernel/amd64/unix - nowin -B install_media=cdrom'
# for a 32-bit guest
#extra = '/platform/i86xpv/kernel/unix - nowin -B install_media=cdrom'

Start the guest.

dom0# xm create -c solaris.cfg
Started domain solaris
                      v3.3.2 chgset 'unavailable'
SunOS Release 5.11 Version snv_124 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: opensolaris
Remounting root read/write
Probing for device nodes ...
WARNING: emlxs: ddi_modopen drv/fct failed: err 2
Preparing live image for use
Done mounting Live image

Make sure the network is configured. Note that it can take a minute for the xnf0 interface to appear.

opensolaris console login: jack
Password: jack
Sun Microsystems Inc.   SunOS 5.11      snv_124 November 2008
jack@opensolaris:~$ pfexec sh
sh-3.2# ifconfig -a
sh-3.2# exit

Set a password for VNC and start the VNC server which provides the X11 display where the installation program runs.

jack@opensolaris:~$ vncpasswd
Password: solaris
Verify: solaris
jack@opensolaris:~$ cp .Xclients .vnc/xstartup
jack@opensolaris:~$ vncserver :1

From a remote machine connect to the VNC server. Use ifconfig xnf0 on the guest to find the correct IP address to use.

remote$ vncviewer 172.18.2.99:1

It is also possible to launch the installation on a remote X11 display.

jack@opensolaris:~$ export DISPLAY=172.18.1.1:0
jack@opensolaris:~$ pfexec gui-install

After the GUI installation is complete you will be asked to reboot. Before that you need to determine the ZFS ID for the new boot filesystem and update the configuration file accordingly. Return to the guest console.

jack@opensolaris:~$ pfexec zdb -vvv rpool | grep bootfs
                bootfs = 43
^C
jack@opensolaris:~$

The final configuration file should look like this. Note in particular the last line.

memory = 640
name = 'solaris'
disk = [ 'phy:/dev/wd0k,0,w' ]
vif = [ 'bridge=bridge0' ]
kernel = '/root/solaris/unix'
ramdisk = '/root/solaris/x86.microroot'
extra = '/platform/i86xpv/kernel/amd64/unix -B zfs-bootfs=rpool/43,bootpath="/xpvd/xdf@0:a"'

Restart the guest to verify it works correctly.

dom0# xm destroy solaris
dom0# xm create -c solaris.cfg
Using config file "./solaris.cfg".
v3.3.2 chgset 'unavailable'
Started domain solaris
SunOS Release 5.11 Version snv_124 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
WARNING: emlxs: ddi_modopen drv/fct failed: err 2
Hostname: osol
Configuring devices.
Loading smf(5) service descriptions: 160/160
svccfg import warnings. See /var/svc/log/system-manifest-import:default.log .
Reading ZFS config: done.
Mounting ZFS filesystems: (6/6)
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair

osol console login: