之前一直使用的都是CentOS 6,但现在要把项目的程序移植到机房的机器上运行了,但机房安装的是我不熟悉的Ubuntu,所以没办法只能在Ubuntu上重新安装一次Xen了,这篇文章主要记录了我安装的过程,以便以后需要时查阅。
在Ubuntu上源码编译安装Xen其实跟在CentOS上没有很大的区别,就是依赖包可能有所不同,这里CentOS 6源码编译安装Xen4.6可以作为参考。
编译一个 Xen 内核和编译一个普通 Linux 内核没有什么不同,如果发现编译后的内核启动不了,出现 kernel panic 的情况,多半是内核与机器的硬件没有配置好的原因,和 Xen 没有关系。
本文使用的环境是:Ubuntu14 + linux-4.4.0-31内核 + xen-4.6.3
安装需要的软件包
安装编译 Xen 所需要的编译器、工具、软件库等:
sudo apt-get install gcc make binutils zlib1g-dev python-dev
sudo apt-get install libncurses5-dev libcurl4-openssl-dev libx11-dev
sudo apt-get install uuid-dev libyajl-dev libaio-dev libglib2.0-dev libpixman-1-dev
sudo apt-get install pkg-config bridge-utils iproute udev bison flex gettext
sudo apt-get install bin86 bcc iasl ocaml-nox ocaml-findlib cmake markdown figlet git libc6-dev-i386
sudo apt-get install texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra
sudo apt-get install texlive-fonts-recommended pciutils-dev mercurial
安装Xen
到Xen官网下载相应的源码包后编译、安装:
# tar zxvf xen-4.6.3.tar.gz
# cd xen-4.6.3
# ./configure --libdir=/usr/lib
# make -j4 dist
# make install
注意,关于./configure如果不加路径Xen 相关的软件库是默认安装到 /usr/local/lib 目录,Ubuntu系统可能找不到,当然也可以在安装完成后在 /etc/ld.so.conf 文件中添加库的搜索路径或者是链接到/usr/lib路径。
安装 dom0 内核
这一步其实就是安装一个支持Xen的内核,在安装Xen之前或者之后进行都可以,但因为要配置内核以支持Xen,所以应该只能通过编译的方式来安装内核了吧。下载相应的 Linux 内核源代码(从内核 2.6.39+ 开始 Linux 内核全面、正式的支持 Xen,但是一些必须的backend模块,直到linux3.0才加进来,也就是说3.0后的linux kernel对xen的支持才比较完美),配置 dom0 内核、编译、安装:
# tar xf linux-3.16.49.tar.xz
# cd linux-3.16.49
配置内核,直接把系统已经存在的配置文件拷过来然后在此基础上修改:
# cp /boot/config-4.4.0-31-generic .config
# make menuconfig
1,进入 Processor type and features --->[*] Linux guest support
选择下面这些选项:
2,进入Device Drivers ---> Block devices ---> <*> Xen virtual block device support
<*> Xen block-device backend driver
3、 Device Drivers --->Xen driver support 把下面的都选上
4, Device Drivers ---> Network device support ---> <*> Xen network device frontend driver
<*> Xen backend network device
注意:
有的机器可能会遇到Device Drivers —> Xen driver support这个选项失踪的问题,这跟机器架构与系统配置有关,必须得打开处理器支持虚拟化的功能(进入BOIS),但有些机器太老可能没有这个功能。
然后是编译安装:
# make -j 4
# make modules
# make modules_install
# make install
配置grub
配置 grub2,默认启动带有 Xen 的 Linux dom0 内核,注意Ubuntu使用的是grub2,先更新grub:
# update-grub
找到带有Xen内核的是在第几个启动项:
root@ye:/home/ye# cd /etc/grub.d/
root@ye:/etc/grub.d# ls
00_header 05_debian_theme 10_linux 20_linux_xen 20_memtest86+ 30_os-prober 30_uefi-firmware 40_custom 41_custom README
我的是在第三个,也可以到/boot/grub/grub.cfg中查看:
# vi /boot/grub/grub.cfg
修改/etc/default/grub中的默认启动项为2:
root@ye:/etc/grub.d# cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=2
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
更改后最好再更新一次grub
# update-grub
重启,设置为自动加载Xen服务:
# update-rc.d xencommons defaults 19 18
# update-rc.d xendomains defaults 21 20
# update-rc.d xen-watchdog defaults 22 23
然后,即可看到dom 0
root@ye:/home/ye# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1724 4 r----- 18.8