首先准备好两个源代码包:xen-3.2.0.tar.gz和linux-2.6.18-xen.hg.gz,可从http://xen.org上下载。
使用tar xzvf xen3.2.0.tar.gz命令解压xen.3.2.0.tar.gz到Fedora 10系统目录(可以为任一目录,我将其解压在/home/evangelionyu目录)。
打开README文件可以查看安装Xen前必须安装的软件包:
* GCC v3.4 or later
* GNU Make
* GNU Binutils
* Development install of zlib (e.g., zlib -dev)
* Development install of Python v2.3 or later (e.g., python-dev)
* Development install of curses (e.g., libncurses -dev)
* Development install of openssl (e.g., openssl -dev)
* Development install of x11 (e.g. xorg-x11-dev)
* bridge-utils package (/sbin/brctl )
* iproute package (/sbin/ip )
* hotplug or udev
进入xen3.2.0/tools/check目录,运行./chk build命令,可查看目前这些必需的软件包的安装状态。可运行./chk install进行安装,也可使用yum install命令对那些必需软件进行在线安装,如:
yum install gcc
yum install binutils
yum install zlib-devel
yum install python-devel
yum install ncurses-devel
yum install openssl-devel
yum install libX11-devel
yum install bridge-utils
yum install iproute
yum install udev
由于安装过程可能需要联网,所以最好使用yum install mercurial或yum install hg命令使得hg可用。
最后./chk build全部OK后才能进入下一步安装。
从学长的blog里学到以下知识:
如果网络条件足够好,并可以顺利从国外网站上下载东西,不需要修改配置文件即可进行安装;如果网络条件不够好,则需要修改xen3.3.1目录下的Makefile文件和buildconfigs目录下的src.hg-clone文件。因为当安装stubdom时需要从国外服务器上下载文件,而stubdom是从xen3.3引入的,并不是必需的,故可以Makefile文件里将stubdom相关的代码注释掉;而在编译过程中默认会从国外服务器上使用hg clone一个linux-2.6.18-xen.hg目录(200多M),其实就是我们准备好的linux-2.6.18-xen.hg.gz,可对src.hg-clone文件的一些hg代码进行删除。
改过的clone文件:
# Mercurial
HG ?= hg
LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen.hg
# Repository to clone.
XEN_LINUX_HGREPO ?= $$(sh buildconfigs/select-repository $(LINUX_SRCDIR) $(LINUX_SRC_PATH))
# Set XEN_LINUX_HGREV to update to a particlar revision.
XEN_LINUX_HGREV ?= tip
$(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)
set -e ; \
touch $@
其中要删除的就是
set -e ; \
{....
}
touch $@
中间....的部分。
但是大家要注意,我自己的Xen在第一遍装的时候也有很多的问题,当时没有解决,看了学长的blog以后原封不动的改了该改的地方,但是我后来才注意到这一句,我自己当时也没有试过,而是直接将clone文件内的东西删掉了,没有任何的问题,如果大家有兴趣的话可以自己试试看。看看Xen3.2.0会不会出问题哦。
在编译之前介绍一下make world这个命令。进入Makefile可以发现,其实make world就是make clean、make kdelete和make dist这三个命令的集合。前两个命令主要用作编译操作的回滚,而负责安装工作的就是make dist这个命令。
解压linux-2.6.18-xen.hg.gz后,将linux-2.6.18-xen.hg这个文件夹拷贝到xen3.2.0目录下,如果编译前没修改任何配置文件的话,不推荐使用make world这个命令。因为使用make world命令后,make clean和make kdelete会将拷贝进来的linux-2.6.18-xen.hg文件夹删除,并在编译时再从国外服务器上重新下载这个200多M的文件夹,将极大地影响编译的效率。所以,要么使用make代替make world进行编译,要么修改Makefile将$MAKE clean和$MAKE kdelete 注释掉。
我使用make命令进行编译,然后使用make install进行安装。
安装成功后没有successful提示,但安装不成功会有错误提示。如果没有任何错误提示(警告提示是正常的),说明已经安装成功了。Xen安装成功后会生成/etc/xen目录,/lib/modules下会多一个xen相关的目录,/boot目录下也会多几个像xen-3.2.0.gz、vmlinuz的文件,也可以检查并确认一下Xen的安装状态。
接下来在boot目录下使用mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18.8-xen.img 2.6.18.8-xen命令生成initrd-2.6.18.8-xen.img镜像文件。
最后修改grub配置文件(/boot/grub/menu.lst或/boot/grub/grub.conf文件,我自己的是改的menu.list):
default=1
timeout=5
splashp_w_picpath=(hd0,6)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.27.5-117.fc10.x86_64)
root (hd0,6)
kernel /vmlinuz-2.6.27.5-117.fc10.x86_64 ro root=UUID=65c39194-6db8-467f-b1dd-40c2d19bd484 rhgb quiet
initrd /initrd-2.6.27.5-117.fc10.x86_64.img
title Other
rootnoverify (hd0,0)
chainloader +1
title Xen 3.2.0
root (hd0,6)
kernel /xen-3.2.0.gz console=vga
module /vmlinuz-2.6.18.8-xen ro console=tty0
module /initrd-2.6.18.8-xen.img
前两个title是已有的,后面那个Xen3.2.0是仿照Fedora来写的,要说明的是,如果在kernel还有initrd这一项有的人的是root/vmliuz-2.6.27.5......这样的话,那么你的Xen3.2.0里面的参数也要带root。
重启,进入grub后选择Xen 3.2.0,这时你就可以体验Xen并感受虚拟化的魅力了。
如果你的grub文件写错了的话就会进不去,并对你进行一定的提示后退出。