从 http://xen.org/download/ 上 载了xen-3.3.0.tar.gz和linux-2.6.18-xen-3.3.0.tar.gz,将xen-3.3.0.tar.gz放到/usr /xen3.3下解压,再把linux-2.6.18-xen-3.3.0.tar.gz放进xen-3.3.0目录下。
#cd xen-3.3.0
#make world
出现以下错误:
select-repository: Searching `.:..' for linux-2.6.18-xen.hg
select-repository: Ignoring `.'
Unable to determine path to Linux source tree.
Falling back to linux-2.6.18-xen Mercurial repository.
Cloning http://xenbits.xensource.com/linux-2.6.18-xen.hg to linux-2.6.18-xen.hg.
/bin/sh: line 8: hg: command not found
make[3]: *** [linux-2.6.18-xen.hg/.valid-src] Error 127
make[3]: Leaving directory `/root/xen/xen-3.3.0'
make[2]: *** [linux-2.6-xen-install] Error 2
make[2]: Leaving directory `/root/xen/xen-3.3.0'
make[1]: *** [install-kernels] Error 1
make[1]: Leaving directory `/root/xen/xen-3.3.0'
make: *** [world] Error 2
在网上找了半天又分析了半天,最后认为是缺少mercurial(版本控制软件)引起的。
下载 http://www.selenic.com/mercurial/release/mercurial-1.1.tar.gz ,放到/usr下
#tar xvzf mercurial-1.1.tar.gz
#cd mercurial-1.1
#make
#make install
简单安装完后,回到xen-3.3.0下,运行make world出现以下错误:
select-repository: Searching `.:..' for linux-2.6.18-xen.hg
select-repository: Ignoring `.'
Unable to determine path to Linux source tree.
Falling back to linux-2.6.18-xen Mercurial repository.
Cloning http://xenbits.xensource.com/linux-2.6.18-xen.hg to linux-2.6.18-xen.hg.
Traceback (most recent call last):
File "/usr/local/bin/hg",Line 11,in?
from mercurial import demandimport;demandimport.enable()
ImportError:No module named mercurial
make[3]: *** [linux-2.6.18-xen.hg/.valid-src] Error 1
make[3]: Leaving directory `/root/xen/xen-3.3.0'
make[2]: *** [linux-2.6-xen-install] Error 2
make[2]: Leaving directory `/root/xen/xen-3.3.0'
make[1]: *** [install-kernels] Error 1
make[1]: Leaving directory `/root/xen/xen-3.3.0'
make: *** [world] Error 2
查找原因,重新安装
#make local
#make install
#export PATH=/usr/mercurial-1.1:$PATH
运行#hg debuginstall检查,看到安装成功。
再回到xen-3.3.0目录下
#make world
最后出现
select-repository: Searching `.:..' for linux-2.6.18-xen.hg
select-repository: Ignoring `.'
Unable to determine path to Linux source tree.
Falling back to linux-2.6.18-xen Mercurial repository.
Cloning http://xenbits.xensource.com/linux-2.6.18-xen.hg to linux-2.6.18-xen.hg.
requesting all changes
adding changesets
adding manifests
adding fire changes
……
这一步做完就ok了。只是我是通过代理上的网,期间一直在担心网路的问题。因为“adding fire changes”这里比较慢,几次被我强行中断。后来单独用#hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg 试了一下,等了一阵发现能通过,就安心了。又重新运行make world,这次有耐心的等,终于突破了adding fire changes这道关卡。
可惜的是后面又出现问题了,
touch mk-headers-x86_32
wget -c ftp://source.redhat.com/pub/newlib/newlib-1.16.0.tar.gz
connecting to sources.redhat.com|209.132.176.174|:21…
因为我用的代理ftp是不通的,所以到这里就卡住了,但是又不能跳过去,狂ft,到这里make world已经运行1个半小时了。
想尽办法想搞定代理也没搞定,又想改掉ftp的解析端口,通过http的8088来访问,结果太复杂了,不知从何改起,改了几个地方也不行。向大师兄求救,他想在.mk文件里把这步屏蔽掉,但是可以运行一个多小时的.mk可以想象有多复杂。
自己研究了下错误提示,把下载newlib-1.16.0.tar.gz的文件夹定位在了/usr/xen3.3/xen-3.3.0/stubdom
在rhel中通过浏览器down了 ftp://source.redhat.com/pub/newlib/newlib-1.16.0.tar.gz (我以为down下来了,��~),放在该文件夹下,重新运行make world。希望它能跳过访问ftp这步。
等待运行到这里的时间里我们一直在努力找别的方法。等运行到这里的时候果真跳过了访问ftp的命令。不过新的问题来了:
touch mk-headers-x86_32
tar xzf newlib-1.16.0.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: 由于前面延迟的错误而退出
make[2]: *** [newlib-1.16.0] 错误 2
make[2]: Leaving directory `/usr/xen3.3/xen-3.3.0/stubdom'
make[1]: *** [install-stubdom] 错误 2
make[1]: Leaving directory `/usr/xen3.3/xen-3.3.0'
make: *** [world] 错误 2
检查了一下是newlib-1.16.0.tar.gz这个文件没下完,因为ftp不通,在rhel下下载是有问题。11m多的文件变成了200多k。狂ft。好在看到这步可以跳过去了,以为看到了曙光。
去windows里下了完整的newlib-1.16.0.tar.gz,拷到这边来,重新运行make world。又是一个多小时,我捱到实验室人都走光了,为了等运行结果,结果还是有错误,ft。因为已经十点了,只好匆匆回去,明天再继续吧。我恨gs!
之前的编译过程,最新的错误在编译到xen-3.3.0/stubdom文件夹下的时候。在网上看到有人说stubdom是3.3新加入的东西,删掉也不会影响使用(http://blog.sina.com.cn/s/blog_4698287d0100by2r.html)。于是按照他的方法修改了xen-3.3.0/Makefile,删掉.PHONY: install下的install-stubdom和.PHONY: dist下的dist-stubdom。再运行make world,果然通过了。
进入build-linux-2.6.18-xen_x86_32(我还一直以为实验室机器是64位的,直到看见生成这个文件夹,默……),
#make modules_install
#make install
这个过程都很顺利。
然后修改/boot/grub/menu.lst下自动生成的启动项:
title Red Hat Enterprise Linux Server (2.6.18.8-xen)
root (hd0,6)
kernel /vmlinuz-2.6.18.8-xen ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18.8-xen.img
为:
title Red Hat Enterprise Linux Server (2.6.18.8-xen)
root (hd0,6)
kernel /xen.gz
module /vmlinuz-2.6.18.8-xen ro root=LABEL=/ rhgb quiet
module /initrd-2.6.18.8-xen.img
重启,选择Red Hat Enterprise Linux Server (2.6.18.8-xen)。启动图形界面失败,进入命令行模式。运行xend start后,可运行xm list查看情况。算是装好了吧,撒花庆祝。