經過一天的折騰,總算把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。。。