Creating an Ubuntu 12.04 LTS VM on SmartOS
April 28th, 2012
Joyent’s SmartOS, a fairly recent hypervisor for virtualization, provides a number of prebuilt virtual machine images for various operating systems but doesn’t yet have one available for Ubuntu 12.04 LTS. This post provides the steps required to install it manually including the basic SmartOS commands as well as some Ubuntu-specific customizations.
- Create a JSON file with the virtual machine parameters. Also see the SmartOS Wiki for some additional options and details.
{ "alias": "ubuntu12", "hostname": "ubuntu12", "brand": "kvm", "vcpus": 1, "autoboot": false, "ram": 4096, "resolvers": [ "10.1.1.1" ], "disks": [ { "boot": true, "model": "virtio", "size": 40960 } ], "nics": [ { "nic_tag": "admin", "model": "virtio", "ip": "10.1.1.11", "netmask": "255.255.255.0", "gateway": "10.1.1.1", "primary": true } ] }
- Create the virtual machine with the
vmadm
command using the JSON file as the input.# vmadm create -f ubuntu-12.04.json Successfully created 3b202a79-f148-4c87-bb7f-ff9d64f724ca
- Copy the Ubuntu 12.04 LTS install ISO to the root dataset for this virtual machine. This assumes the ISO has already been copied to the
/zones/isos
directory on the SmartOS server.# cp /zones/isos/ubuntu-12.04-server-amd64.iso \ /zones/3b202a79-f148-4c87-bb7f-ff9d64f724ca/root/.
- Boot the VM to the ISO.
# vmadm start 3b202a79-f148-4c87-bb7f-ff9d64f724ca \ order=cd,once=d cdrom=/ubuntu-12.04-server-amd64.iso,ide Successfully started 3b202a79-f148-4c87-bb7f-ff9d64f724ca
- Get the VNC IP and port from the VM.
# vmadm info 3b202a79-f148-4c87-bb7f-ff9d64f724ca vnc { "vnc": { "host": "10.1.1.4", "port": 63407, "display": 57507 } }
- Connect to the VM with VNC and complete the installation as normal, including the reboot at the end.
- Enable the serial console in Ubuntu with the steps from the Ubuntu SerialConsoleHowto. This step is optional but adds some nice administration benefits as demonstrated in the next step.
- Paste the following into
/etc/init/ttyS0.conf
.# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc or RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 vt102
- Ask upstart to start the getty.
$ sudo start ttyS0
- Paste the following into
- The serial console can then be connected to from the SmartOS host with the
vmadm
tool. Exiting from this console is done withCTRL-]
.# vmadm console 3b202a79-f148-4c87-bb7f-ff9d64f724ca Unknown command: console Ubuntu 12.04 LTS ubuntu12 ttyS0 ubuntu12 login: ed Password: Last login: Sat Apr 28 22:38:41 CDT 2012 from 10.1.1.4 on pts/0 Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Sat Apr 28 22:39:26 CDT 2012 System load: 0.0 Processes: 61 Usage of /: 4.1% of 35.92GB Users logged in: 1 Memory usage: 1% IP address for eth0: 10.1.1.11 Swap usage: 0% Graph this data and manage this system at https://landscape.canonical.com/ 9 packages can be updated. 0 updates are security updates. ed@ubuntu12:~$