SmartOS is a Joy to Use

Photo by Marc PEZIN on Unsplash

I had a renewed interest in the Solaris operating systems. It was a sad time when Oracle closed the Opensolaris project and killed Solaris. But it's direct descendant Illumos project is still alive and well. There are three well know distribution based Illumos -- Omnios CE, Openindiana and SmartOS.

  • Omnios CE is community driven server oriented distribution

  • Openindiana aims to be the direct descendant to Opensolaris

  • SmartOS is a live OS that provides virtualization

What Illumos Offers

  • ZFS - The de facto file system for production systems in my opinion.

  • DTrace - Dynamic tracing for identifying software issues.

  • Zone - a container technology based on Jail (from BSD).

  • Crossbow - Network virtualization technology.

What SmartOS offer

SmartOS is a live OS. This means you burn the OS onto a USB key and boot from it. It's diskless. The update process involved burning another USB key and boot from that. Many components are immutable (e.g. /etc and /usr). The persistent data are stored on the internal hard drive managed by ZFS. In addition to the technologies that it inherited from Illumos, it also provides support for KVM and Bhyve.

An easiy comparsion is Xen hypervisor. I haven't used Xen since 2010, so I can't comment on how it works now. It used to be installed onto the internal hard drive; therefore, it takes up disk space. Disk space that can be used for another VM. It may not look much for a single machine, but the space adds up pretty quickly for a large corporation.

What I need

I'm looking for a cheap machine to use as a home lab. It's going to be hosting a range of different operating systems. Therefore SmartOS is the obvious choice.


The first place you should go to is I read through the entire guide before attempting any deployment. It's well written and has pretty much all you need to get started.

SmartOS focuses on virtualization. It consolidated the creation and management of Zones and VMs into a single command -- vmadm. It manages the prebuild image using command -- imgadm. It uses JSON file format to define the virtual environment (i.e. zone, kvm and bhyve).

Sample Process

A typical process for create a virtual environment contains the following:

  1. Decide on what you want to use Zone, KVM or Bhyve.

  2. Find the image that you want using "imgadm avail".

  3. Import the image "imgadm avail <UUID>".

  4. Create the JSON file that contains the specs of the virtual environment.

  5. Run "vmadm create -f vm1.json" to create the VM.

  6. Enjoy your virtual environment.

The process is just that simple. SmartOS's wiki page provides sample JSON files that you can copy and modify to fit your needs.

I have a cheap Dell Optiplex 9010 small form factor with Intel i7 and 8GB of RAM. I've spon up 6 virtual environments (2 zones and 4 KVMs) with in minutes.