Xen Dom0 on USB or SD

From Alpine Linux
Revision as of 12:53, 27 December 2011 by Roger.pau (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This guide will show you how to perform a Xen Dom0 install on a USB or SD card, so you can have your Dom0 running from tmpfs. This has some benefits, but you will need a place to store your guests (virtual machines) and a syslog server to redirect the logs to.

The first step is to set up a basic usb or SD install, to do this boot from the Alpine install CD (minimal is fine) and follow one of the following guides: Installing_Alpine_on_USB or Installing_Alpine_on_Compact_Flash. Once you finished installing Alpine Linux on your device, boot from it and configure your newly installed system:

Note: you might have to edit /etc/apk/repositories and change the first line so it points to /media/usb/apks

# setup-alpine
[...]
# apk update

Now you that you have your system properly configured, it's time to install Xen:

# apk add xen

Now we have Xen installed, but we will need to modify the usb bootloader in order to load the Xen kernel. The first step is to remount /media/usb with write permissions:

# mount -o remount,rw /media/usb

Then, copy the Xen kernel and mboot.c32 to the usb boot partition:

# cp /boot/xen-4.1.gz /media/usb/boot/
# cp /boot/mboot.c32 /media/usb/boot/

Now we have all the necessary files to boot Xen from the usb, it's time to change the bootloader and add a Xen entry, to do so open /media/usb/syslinux.cfg with your favorite editor and add one of the following entries:

Normal boot:

LABEL xen
  MENU LABEL Xen
  KERNEL /boot/mboot.c32
  APPEND /boot/xen-4.1.gz --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs pax_nouderef --- /boot/grsec.gz

Serial console boot:

LABEL xen
  MENU LABEL Xen
  KERNEL /boot/mboot.c32
  APPEND /boot/xen-4.1.gz com1=115200,8n1 console=com1 --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs pax_nouderef --- /boot/grsec.gz

Change the UUID to the correct one, and add the necessary modules for your system. It's also a good idea to check Xen Boot options and set dom0_mem, dom0_vcpus_pin and dom0_max_vcpus at least.

The next step is to load the necessary kernel modules for Xen, we will add them to /etc/modules, so they will be loaded automatically on boot:

# echo "xen_netback" >> /etc/modules
# echo "xen_blkback" >> /etc/modules
# echo "xen_gntdev" >> /etc/modules
# echo "xen_evtchn" >> /etc/modules
# echo "evtchn" >> /etc/modules
# echo "gntdev" >> /etc/modules

The last step is to configure startup services, we will need udev and xencommons at least to be started on boot:

# rc-update add udev sysinit
# rc-update add udev-postmount
# rc-update add xencommons

If you need the xm toolstack, also add xend to startup services:

# rc-update add xend

Ok, now you have a fully functional Xen install, it's time to save your changes and boot into it.

# lbu commit
# reboot

Also remember to configure at least one network bridge following the Howto_Configure_a_Network_Bridge guide.