读书人

CentOS 源码编译装配 Xen 的过程

发布时间: 2012-06-27 14:20:09 作者: rapoo

CentOS 源码编译安装 Xen 的过程

CentOS 源码编译安装 Xen 的过程

?

1、版本说明

?

操作系统centos5.4 内核:linux2.6.18

?

xen操作系统内核:linux-2.6.38.2

?

xen版本:xen-4.1.2.tar.gz

?

xen-patches版本:xen-patches-2.6.38-2

?

2、安装需要的软件包

?

(以下操作目录在/root目录下,理论上目录应该没有影响)

首先最小化安装 CentOS,然后安装编译 Xen 和 Linux xen kernel 所需要的软件包:

# yum groupinstall "Development Tools"# yum install hmaccalc ncurses-devel zlib-devel openssl-devel python-devel \bridge-utils  libtool-ltdl iasl xorg-x11-drv-evdev xorg-x11-drv-fbdev \xorg-x11-drv-i810-devel xorg-x11-drv-via-devel xorg-x11-proto-devel \xorg-x11-server-sdk xorg-x11-xtrans-devel

?

?

3、安装 Xen hypervisor 和 tools

?

到 http://www.xen.org/products/xen_source.html 下载最新的 Xen 源代码,然后解开、编译、安装,标准的 Linux 软件源码安装动作:

$ tar zxvf xen-4.1.2.tar.gz$ cd xen-4.1.2/$ make xen tools stubdom# make install-xen install-tools install-stubdom

?

?

上面 make stubdom 的时候会从网上自动下载一些东西,所以如果是用代理上网的话需要在自己根目录下的 .wgetrc 里加上代理服务器,以便 wget 能通过代理正常下载:

$ vi .wgetrchttp_proxy = http://proxy.vpsee.com:3128/use_proxy = on

?

?

加入到启动脚本:

# /sbin/chkconfig --add xend# /sbin/chkconfig --add xendomains# /sbin/chkconfig xend on# /sbin/chkconfig xendomains on

?

4、安装 Xen 内核

?

下载 Linux 内核(linux-2.6.38.2.tar.bz2)放到/root目录下

?

下载相应 Linux 内核xen补丁(xen-patches-2.6.38-2.tar.bz2)放到/root目录下

给 Linux 内核打 xen 补丁:

$ tar -xjf linux-2.6.38.2.tar.bz2$ mkdir xen-patches-2.6.38-2$ cd xen-patches-2.6.38-2$ tar -xjf ../xen-patches-2.6.38-2.tar.bz2$ cd ..$ cd linux-2.6.38.2$ for i in `ls ../xen-patches-2.6.38-2/`; \do patch -p1 < ../xen-patches-2.6.38-2/"$i"; done

?

?

5、配置带 xen 的 Linux 内核(此步骤最为关键):

?

$ make menuconfigGeneral setup? ---> ? [*] enable deprecated sysfs features to support old userspace tools??[*]?? enabled deprecated sysfs features by default
(上面的项目必须选中,(作用是修改".config"配置文件中的“#CONFIG_SYSFS_DEPRECATED_V2 is not set”项一行修改为“CONFIG_SYSFS_DEPRECATED_V2=y”),否则编译完成后启动时会出现以下错误,导致启动失败:Mounting root filesystem.mount: could not find filesystem ‘/dev/root’Setting up other filesystems.Setting up new root fssetuproot: moving /dev failed: No such file or directoryno fstab.sys, mounting internal defaultssetuproot: error mounting /proc: No such file or directorySwitching to new root and running init.unmounting old /devunmounting old /procunmounting old /sysswitchroot: mount failed: No such file or directoryKernel panic  not syncing: Attempted to kill init!)
Processor type and features --->?[*] Enable Xen compatible kernelNetworking support --->?Networking options --->??<M> 802.1d Ethernet Bridging(该版本中只能有M选项,而无*选项)Device Drivers --->?XEN --->??[*] Privileged Guest (domain 0)??<*> Backend driver support?????? ?<*> Block-device backend driver?????? ?<*> Block-device tap backend driver?????? ?< > Block-device tap backend driver 2??(编译内核时发现Block-device tap backend driver 2项不可选择,否则在make阶段会出现以下错误,原因还未知??drivers/xen/blktap2/built-in.o:(.text+0x3bc3): first defined here ??make[2]: *** [drivers/xen/built-in.o] Error 1 ??make[1]: *** [drivers/xen] Error 2 ??make: *** [drivers] Error 2)?????? ?<*> Network-device backend driver?????? ?<*> PCI-device backend driver?????? ?<M> SCSI backend driver(该版本中只能有M选项,而无*选项)?????? ?<*> USB backend driver??? ??  <*> Block-device frontend driver??? ?  ?<*> Network-device frontend driver?????? ?<M> SCSI frontend driver(该版本中只能有M选项,而无*选项)?????? ?<*> USB frontend driver??? ??  <*> Framebuffer-device frontend driver??? ??  <*> Keyboard-device frontend driver??? ??   [*] Disable serial port drivers??? ??  <*> Export Xen attributes in sysfs??????? ?Xen version compatibility (3.3.0 and later) --->?????????? ??3.3.0 and later
注意:如果使用32位系统,则务必将PAE功能开启,将内存支持选择为64GB,否则会重启后内核将会报错。Processor type and features --->?High Memory Support (4GB) --->??64GB

?

?

6、配置好内核参数以后,保存并退出,开始编译 Linux 内核:

?

$ make$ make modules# make modules_install# make install# /sbin/depmod 2.6.38.2

?

?

7、更新 grub,改为如下代码:

#  vi /boot/grub/menu.lst...title CentOS (2.6.38.2-xen)??????? root (hd0,0)??????? kernel /xen-4.1.2.gz??????? module /vmlinuz-2.6.38.2 ro root=/dev/VolGroup00/LogVol00??????? module /initrd-2.6.38.2.img...

?

?

8、重启系统,确认 Xen 安装成功:

?

# reboot# uname -aLinux centos-test74 2.6.38.2 #1 SMP Fri Nov 4 22:05:17 CST 2011 x86_64 x86_64 x86_64 GNU/Linuxx86_64 GNU/Linux# xm listName                                        ID   Mem VCPUs      State   Time(s)Domain-0                                     0  3713     4     r-----     36.0

?

(若xm list后出现如下代码:Error: Unable to connect to xend: Connection refused. Is xend running?

需要查看一下日志/var/log/xen/xend.log,如果没有问题,则手动启动一下xend

命令如下:

/etc/init.d/xencommons start

/etc/init.d/xend start

小插曲:xend start 之后,出现bridge类错误,当时没有在意,没想到在创建虚拟机的时候报错了“Device 0 (vif) could not be connected. Hotplug scripts not working”,最后发现编译内核时<M> 802.1d Ethernet Bridging是M选项,linux启动的时候没有默认将此模块加载,因此,用命令modprobe bridge将bridge模块加载上,用命令service xend restart重新启动xend,提示信息为“Nothing to flush”,说明xend启动成功

)?

读书人网 >操作系统

热点推荐