[Xen] Ubuntu 10.04 x86 安装 Xen 4.1 和 dom0


经过一天的折腾,总算把xen 4.1和dom0安装成功了,本文主要介绍如何在Ubuntu 10.04 x86上安装xen 4.1和dom0,dom0分为源码安装和deb包安装两种方法。

首先安装Xen

1.安装依赖

sudo apt-get install bcc bin86 gawk bridge-utils iproute libcurl3 libcurl4-openssl-dev bzip2 module-init-tools
transfig tgif texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra 
texlive-fonts-recommended pciutils-dev mercurial build-essential make gcc libc6-dev zlib1g-dev python 
python-dev python-twisted libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev iasl libbz2-dev 
e2fslibs-dev git-core uuid-dev ocaml ocaml-findlib libx11-dev bison flex xz-utils gcc-multilib 
liblzma-dev lzma lzma-dev python-lzma -Vy

2.下载源码,解压,进入源码的目录

3.编译

make xen

make tools

make stubdom

4.安装

sudo make install-xen

sudo make install-tools PYTHON_PREFIX_ARG=

sudo make install-stubdom

大功告成,编译和安装xen都没有什么问题,照着指南一步一步做就行了。。。

 

接下来安装dom0,首先是源码安装

1.clone源码,进入目录

git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen cd linux-2.6-xen

说明:这里和参考文章有些不同,git clone下来的linux kernel查看分支时已经处于xen/stable-2.6.32.x状态,所以不需要reset HEAD和checkout,直接编译即可。

2.生成.config文件,编译安装内核

这里我选择了XenParavirtOps文章中提供的2.6.32.27的配置文件,进入内核目录执行以下命令

make oldconfig

make menuconfig (if you need to change something)

make bzImage

make modules

sudo make modules_install

 

sudo cp -a .config /boot/config-version

sudo cp -a System.map /boot/System.map-version

sudo cp -a arch/x86/boot/bzImage /boot/vmlinuz-version

sudo update-initramfs -c -k 2.6.32.40
3.更新grub
sudo gedit /etc/grub.c/40_custom,添加如下内容
menuentry "Xen 4.1 with pv_ops dom0 2.6.32.40" { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 17051bcf-3d83-422d-bede-b559db7095b6 multiboot /boot/xen.gz module /boot/vmlinuz-2.6.32.40 root=UUID=17051bcf-3d83-422d-bede-b559db7095b6 ro quiet splash module /boot/initrd.img-2.6.32.40 }
保存,更新grub.cfg,重启,问题又来了。。。
启动过程中出现错误“mount: mounting none on /dev failed: No such device”,不过顺利进来了,先暂时放在一边。

进入系统。Xen 4.1已经开始使用xl工具来管理虚拟机了,操作如下:
sudo /etc/init.d/xencommons start
sudo xl list

 

Name ID Mem VCPUs State Time(s) 
Domain-0 0 3583 4 r----- 336.0

接下来介绍利用包安装dom0的方式
需要去debian的官网下载linux-image-2.6.32-5-xen-686和linux-base (>= 2.6.32-31)两个deb包。这是最小依赖。
dpkg安装,这时/boot目录和/lib/modules/目录下就包含对应的启动项和模块了,最后更新grub,在/etc/grub.d/40_csutom添加如下内容:
menuentry "Xen 4.1 with Debian 6 kernel 2.6.32-5" { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 17051bcf-3d83-422d-bede-b559db7095b6 multiboot /boot/xen.gz module /boot/vmlinuz-2.6.32-5-xen-686 root=UUID=17051bcf-3d83-422d-bede-b559db7095b6 ro quiet splash module /boot/initrd.img-2.6.32-5-xen-686 }

更新grub,重启,进入系统,一切顺利,启动xencommons,出现如下错误“Starting xenstored...FATAL: Failed to open evtchn device: No such file or directory”,原来Debian包把xen-evtchn编译成了模块,所以需要先加载xen-evtchn

sudo modprobe xen-evtchn

好了xl又能用了,而且这个包比自己编译出来的内核小的多,70M左右,自己编的有500多M,显示效果跟裸机没什么区别,但是自己编的字体都变了形。。。

目前发现update-grub在这个内核中不能用,不知道为啥,慢慢研究。。

下一步,启动pv,安装vnc启动HVM。。。

相关内容