« Xen初体验 | links for 2006-10-31 »
1. 在编译前,要安装如下的组件:
apt-get install iproute bridge-utils python-twisted gcc-3.3 binutils make zlib1g-dev python-dev transfig bzip2 screen ssh debootstrap libcurl3-dev libncurses5-dev x-dev
注: 在Xen的Readme中,明确提到使用GCC 3.3 系列来编译. 不知道用其它的版本会不会有问题?
2. 编译都很简单,把2.6.16.xx的Kernel代码放到xen.3.0.3 同一目录下面.然后进xen 3.0.3的目录,直接make world , make install (要求root权限).
此时编译生成生成的是2.6.16.xx-xen 这个内核,完成安装后,可以在 /lib/modules/中找到.
然后再 depmod 2.6.16.xx-xen 更新模块.
3. 使用mv /lib/tls /lib/tls.disable 来禁止tls. 不过奇怪的是,在我的Debian ( etch amd-64)上面,找不到这个tls…
4. 要想用刚刚生成的 2.6.16.xx-xen的新内核,得先创建initrd,然后再增加此kernel到grup的menu.list中.
mkinitrd.yaird -o /boot/initrd.img-2.6.16.29-xen 2.6.16.29-xen
title Xen 3.0.3 / XenLinux 2.6
root (hd0,0)
kernel /xen.gz dom0_mem=64000 module /vmlinuz-2.6-xen root=/dev/hda6 ro max_loop=255
module /initrd.img-2.6.16.29-xen
注意: root后面接机器实际的硬盘值(可能参考menu.list中其它item的值). dom0_mem后面接数字,此值表示分配多大的内存给Host os ,单位是kb.如果开机启动时发生了 Out of low memory错误,可以尝试把此值增加.比如到128MB.
5. 从Xen的介绍来看,应该是存在一个Xen0这样的内核–即传说中的Domain0,它对应的就是Host os.在以上的编译过程中,只是生成了xen这个内核,并没有生成这个xen0内核.
当然, 我们可以用以下的代码来生成:
make linux-2.6-xen0-config CONFIGMODE=menuconfig KERNELS=”linux-2.6-xen0″
make linux-2.6-xen0-build
make linux-2.6-xen0-install
depmod 2.6.16.29-xen0
生成后,对于这个新的xen0内核,就不必要生成initrd了.直接在grup的menu.list中加入以下的内容即可:
title Xen 3.0.3 / XenLinux 2.6
root (hd0,0) kernel /xen.gz dom0_mem=64000
module /vmlinuz-2.6-xen0 root=/dev/hda6 ro max_loop=255
注: 我也不是很明白这个xen0和最开始的xen内核的关系.反正用这两个内核启动,在xm list中都显示为domain0…btw,xen内核也可以通过类似的方式来重新build.
6. 然后就是用rcconf来把xend/xendomain设置为开机运行项目.
No Tags

Add a New Comment