Difference between revisions of "Xen Dom0 on USB or SD"

From Alpine Linux
Jump to: navigation, search
 
(20 intermediate revisions by 10 users not shown)
Line 1: Line 1:
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.
+
This guide will show you how to perform a Xen Dom0 install on a USB device 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:
+
The first step is to set up a basic usb or SD install. To do that, boot from the Alpine install CD (minimal is fine) and follow one of the following guides:<BR>[[Create a Bootable USB]] or [[Create a Bootable Compact Flash]].
  
Note: you might have to edit /etc/apk/repositories and change the first line so it points to /media/usb/apks
+
Once you finish installing Alpine Linux on your device, boot from it and configure your newly installed system:
 +
 
 +
Set up the network interfaces and apk repositories:
  
 
<pre>
 
<pre>
# setup-alpine
+
# setup-interfaces
 +
# setup-apkrepos
 
[...]
 
[...]
 
# apk update
 
# apk update
 
</pre>
 
</pre>
  
Now you that you have your system properly configured, it's time to install Xen:
+
{{Note| you may need to edit /etc/apk/repositories and change the first line so it points to /media/usb/apks.}}
 +
 
 +
Now that you have your system properly configured, it's time to install Xen:
  
 
<pre>
 
<pre>
 +
# Should this not be apk add xen xen-hypervisor ?
 
# apk add xen
 
# apk add xen
 
</pre>
 
</pre>
  
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:
+
Now that we have Xen installed, we need to modify the usb [[Bootloaders|bootloader]] in order to load the Xen kernel. The first step is to remount /media/usb with write permissions:
  
 
<pre>
 
<pre>
Line 30: Line 36:
 
</pre>
 
</pre>
  
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:
+
Now that we have the necessary files to boot Xen from the usb device, it's time to change the bootloader and add a Xen entry.<BR>
 +
To do so, open /media/usb/syslinux.cfg with your favorite editor and add one of the following entries:
  
 
Normal boot:
 
Normal boot:
Line 36: Line 43:
 
LABEL xen
 
LABEL xen
 
   KERNEL /boot/mboot.c32
 
   KERNEL /boot/mboot.c32
   APPEND /boot/xen.gz --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs --- /boot/grsec.gz
+
   APPEND /boot/xen.gz --- /boot/vmlinuz-hardened alpine_dev=usbdisk:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-hardened --- /boot/initramfs-hardened
 
</pre>
 
</pre>
 +
 +
{{Note|<nowiki>you might have to use alpine_dev=UUID=XXXX-XXXX:vfat. UUID can be read using blkid.</nowiki>}}
 +
{{Note|<nowiki>alternatively, to use /media/UUID=XXX-XXXX instead of /media/usb, see /proc/mounts to detect where your usb/cf card is mounted.</nowiki>}}
  
 
Serial console boot:
 
Serial console boot:
 
<pre>
 
<pre>
 
LABEL xen
 
LABEL xen
  MENU LABEL Xen
 
 
   KERNEL /boot/mboot.c32
 
   KERNEL /boot/mboot.c32
   APPEND /boot/xen.gz com1=115200,8n1 console=com1 --- /boot/grsec alpine_dev=UUID=XXXX-XXXX:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/grsec.modloop.squashfs --- /boot/grsec.gz
+
   APPEND /boot/xen.gz com1=115200,8n1 console=com1 --- /boot/vmlinuz-hardened alpine_dev=usbdisk:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-hardened --- /boot/initramfs-hardened
 
</pre>
 
</pre>
  
Change the UUID to the correct one, and add the necessary modules for your system. It's also a good idea to check [http://wiki.xen.org/wiki/Xen_Hypervisor_Boot_Options Xen Boot options] and set dom0_mem, dom0_vcpus_pin and dom0_max_vcpus at least.
+
Change the UUID to the correct one, and add the necessary modules for your system.<BR>It's also a good idea to check [http://wiki.xen.org/wiki/Xen_Hypervisor_Boot_Options Xen Boot options] and set, dom0_mem, dom0_vcpus_pin and dom0_max_vcpus.
  
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:
+
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 at boot time:
  
 
<pre>
 
<pre>
 
# echo "xen_netback" >> /etc/modules
 
# echo "xen_netback" >> /etc/modules
 
# echo "xen_blkback" >> /etc/modules
 
# echo "xen_blkback" >> /etc/modules
 +
# echo "tun" >> /etc/modules
 
</pre>
 
</pre>
  
The last step is to configure startup services, we will need udev and xencommons at least to be started on boot:
+
The last step is to configure startup services. We will need udev and xencommons to start at boot time:
  
 
<pre>
 
<pre>
 
# rc-update add udev sysinit
 
# rc-update add udev sysinit
 
# rc-update add udev-postmount
 
# rc-update add udev-postmount
# rc-update add xencommons
+
# rc-update add xenstored
 +
# rc-update add xenconsoled
 
</pre>
 
</pre>
  
If you need the xm toolstack, also add xend to startup services:
+
Now you have a fully functional Xen install. It's time to save your changes and boot into it.
  
 
<pre>
 
<pre>
# rc-update add xend
+
# lbu commit
 +
# reboot
 
</pre>
 
</pre>
  
Ok, now you have a fully functional Xen install, it's time to save your changes and boot into it.
+
Remember to configure at least one network bridge. Follow the [[Bridge]] guide.
  
<pre>
+
== See also ==
# lbu commit
+
* [[Xen Dom0]]
# reboot
 
</pre>
 
  
Also remember to configure at least one network bridge following the [[Howto_Configure_a_Network_Bridge]] guide.
+
[[Category:Virtualization]]

Latest revision as of 11:42, 6 August 2021

This guide will show you how to perform a Xen Dom0 install on a USB device 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 that, boot from the Alpine install CD (minimal is fine) and follow one of the following guides:
Create a Bootable USB or Create a Bootable Compact Flash.

Once you finish installing Alpine Linux on your device, boot from it and configure your newly installed system:

Set up the network interfaces and apk repositories:

# setup-interfaces
# setup-apkrepos
[...]
# apk update
Note: you may need to edit /etc/apk/repositories and change the first line so it points to /media/usb/apks.

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

# Should this not be apk add xen xen-hypervisor ?
# apk add xen

Now that we have Xen installed, we 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.gz /media/usb/boot/
# cp /boot/mboot.c32 /media/usb/boot/

Now that we have the necessary files to boot Xen from the usb device, 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
  KERNEL /boot/mboot.c32
  APPEND /boot/xen.gz --- /boot/vmlinuz-hardened alpine_dev=usbdisk:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-hardened --- /boot/initramfs-hardened
Note: you might have to use alpine_dev=UUID=XXXX-XXXX:vfat. UUID can be read using blkid.
Note: alternatively, to use /media/UUID=XXX-XXXX instead of /media/usb, see /proc/mounts to detect where your usb/cf card is mounted.

Serial console boot:

LABEL xen
  KERNEL /boot/mboot.c32
  APPEND /boot/xen.gz com1=115200,8n1 console=com1 --- /boot/vmlinuz-hardened alpine_dev=usbdisk:vfat modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-hardened --- /boot/initramfs-hardened

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.

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 at boot time:

# echo "xen_netback" >> /etc/modules
# echo "xen_blkback" >> /etc/modules
# echo "tun" >> /etc/modules

The last step is to configure startup services. We will need udev and xencommons to start at boot time:

# rc-update add udev sysinit
# rc-update add udev-postmount
# rc-update add xenstored
# rc-update add xenconsoled

Now you have a fully functional Xen install. It's time to save your changes and boot into it.

# lbu commit
# reboot

Remember to configure at least one network bridge. Follow the Bridge guide.

See also