The other day I documented a kickstart process for creating base CentOS VM images. I tried but failed to get ubuntu installed using kickstart. Rather than learn the normal ubuntu process I figured I’d install manually. Beyond that, the approach is basically the same:
- Download ubuntu server, I chose the 64-bit LTS iso (10.04).
- create new empty VM called
vanilla-ubuntu
. - Resize the disk image to 10GB.
- set RAM to 256MB.
- disable just about all options including audio support, usb support, printer support, file sharing, etc.
- set to NAT networking.
- attach ubuntu iso to cdrom drive.
- Accept all installer defaults, but select OpenSSH server as additional system to install
- Log in as created user
- run
sudo passwd root
to set the root password sudo apt-get update && sudo apt-get -y dist-upgrade
- to work around this bug,
sudo rm /etc/motd.tail
sudo shutdown -h now
.- open the settings pane, open the hard disk panel, and select “clean up disk”.
- disconnect and remove the floppy drive. Disconnect the DVD drive.
- (optional), open the directory containing the VM location in the terminal and
mv *.vmwarevm/* . && rm -r *.vmwarevm
. When you next open the VM (you will need to use File > Open), select “I moved it”. - Make a backup copy of the virtual machine files, this is your clean VMWare-independent base VM.
- Start the virtual machine.
- in the Fusion menu, select Virtual Machine > Install VMWare tools, and install the tools:
mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /tmp tar zxf /mnt/cdrom/VMwareTools*.tar.gz ./vmware-install.pl --default cd rm -Rf /tmp/vmware-tools-distrib
- Shut down the virtual machine
- Make a backup copy of the virtual machine files, this is your clean VMWare-ready base VM.
One thing that’s easy to notice is how lightning fast ubuntu starts up. The other thing to notice is just how old CentOS / RHEL 5 really is, and IMNSHO how overdue RHEL 6 was (and CentOS 6 is):
Ubuntu 10.04 LTS | CentOS 5.6 |
---|---|
# uname -r 2.6.32-31-server # python -V Python 2.6.5 # perl -v This is perl, v5.10.1 ... # apt-cache show ruby1.9.1 | grep Version Version: 1.9.1.378-1 |
# uname -r 2.6.18-238.9.1.el5 # python -V Python 2.4.3 # perl -v This is perl, v5.8.8 ... # yum info ruby.x86_64 | grep Version Version : 1.8.5 |
Hey Leo,
I’m doing something similar with VirtualBox and Debian at the moment.
First off, be wary of duplicate mac addresses on client import (http://www.virtualbox.org/ticket/9074)
Next, if using DHCP you’ll need to remove the /etc/udev/rules.d/70-persistent-net.rules files from the base image (it’ll sort itself out on first boot, if it’s there then the original machines mac address is left against eth0).