首先准备好两个源代码包:xen-3.2.0.tar.gzlinux-2.6.18-xen.hg.gz,可从http://xen.org上下载。

使用tar xzvf xen3.2.0.tar.gz命令解压xen.3.2.0.tar.gzFedora 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 mercurialyum 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目录(200M),其实就是我们准备好的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 cleanmake kdeletemake dist这三个命令的集合。前两个命令主要用作编译操作的回滚,而负责安装工作的就是make dist这个命令。

解压linux-2.6.18-xen.hg.gz后,将linux-2.6.18-xen.hg这个文件夹拷贝到xen3.2.0目录下,如果编译前没修改任何配置文件的话,不推荐使用make world这个命令。因为使用make world命令后,make cleanmake kdelete会将拷贝进来的linux-2.6.18-xen.hg文件夹删除,并在编译时再从国外服务器上重新下载这个200M的文件夹,将极大地影响编译的效率。所以,要么使用make代替make world进行编译,要么修改Makefile$MAKE clean$MAKE kdelete 注释掉。

我使用make命令进行编译,然后使用make install进行安装。

安装成功后没有successful提示,但安装不成功会有错误提示。如果没有任何错误提示(警告提示是正常的),说明已经安装成功了。Xen安装成功后会生成/etc/xen目录,/lib/modules下会多一个xen相关的目录,/boot目录下也会多几个像xen-3.2.0.gzvmlinuz的文件,也可以检查并确认一下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文件写错了的话就会进不去,并对你进行一定的提示后退出。