With Ubuntu 12.04 it’s remarkably simple to convert a HVM guest to PV. This will probably work in much the same way with Ubuntu 12.10 as well. Here’s what i did:
Requirements
- VM Host running Xen 4.1 or later (mine is running the default packages provided by debian 6 / squeeze)
- A spare drive (will also work with a disk-image-file)
- Ubuntu Server installation ISO
Installation Phase
In the installation phase, i am running this machine as a HVM machine. The config can be found below. I basically give it a hard disc and the CD-ISO as disks and tell it to boot from CD. Everything else is pretty much default.
# Hostname
name = 'machine'
# HVM-Loader.
kernel = '/usr/lib/xen-4.0/boot/hvmloader'
device_model='/usr/lib/xen-4.0/bin/qemu-dm'
builder = 'hvm'
memory = 2048
shadow_memory = 8
vcpus = 2
disk = [
'phy:/dev/sdc,ioemu:hda,w',
'phy:/dev/loop21,ioemu:hdc:cdrom,r' # i need to loop CD-Isos, not sure, why.
]
# Networking
vif = [ 'mac=11:22:33:44:55:66,bridge=br0' ]
boot='d'
vnc=1
vncpasswd = 'setup-something-nice'
Fire up your machine with xm create machine.cfg
and connect to it via VNC. Install Ubuntu the way you like.
Converting to PV
After the setup, i usually turn the machine off and mount the hard-disk on the VM host. I alter two things: I add a /etc/init/hvc0.conf (which is a copy from /etc/init/tty1.conf with slight alterations) and i put some static settings into /etc/network/interfaces.
I then reboot the machine with this Xen-Config:
name = 'machine'
kernel = '/boot/vmlinuz-3.2.0-31-generic'
ramdisk = '/boot/initrd.img-3.2.0-31-generic'
root = '/dev/xvda1 ro,console=hvc0'
memory = '2048'
vcpus = '2'
disk = [
'phy:/dev/sdc,xvda,w'
]
vif = [ 'mac=11:22:33:44:55:66,bridge=br0' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'