When I say "shoot the old horse" I mean not an animal, I mean Solaris 10 which was born in 1992. It was difficult to adapt this operating system to a new reality, that's why I decided to describe how to put it in OpenStack.

Software I use:

  1. OpenStack Ocata (RDO distribution).
  2. QEMU 2.9.0.
  3. Solaris 10 10/09.
  4. Base image I prepare in VirtualBox 5.1 (that image intended for Vagrant and OpenStack simultaneously).


There is a problem to start the virtual machine with two "pysical" sockets.

It works: -smp 2,sockets=1,cores=2,threads=1
It doesn't work: -smp 2,sockets=2,cores=1,threads=1


You must install Solaris 10 on an IDE (Ocata doesn't support SATA in "hw_disk_bus", virtio drivers don't exist) hard drive and that drive must be the first drive on the IDE bus (it's simple to choose right order in VirtualBox). If you don't do this, your booting process couldn't find a system slice on a specific PCI device and never will boot. For detailed information see "bootpath" in "/boot/solaris/bootenv.rc".

Example: setprop bootpath /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0:a


There are many suggestions in Internet to disable CPU extension "x2apic" and it's true that after disabling that extension the network connections work as expected, but ... if you continue to work with that virtual machine you will notice that speed of those network connections is very slow and kernel utilization inside the virtual machine is high.

To avoid this problem you must disable IOAPIC for a virtual machine with installed Solaris 10:
--enable-kvm -no-kvm-irqchip


If you want that your virtual machine can work properly with DHCP, you must do these things:

Set hostname:
echo solaris10 > /etc/nodename

Tune all possible network devices to get DHCP lease:
echo -e "primary\nwait 60" > /etc/dhcp.e1000g1

Get MTU from DHCP:
perl -pi -e "s/PARAM_REQUEST_LIST=.*/PARAM_REQUEST_LIST=1,3,6,12,15,26,28,43/g" /etc/default/dhcpagent

Set MTU for all possible network devices:
echo -e "solaris10\nmtu 1450\nup" > /etc/hostname.e1000g1

There is a problem with NAT of Neutron L3 Agent, just turn on TCP timestamps:
ndd -set /dev/tcp tcp_tstamp_always 1