Install windows DomU for xVM on Nevada 75a

1. Configure the vnc password and default nic for xend service.

    # svccfg -s xvm/xend setprop config/vncpasswd="abc123"
    # svccfg -s xvm/xend setprop config/default-nic="bge0"
    # svcadm refresh xvm/xend
    # svcadm restart xvm/xend

The NIC must support the latest version of GLD (version 3), such as bge, e1000g, xge, nge,
and rge devices. The way to determine if a NIC is GLDv3, run the dladm(1M) command with the 'show-link', and look for links that are not of type 'legacy'. In my case, my NIC device is bge0.

Refer to "Download, Installation, and Configuration Information"

2. Use virt-install(1M) to install the windows domain.

    # export DISPLAY=:0.0
    and you need enable your Xserver access from localhost

    # virt-install -n winxp --hvm -r 512 --vnc -f /export/winxp/winxp-disk.raw -s 10 -c /windows/media.iso
    # vncviewer :0

This will create a fully virtualized guest domain named as "winxp", 512M memory, 10G disk space. And then start to launch the installer in the installation CD image. With virt-install(1M), you DON NOT need qemu-img utility (get it from blastwave) to create the domain disk file.

Refer to "Using virt-install to Install a Domain"

3. After the initial installation is finished, that domain is poweredd off, to start it again

    # xm start winxp
    # vncviewer :0
While the post installer still needs load something from the CD image, while seems that the newly created domain does not remember its CDROM configuration. So I created a python configuration file ("xm block-attach" maybe a better solution), following the instructions in "Instant Windows—Recipe for Running Windows as a Guest on Solaris xVM", the only difference is I changed the vif to [ '' ] .

    # xm shutdown winxp
    # xm delete winxp
    # xm new winxp.hvm
    # xm start winxp

4. Finish the post installation of windows, and don't forget to install the security patches and antivirus software 🙂

Boot solaris xVM off a ZFS root filesystem

Thanks Jürgen Keil for the kindly help, I could boot solaris xVM off a ZFS root filesystem now.

Just one extra step to,

# mount -F lofs -o nosub / /mnt
# cp /mnt/lib/ /zfsroot/lib

That's because the /lib/ is re-mounted by another more suitable libc for the running processor. E.g., for my Intel dual core, it's

$ mount -p | grep libc
/usr/lib/libc/ - /lib/ lofs - no

While, under xVM, the "sep" cpuid (see isainfo -v) feature isn't available.