Fedora Host Installation
This tutorial will cover the steps to get a working dom0 running on a Fedora system.
Fedora 16 is the first version of Fedora that comes with a kernel that supports a Xen dom0 out of the box since Fedora 8. This is a result of dom0 support being merged into the mainline kernel. As such, there are very few steps that have to be done to get a functional dom0. Some information about using a Fedora system as a virtualization host, coming directly from them, can be found here.
Base System Installation
For the most part, you can follow the Installation steps outlined in the official Fedora installation guides (here they are for F16 and for F17). If you're lazy, you probably may just look at the installation quick start guides (F16, F17).
For obtaining install media images, look here. If one happen to have a pxeboot enabled setup, images for starting an installation can be downloaded from here (for instance, for x86-64 version of Fedora 16):
The only portion you have to watch out is the disk partitioning section. If you're going to use file-backed domUs, you can safely ignore this step. However, if you're going to use LVM (or other block devices, like hard drive partitions)-backed domUs, you're probably going to partition your drive into /boot, and at least one or two volume groups, meaning that you'll be making a custom partitioning scheme. Have a look here for more details about this Host OS Install Considerations.
Some Post-Install Tasks
At this point, you should do whatever else you have to get the basic system up and running. Example tasks would be updating the system, and installing ntpd to automatically keep your dom0's time in sync. At a minimum, you should check that a network connection is available and functioning.
You should also disable SELinux if you're managing LVM storage manually, unless you want to relabel the created LVs. xl will complain that "the disk is not accessible" if you fail to do this and you're using LVs for storage.
Installing Xen Packages
Getting the Xen hypervisor is a simple matter - just run
yum install xen
as root. Yum will take care of downloading the dependencies and installing them for you automatically.
As part of the download, Yum will create a new grub2 boot menu. As such, don't panic if Yum seems to freeze at "Installing xen-hypervisor" for a while.
Once the installation is complete, you should reboot, and select Xen 4.x.x from the GRUB menu.
Disabling Network Manager
Networking gave a lot of trouble in Xen 3/4.0. However, starting from Xen 4.1, the default behavior is to let the dom0's network scripts (i.e., the ones that came with the distribution, not the ones that come with Xen) handle setting up a network bridge, and the new xl script will just attach the domU's network interface to the bridge.
Most likely, everything would just work, and you are all set for starting creating VMs, especially if you plan to use libvirt and/or VirtManager, e.g., with virt-install as described here or with VirtManager, as described here. That happens because libvirt configures bridging and connect all the new guests to it automatically.
However, if experiencing any issues with networking, or if you want to manually manage the network configuration, it might be wise to disable NetworkManager, and that requires manually editing a couple of config files. For Red Hat-based distros, the networking configuration is stored in /etc/sysconfig/network-scripts/. By default, NetworkManager is included in the default Fedora install. To disable it, do the following (as root):
systemctl disable NetworkManager.service || systemctl restart network.service
Also, make sure that the network service is kicked off automatically on subsequent restarts by running:
chkconfig network on
Next, create the configuration file for the bridge. The most common bridge name is br0, so let's stick to that (although other Xen documentation suggests using xenbr0 to make it obvious that the bridge is for Xen):
open the file in a text editor and put the following lines in it:
DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0 NM_CONTROLLED=no
Next, you need to find the configuration file for your existing network adaptor. It's most likely named ifcfg-eth0, though the part after the dash can and does change depending on your hardware. Once you know what config file you're using, open it, find the line
and change it to
. Also, do not forget to add the line
(or whatever you named your bridge) to that file.
Finally, run this:
systemctl restart network.service
and your network should be looking like below:
br0 Link encap:Ethernet HWaddr 00:07:E9:06:50:12 inet addr:192.168.1.122 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::207:e9ff:fe06:5012/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1858 errors:0 dropped:0 overruns:0 frame:0 TX packets:678 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:329223 (321.5 KiB) TX bytes:76663 (74.8 KiB)
In Fedora 16 there is a known bug that results in GRUB2 generating a number of boot entries for each Xen file that it finds in /boot. Unfortunately, it doesn't check if the file in question is a linked file, and results in generating a host of spurious entries. This is no longer the case with Fedora 17, where the bug is not present.
Now that Xen is installed, boot it and check it's working, e.g., by doing by running xl info from the command line. Your screen should then look like the below:
# xl info host : caesium release : 3.1.1-2.fc16.i686.PAE version : #1 SMP Mon Nov 14 15:57:20 UTC 2011 machine : i686 nr_cpus : 4 nr_nodes : 1 ...
If Xen's not working, you'll get something like:
libxl: error: libxl.c:56:libxl_ctx_init Is xenstore daemon running? failed to stat /var/run/xenstored.pid: No such file or directory cannot init xl context
By this point, your system should be set up to install domUs. You can install domUs with a variety of ways.
For beginners, Fedora has libvirt in its repositories, which makes installing VMs, especially Red Hat based distros (like Fedora/CentOS), extremely easy. You can refer to: