Xen Dom0: Difference between revisions
(network tips) |
m (→Installation: update wikilink.) |
||
(26 intermediate revisions by 14 users not shown) | |||
Line 1: | Line 1: | ||
This guide will show you how to set up your 'sys' install of Alpine as a Xen Dom0. You can start from either an existing standard install or install a new copy of Alpine with the Alpine Xen ISO. | |||
== Install Xen == | |||
=== New installation === | |||
==== Writing the medium ==== | |||
{{Warning|This will erase '''everything''' on the drive you point it at. Check and double check that <code>/dev/sdx</code> is the correct USB device you want to write to, using the commands <code>lsblk</code> and <code>blkid</code>.}} | |||
First, download Alpine's [https://www.alpinelinux.org/downloads/ Xen install ISO], and either [[Burning ISOs|burn the ISO to a CD/DVD]] or write it to a USB storage device with the following command, where <code>3.12.0</code> should be replaced with the release number of your downloaded ISO. Replace <code>/dev/sdx</code> with the drive letter of your USB device: | |||
<pre>dd if=alpine-xen-3.12.0-x86_64.iso of=/dev/sdx</pre> | |||
{{ | ==== Installation ==== | ||
Boot from your CD or USB device, and type 'root' when prompted for a username. After you have logged in, run <code>setup-xen-dom0</code>, then continue with a standard Alpine [[installation]] until you get to the prompt asking to choose your network card. | |||
Select what will become your internet-facing interface, and when asked to bridge it type 'yes'. Then you can configure the networking settings of your bridge device, <code>br0</code>, as you would have configured your internet-facing interface. | |||
{{Note|You cannot bridge a WiFi interface in the automatic installation script due to incompatible protocols. Make sure you pick an ethernet interface for this.}} | |||
Continue with your installation to disk until you reach the 'reboot' prompt. There are a few more things to do before you can boot without errors: | |||
<pre> | |||
# xen-hypervisor isn't installed by default with Xen so we must install it manually | |||
apk add xen-hypervisor | |||
apk add bridge | |||
</pre> | |||
Now you can safely reboot after removing your install medium, making sure to pick the <code>Alpine Linux v3.12, with Xen 4.13.1 and Linux lts</code> boot option in your GRUB menu. Replace 3.12 and 4.13.1 with your Linux and Xen version numbers, respectively. | |||
After this, [[Repositories#Enabling_the_community_repository|enable the Alpine community repository]] and install the firmware to be used for Xen's virtual machines: | |||
<pre> | <pre> | ||
apk add seabios ovmf | |||
</pre> | |||
Now you are ready to configure GRUB. | |||
=== Existing installation === | |||
First you must [[Repositories#Enabling_the_community_repository|enable the Alpine community repository]], then install Xen and the seabios (BIOS) and ovmf (UEFI) firmwares for its virtual machines. | |||
<pre> | |||
# apk add xen xen-hypervisor seabios ovmf | |||
</pre> | </pre> | ||
xl | This will install Xen Hypervisor, xl cli command and all the required packages. The next step is to modify your GRUB configuration to properly boot Xen. | ||
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: | |||
<pre>echo "xen-netback" >> /etc/modules | |||
echo "xen-blkback" >> /etc/modules | |||
echo "tun" >> /etc/modules</pre> | |||
Then lastly we add the Xen daemons to the default runlevel. | |||
<pre>rc-update add xenconsoled | |||
rc-update add xendomains | |||
rc-update add xenqemu | |||
rc-update add xenstored</pre> | |||
Reboot. | |||
== GRUB configuration == | |||
Once running a Xen kernel, you will need to edit its command-line options and enable the setting of a default GRUB entry by inserting this at the bottom of <code>/etc/default/grub</code>: | |||
{{Cat|/etc/default/grub|<nowiki># You need to set the amount of RAM to allocate to the Dom0 Alpine install so that | |||
# our future virtual machines will have enough memory. | |||
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M,max:1024M" | |||
GRUB_DEFAULT="saved" | |||
GRUB_SAVEDEFAULT="true"</nowiki>}} | |||
You can replace 1024M with the amount of memory you want to allocate to your Dom0 operating system. | |||
After that, you need to run the following: | |||
<pre>grub-mkconfig -o /boot/grub/grub.cfg | |||
grub-set-default "$(grep ^menuentry /boot/grub/grub.cfg | grep Xen | cut -d \' -f 2 | head -1)" | |||
</pre> | |||
That sets the default entry in GRUB to the first entry containing 'Xen'. Run this every time you upgrade Alpine or Xen. | |||
== Loop Devices == | |||
If you plan to use more than 8 DomU's, you may need to increase the amount of loop-devices in your Dom0. | |||
In Alpine Linux, you will need to add the ''max_loop'' option to the ''loop'' module, then add the loop module to your initramfs. | |||
Start by populating <code>/etc/modprobe.d/loop.conf</code> with the module options: | |||
<pre> | |||
# touch /etc/modprobe.d/loop.conf | |||
# echo "options loop max_loop=32" > /etc/modprobe.d/loop.conf | |||
</pre> | |||
Update initramfs to reflect the module options: | |||
<pre> | |||
# mkinitfs | |||
# reboot | |||
</pre> | |||
== See also == | |||
* [[Xen Dom0 on USB or SD]] | |||
* [https://wiki.gentoo.org/wiki/Xen#Host_configuration_.28domain-0.29|Xen page on Gentoo wiki] | |||
[[Category:Virtualization]] | |||
Latest revision as of 09:04, 12 January 2024
This guide will show you how to set up your 'sys' install of Alpine as a Xen Dom0. You can start from either an existing standard install or install a new copy of Alpine with the Alpine Xen ISO.
Install Xen
New installation
Writing the medium
/dev/sdx
is the correct USB device you want to write to, using the commands lsblk
and blkid
.
First, download Alpine's Xen install ISO, and either burn the ISO to a CD/DVD or write it to a USB storage device with the following command, where 3.12.0
should be replaced with the release number of your downloaded ISO. Replace /dev/sdx
with the drive letter of your USB device:
dd if=alpine-xen-3.12.0-x86_64.iso of=/dev/sdx
Installation
Boot from your CD or USB device, and type 'root' when prompted for a username. After you have logged in, run setup-xen-dom0
, then continue with a standard Alpine installation until you get to the prompt asking to choose your network card.
Select what will become your internet-facing interface, and when asked to bridge it type 'yes'. Then you can configure the networking settings of your bridge device, br0
, as you would have configured your internet-facing interface.
Continue with your installation to disk until you reach the 'reboot' prompt. There are a few more things to do before you can boot without errors:
# xen-hypervisor isn't installed by default with Xen so we must install it manually apk add xen-hypervisor apk add bridge
Now you can safely reboot after removing your install medium, making sure to pick the Alpine Linux v3.12, with Xen 4.13.1 and Linux lts
boot option in your GRUB menu. Replace 3.12 and 4.13.1 with your Linux and Xen version numbers, respectively.
After this, enable the Alpine community repository and install the firmware to be used for Xen's virtual machines:
apk add seabios ovmf
Now you are ready to configure GRUB.
Existing installation
First you must enable the Alpine community repository, then install Xen and the seabios (BIOS) and ovmf (UEFI) firmwares for its virtual machines.
# apk add xen xen-hypervisor seabios ovmf
This will install Xen Hypervisor, xl cli command and all the required packages. The next step is to modify your GRUB configuration to properly boot Xen.
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 "tun" >> /etc/modules
Then lastly we add the Xen daemons to the default runlevel.
rc-update add xenconsoled rc-update add xendomains rc-update add xenqemu rc-update add xenstored
Reboot.
GRUB configuration
Once running a Xen kernel, you will need to edit its command-line options and enable the setting of a default GRUB entry by inserting this at the bottom of /etc/default/grub
:
Contents of /etc/default/grub
You can replace 1024M with the amount of memory you want to allocate to your Dom0 operating system. After that, you need to run the following:
grub-mkconfig -o /boot/grub/grub.cfg grub-set-default "$(grep ^menuentry /boot/grub/grub.cfg | grep Xen | cut -d \' -f 2 | head -1)"
That sets the default entry in GRUB to the first entry containing 'Xen'. Run this every time you upgrade Alpine or Xen.
Loop Devices
If you plan to use more than 8 DomU's, you may need to increase the amount of loop-devices in your Dom0.
In Alpine Linux, you will need to add the max_loop option to the loop module, then add the loop module to your initramfs.
Start by populating /etc/modprobe.d/loop.conf
with the module options:
# touch /etc/modprobe.d/loop.conf # echo "options loop max_loop=32" > /etc/modprobe.d/loop.conf
Update initramfs to reflect the module options:
# mkinitfs # reboot