csatblogspotdotcom

Monday, February 2, 2009

xen-3.3.1的安装

经过千辛万苦,今天终于把xen-3.3.1安装上去了,现在俺想记录下俺的安装新的。
从xen-3.2开始,内核安装过程按照默认配置就有联网的操作(xen-3.1和以前的就不一样,只需把2.6.18.8的内核的bz2包拷贝到xen-3.1.0/ 文件夹下就可以了;),曾经尝试过改配置,让其从本地读取未修改的内核源码文件,但编译未通过,后来按照网上的某个方法编译通过了,结果把服务器搞挂了,现在想起来,估计是没有把内核文件放到正确的位置,当然也有可能是其他原因。于是最后不得不放弃,从而改用默认的配置。
由于网络原因,网速太慢以至于连不上xen的网站,安装过程中的联网操作无法完成,于是只能想办法用代理解决,后来用ssh的隧道+tsocks解决掉了这个问题,直接手动把hg的内容下载下来了:
hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg
但今天试了下好像又不行了,估计是那边的管理员发现他们的服务器流量异常,于是不让访问xen的网站了
幸好把linux-2.6.18-xen.hg保存下来了,下次操作时,只需更新一下新增的内容就可以了(hg的pull操作,安装时自动的操作,自己不用管)。

以下是全过程:
首先,hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg
得到linux-2.6.18-xen.hg/ 文件夹;可以将之打包:
tar jcf linux-2.6.18-xen.hg.tar.bz2 linux-2.6.18-xen.hg
/usr/src/xen-3.3.1.tar.bz2
这样的话,再次安装时,只需下载新增的内容即可,速度快多了:解包:
tar jxf linux-2.6.18-xen.hg.tar.bz2

第二步,将xen-3.3.1的压缩包解压到同一级目录:
tar jxf xen-3.3.1.tar.bz2
注意:xen-3.3.1和linux-2.6.18-xen.hg是在同一级目录;
后记:解压后修改Makefile,去掉与stubdom有关的所有行,省得待会儿安装stubdom,既没用又花时间下载压缩包。

第三步,进入xen-3.3.1目录,配置一下:
make -j 8 prep-kernels
(或者 make linux-2.6-xen-config CONFIGMODE=menuconfig)
查看build-linux-2.6.18-xen_x86_64/.config文件,若
CONFIG_BLK_DEV_LOOP=
后面是 y 则将其改为 m

随后,make -j 8 install 就可以全部编译并安装了(install之前make uninstall一下也行)
注:
在这一步,发现还是有下载的操作,那些小文件倒是感觉不出来,而 xen-3.3.1/stubdom/ 中的newlib-1.16.0.tar.gz文件有12M,花费了20多分钟才下载完(10K左右的速度),看来下次安装时先把这几个待下载的文件尤其是newlib-1.16.0.tar.gz先放到相应目录,而后再安装。

接下来,做一个initrd文件放到/boot/ 下:
depmod 2.6.18.8-xen
mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18-8.xen.img 2.6.18.8-xen
mv initrd-2.6.18-8.xen.img /boot/

最后,修改 /boot/grub/menu.lst
俺的如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
#boot=/dev/sda
default=1
timeout=1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-8.el5.img

title Xen 3.3 / XenLinux 2.6
kernel /boot/xen-3.3.gz console=vga
module /boot/vmlinuz-2.6.18.8-xen root=LABEL=/ ro console=tty0
module /boot/initrd-2.6.18-8.xen.img

后记:由于想省去每次make prep-kernels的操作,于是make prep-kernels后就把xen-3.3.1文件夹拷贝到同一级目录下的xen-3.3.1-xen,进入xen-3.3.1-xen后,再make install,以前一直这样搞,没发现什么问题,今天删除xen-3.3.1后重新建xen-3.3.1文件夹,再拷贝到xen-3.3.1-xen,进入xen-3.3.1-xen编译出错,才发现编译后的vmlinuz跑到了xen-3.3.1里面!看来本来是想省时省力,没想到弄巧成拙。配置文件的某些路径仍然指向原来的路径。正确的方法应该是先拷贝一份“干净”的xen-3.3.1(未经配置的)到xen-3.3.1-xen,然后进入xen-3.3.1-xen,make prep-kernels,make install。


后记2:
xen-3.3.1的配置文件对vif可以这样配置:
vif = [ 'type=ioemu, bridge=eth1' ]
而在xen-3.1.0中如果用上这样的配置,那么虚拟机就启动不了,报错如下:
"xenconsole: Could not read tty from store: No such file or directory"
过一会字符界面会提示:
"Error: Device 0 (vif) could not be connected. Hotplug scripts not working."
如果按照xen-3.1.0的示例配置文件/etc/xen/xmexample.hvm,将配置改为:
vif = [ 'type=ioemu, bridge=xenbr0' ]
就可以正常启动了

后记3:
今天启动虚拟机时又碰到
Error: (12, 'Cannot allocate memory')
把eth1改为xenbr0后又出现
Error: Device 0 (vif) could not be connected. Could not find bridge device xenbr0
于是ifconfig了下,发现只有xenbr1,于是改为xenbr1后就正常了

Labels: ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home