Installing Xen on Fedora 20 as Domain-0

I ever introduced [[installing-xen-domain-0-on-fedora-17]] as the first try to use the xen package delivered from Fedora and get away from manually compiling Xen and patching the kernel. In this post, I introduce installing Xen Dom0 on Fedora 20.

Installing Xen

First, install the xen pacakges:

# yum install xen

The Linux kernel is already ready to run in Domain-0 with [[simple-introduction-to-paravirt_ops-for-xen|the pv_ops technology]] enabled.

Run grub2-mkconfig

Run this command to make config for grub2 again:

# grub2-mkconfig -o /boot/grub2/grub.cfg

Otherwise, the kernel may fail to boot.

Then, we can boot the Fedora to run on Xen as Domain-0 by selecting the Fedora, with Xen hypervisor in Grub2 during booting the system. We can also [[setting-default-entry-in-grub2-and-grub]].

After booting Linux on Xen as Domain-0, we can list the information by ‘xl info’ as follow to verify that Xen works.

# xl info
host                   : localhost
release                : 3.15.6-200.fc20.x86_64
version                : #1 SMP Fri Jul 18 02:36:27 UTC 2014
machine                : x86_64
nr_cpus                : 4
max_cpu_id             : 3
nr_nodes               : 1
cores_per_socket       : 2
threads_per_core       : 2
cpu_mhz                : 3392
hw_caps                : bfebfbff:2c100800:00000000:00007f00:77dafbbf:00000000:00000021:000027ab
virt_caps              :
total_memory           : 8064
free_memory            : 128
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 3
xen_extra              : .2
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p 
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : 
xen_commandline        : placeholder
cc_compiler            : gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7)
cc_compile_by          : mockbuild
cc_compile_domain      : [unknown]
cc_compile_date        : Fri Jun 20 21:32:24 UTC 2014
xend_config_format     : 4

Configuring the network

Here, we use bridged network.

NetworkManager does not work with bridge currently. To use bridge-based network for Xen. We should change the network management service from NetworkManager to network. The networking configuration is stored in ‘/etc/sysconfig/network-scripts/’.

First, disable NetworkManager and start network:

# systemctl disable NetworkManager.service && systemctl restart network.service

Make sure that the network service is automatically started by:

# chkconfig network on

Then, we can create the configuration file for the bridge. Let’s call the bridge ‘xenbr0’.

Edit ‘/etc/sysconfig/network-scripts/ifcfg-xenbr0’ (we assume dhcp here. You can also give the bridge a static IP as for the other network devices.):

DEVICE=xenbr0
TYPE=Bridge
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
BOOTPROTO=dhcp

Then find the configuration file for your existing network adapter (e.g. ifcfg-p2p1) and add this line.

BRIDGE=xenbr0

Also make sure that

NM_CONTROLLED=no

Finally, make the network configuration take effect by:

# systemctl restart network.service

One example Dom-U configuration file

I give one example Domain-U configuration file here as follows.

name="10.8.1.210"
vcpus=2
memory=2048
disk=['phy:/dev/vg_xen/vm-10.8.1.210,xvda,w']
vif=['bridge=xenbr0']
bootloader="/usr/bin/pygrub"
on_reboot="restart"
on_crash="restart"
# extra="single"

Most of the old ‘xm’ commands for Domain-U management work under ‘xl’ by just simply replacing ‘xm’ with ‘xl’.

Eric Ma

Eric is a systems guy. Eric is interested in building high-performance and scalable distributed systems and related technologies. The views or opinions expressed here are solely Eric's own and do not necessarily represent those of any third parties.

One comment:

Leave a Reply

Your email address will not be published. Required fields are marked *