经过一天的折腾,总算把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。