====== Ubuntu 12.04 xen ======
The installation is based on the document https://help.ubuntu.com/community/XenProposed. Check the part called "Manually creating a PV Guest VM"
You will need a machine where xen is correctly configured, a bridge with internet connection and a public IP or a private IP with access to a router that can connecto the internet.
First we create an empty disk, in this case it will be 8 Gb:
$ dd if=/dev/zero of=ubuntu.img bs=1 count=1 seek=8G
Then we download netboot kernel and initrd compatible with Xen. We are using a mirror near to us but you can select one from this page https://launchpad.net/ubuntu/+archivemirrors:
$ wget http://ftp.dat.etsit.upm.es/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/xen/vmlinuz
$ wget http://ftp.dat.etsit.upm.es/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/xen/initrd.gz
Now we can create a file describing the VM where the ubuntu will be installed:
name = "ubuntu"
memory = 256
disk = ['file:PATH/ubuntu.img,xvda,w']
vif = ['bridge=BRIDGE']
kernel = "PATH/vmlinuz"
ramdisk = "PATH/initrd.gz"
Change ''PATH'' to the path where the VM files are located and ''BRIDGE'' to the name of the network bridge you are going to use. After this we can start the VM:
$ sudo xm create ubuntu.xen
To connect to the VM console and proceed with the installation you can use xm console command:
$ sudo xm console ubuntu
Use the menus to configure your VM. Make sure that you configure the network correctly as this installation will use it to download packages.
After the installation is done it will reboot again into the installation. You can exit the console pressing ''+<]>''. Now you should shutdown the machine:
$ sudo xm shutdown ubuntu
The system is now installed in the disk image and now we must start it to configure it so it plays nice with OpenNebula. The configuratio we are going to do is:
* Disable udev network generation rules and clean any that could be saved
* Add contextualization scripts
To start the VM we will need a new xen description file:
name = "ubuntu1204"
memory = 512
disk = ['file:PATH/ubuntu.img,xvda,w']
vif = ['bridge=BRIDGE']
bootloader = "pygrub"
It is pretty similar to the other one but notice that we no longer specify kernel nor initrd and we also add the bootloader option. This will make out VM use the kernel and initrd that reside inside out VM image.
We can start it using the same command as before:
$ sudo xm create ubuntu-new.xen
And the console also works the same as before:
$ sudo xm console ubuntu
We log and become ''root''. To disable udev network rule generation we should edit the file ''/lib/udev/rules.d/75-persistent-net-generator.rules'' and comment the line that says:
DRIVERS=="?*", IMPORT{program}="write_net_rules"
Now to make sure that no network rules are saved we can empty the rules file:
# echo '' > /etc/udev/rules.d/70-persistent-net.rules
Copy the file located at https://github.com/OpenNebula/one/blob/master/share/scripts/ubuntu/net-vmcontext/vmcontext to ''/etc/init.d'' and give it write permissions. This is the script that will contextualize the VM on start.
Now we modify the file ''/etc/init/networking.conf'' and change the line:
pre-start exec mkdir -p /run/network
by
pre-start script
mkdir -p /run/network
/etc/init.d/vmcontext
end script
and also in ''/etc/init/network-interface.conf'' we add the line:
/etc/init.d/vmcontext
so it looks similar to:
pre-start script
/etc/init.d/vmcontext
if [ "$INTERFACE" = lo ]; then
# bring this up even if /etc/network/interfaces is broken
ifconfig lo 127.0.0.1 up || true
initctl emit -n net-device-up \
IFACE=lo LOGICAL=lo ADDRFAM=inet METHOD=loopback || true
fi
mkdir -p /run/network
exec ifup --allow auto $INTERFACE
end script