在 Ubuntu 上源碼安裝 Xen (可以參考)

這篇文章是在寫 在 Debian 上源碼安裝 Xen 的時候一起寫的,原本以爲 Ubuntu 和 Debian 很相似、差別不大,配置過程可以直接套用而不用大修改,試了才知道其實不是那麼簡單。Ubuntu 9.10 使用的是 grub 2.0,被證實一些 bug 會導致 Xen 不能在 grub 2.0 的引導下正常啓動,所以一種 workaround 的辦法就是刪除掉 grub 2.0,使用老版本的 grub. VPSee 不喜歡在服務器上使用 Ubuntu 的最新版本就是因爲 Ubuntu 更新速度太快,版本發行太頻繁,導致很多舊版本的問題還沒解決就要開始趕鴨子上架推新版本,對了,今天好像是 Ubuntu 10.04 LTS 的發行日。以下的操作記錄使用最新的 Xen 4.0.0 源代碼版本和 Ubuntu 9.10,這裏還有在 CentOS 下源碼安裝 Xen 的過程。如果你在 Ubuntu 10.04 上編譯安裝 Xen 4.0.1 可能會遇到 xend 啓動問題

安裝需要的軟件包

首先最小化安裝 Ubuntu,然後安裝編譯 Xen 和 Linux xen kernel 所需要的軟件包:

$ sudo apt-get install gcc g++ make patch libssl-dev bzip2 gettext \
zlib1g-dev python libncurses5-dev libjpeg62-dev libx11-dev \
libgcrypt11-dev pkg-config bridge-utils bcc bin86 libpci-dev \
libsdl-dev python-dev texinfo libc6-dev uuid-dev bison flex fakeroot \
build-essential crash kexec-tools makedumpfile  libncurses5 \
libncurses5-dev iasl gawk

$ sudo apt-get build-dep linux

安裝 Xen hypervisor 和 tools

到 http://www.xen.org/products/xen_source.html 下載最新的 Xen 源代碼,然後解開、編譯、安裝,標準的 Linux 軟件源碼安裝動作:

$ tar zxvf xen-4.0.0.tar.gz
$ cd xen-4.0.0/
$ make xen tools stubdom
$ sudo make install-xen install-tools install-stubdom

上面 make stubdom 的時候會從網上自動下載一些東西,所以如果是用代理上網的話需要在自己根目錄下的 .wgetrc 里加上代理服務器,以便 wget 能通過代理正常下載:

$ vi .wgetrc
http_proxy = http://proxy.vpsee.com:3128/
use_proxy = on

加入到自動啓動腳本中:

$ sudo update-rc.d xend defaults 20 21
$ sudo update-rc.d xendomains defaults 21 20

安裝 Xen 內核

下載 xen 內核,給內核打補丁:

$ cd
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.8.tar.bz2
$ tar -xjf linux-2.6.31.8.tar.bz2

$ wget http://gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.31-10.tar.bz2
$ mkdir xenpatch-2.6.31.8
$ cd xenpatch-2.6.31.8
$ tar -xjf ../xen-patches-2.6.31-10.tar.bz2
$ cd ..

$ cd linux-2.6.31.8
$ for i in `ls ../xenpatch-2.6.31.8/`; do patch -p1 < ../xenpatch-2.6.31.8/"$i"; done

配置內核,直接把系統已經存在的配置文件拷過來然後在此基礎上修改:

$ cp /boot/config-2.6.31-14-server .config
$ make menuconfig

Processor type and features --->
  [*] Enable Xen compatible kernel
Networking support --->
  Networking options --->
    <*> 802.1d Ethernet Bridging
Device Drivers --->
  XEN --->
    [*] Privileged Guest (domain 0)
     Backend driver support
       Block-device backend driver
       Block-device tap backend driver
       Block-device tap backend driver 2
       Network-device backend driver
       PCI-device backend driver
       SCSI backend driver
       USB backend driver
    <*> Block-device frontend driver
    <*> Network-device frontend driver
     SCSI frontend driver
     USB frontend driver
    <*> Framebuffer-device frontend driver
    <*>   Keyboard-device frontend driver
    [*] Disable serial port drivers
    <*> Export Xen attributes in sysfs
        Xen version compatibility (3.3.0 and later) --->
           3.3.0 and later

配置好內核參數以後,保存配置文件、退出配置界面就可以開始編譯 Linux 內核了:

$ make
$ sudo make install
$ sudo make modules_install
$ sudo update-initramfs -c -k 2.6.31.8
$ sudo depmod 2.6.31.8

如果 Xen 加了內核模塊的話加入 /etc/modules 文件以便啓動時候自動加載:

$ sudo vi /etc/modules
...
netbk
blkbk

Ubuntu 9.10 默認用的是 grub 2.0,被證實一些 bug 會導致 Xen 不能正常啓動,刪除 grub 2.0 換成老版本的 grub:

$ sudo apt-get purge grub-pc
$ sudo rm /boot/grub/*
$ sudo apt-get install grub
$ sudo grub-install --recheck /dev/sda
$ sudo update-grub
$ sudo vi /boot/grub/menu.lst

重新啓動系統,就應該可以進入 dom0 了:

$ sudo reboot

Troubleshooting

如果重新啓動系統能正常進入 dom0 但是執行 xm 命令時報錯:

$ sudo xm list
Error: Unable to connect to xend: No such file or directory. Is xend running?

檢查 Xen 日誌,發現 'Permission denied' 問題,這也是常見問題,是因爲 xen tools 和內核不搭配:

$ vi /var/log/xen/xend.log
...
[2010-04-16 11:55:57 2320] INFO (SrvDaemon:219) Xend exited with status 1.
[2010-04-16 13:56:04 13207] INFO (SrvDaemon:331) Xend Daemon started
[2010-04-16 13:56:04 13207] INFO (SrvDaemon:335) Xend changeset: unavailable.
[2010-04-16 13:56:04 13207] ERROR (SrvDaemon:347) Exception starting xend ((13, 'Permission denied'))
...

$ vi /var/log/xen/xend-debug.log
...
Xend started at Fri Apr 16 13:56:04 2010.
domctl operation failed -- need to rebuild the user-space tool set?
sysctl operation failed -- need to rebuild the user-space tool set?
Exception starting xend: (13, 'Permission denied')
...

所以解決辦法就是下載對應的 xen 內核版本和 xen 工具。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章