# git clone git://xenbits.xen.org/xen.git
# cd xen/
# ./configure
# make dist
# make install
安装 dom0 内核
下载最新的 Linux 内核源代码,配置 dom0 内核、编译、安装,注意 dom0 内核需要选择下面一些内核选项:
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.4.tar.xz
# tar xf linux-3.15.4.tar.xz
# cd linux-3.15.4/
# make menuconfig
# vi .config
...
CONFIG_X86_IO_APIC=y
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y (optional)
CONFIG_XEN_DOM0=y
CONFIG_PCI_XEN=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
...
# make
# make modules
# make modules_install
# make install
配置 Grub
配置 grub2,加上带 Xen 的 Linux dom0 内核:
# grub2-mkconfig -o /etc/grub2.cfg
# vi /etc/grub2.cfg
# vi /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'CentOS Linux, with Linux 3.15.4 Xen' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.15.4-advanced-aa64a6a3-518e-4a7c-9e88-2f3f33c8c700' {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 6bc61a5c-12e3-4711-9532-61760367e0dc
else
search --no-floppy --fs-uuid --set=root 6bc61a5c-12e3-4711-9532-61760367e0dc
fi
multiboot /xen.gz
module /vmlinuz-3.15.4 root=UUID=aa64a6a3-518e-4a7c-9e88-2f3f33c8c700 ro rd.lvm.lv=cl/root vconsole.font=latarcyrheb-sun16 crashkernel=auto vconsole.keymap=us rd.lvm.lv=cl/swap rhgb quiet
module /initramfs-3.15.4.img
}
# grub2-mkconfig -o /etc/grub2.cfg
可能出现的错误和解决办法
重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了:
# xl info
xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error
libxl: error: libxl.c:99:libxl_ctx_alloc: cannot open libxc handle: No such file or directory
cannot init xl context
# /etc/init.d/xencommons start
Starting C xenstored...
Setting domain 0 name and domid...
Starting xenconsoled...
Starting QEMU as disk backend for dom0
# xl list
Name ID Mem VCPUsStateTime(s)
Domain-0 0 3779 4 r----- 105.5