I recently decided to try SmartOS as it looks to be a very interesting virtualization platform. I didn’t have a machine to spare to trial it, so I decided to rent a Hetzner EX4S with a 16GB flash drive.

For the initial install I asked Hetzner to set up the server to boot to their rescue environment, rather than preinstall one of their OS images. From here I was able to wget the SmartOS USB image and dd it to the flash drive.

The next bit is where it got “interesting”. I knew I’d need console access to the server to set up SmartOS, so I filed a support request with Hetzner. Once I had access to the IP-KVM (or LARA in their terminology) I rebooted the server to boot from the USB stick. However I started seeing a lot of error messages about disk timeouts as SmartOS tried to do its initial configuration. Once I got to the disk selection for creating the zpool, none were available! On a hunch, I rebooted the machine and entered the BIOS setup utility. They’ve hidden the message that tells you which key does this, so I basically mashed the keyboard a bit until I found the right one :-) I think it was Delete in the end. So, once inside the BIOS setup, I found they’d set the server’s hard drives to run in IDE emulation mode rather than SATA AHCI. I changed this, rebooted, and lo! SmartOS found the disks, with no timeout messages!

Once the SmartOS configuration was done, I could access the machine remotely. As I only had a single IPv4 from Hetzner, I decided to “rent” another (for €1/month) so that I could create a router zone. All of my other VMs are NATed behind this. Bit of a hack, but it does the job for now.

I’ve yet to configure it for IPv6 yet as SmartOS doesn’t yet have a way of enabling this from their configuration so you end up having to write custom SMF manifests. There’s also an issue with KVM guests and IPv6, due to the way that all VMs, whether SmartOS or KVM, are run inside Zones. The Zone’s VNIC has a MAC address which can either be defined by the VM config, or generated randomly. When you’re using KVM, the VM’s VNIC also gets the same MAC address, which leads the guest to throw DAD errors for the link-local address.