星期四, 9月 22, 2011

在Xen FreeBSD guest安裝Xen tools

我在XenServer上安裝FreeBSD amd64的guest VM,先編譯HVM kernel再重開機。
~/> su -
# cd /usr/src
/usr/src# make buildkernel KERNCONF=XENHVM
/usr/src# make installkernel KERNCONF=XENHVM
/usr/src# reboot
重開機後會發現網路卡變成xn0,別忘了到 /etc/rc.conf 設定網路,還有硬碟會由ada變成ad,所以請記得改 /etc/fstab 用 Label mount,參考FreeBSD在fstab使用Label名稱mount磁碟
Update:
FreeBSD ports已經有xen tools,安裝方法:
cd /usr/ports/sysutils/xen-tools
sudo make install clean

以下為手動安裝的方法:(不知為何,Ports的版本舊很多,現在仍停留在4.0.1)

再到Xen.org 下載最新版的xen source,目前是Xen 4.1.1   Xen 4.1.2
編譯Xen tools需要安裝 python,若沒裝開發工具(gcc)也得安裝。
/root# cd /usr/ports/lang/python
/usr/ports/lang/python# make install clean

#這裏我習慣用wget下載,在 /usr/ports/ftp/wget 可安裝
/usr/ports/lang/python# cd ~
/root# wget http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
/root# tar xzf xen-4.1.2
/root# cd xen-4.1.2/tools
/root/xen-4.1.2/tools# gmake -C include
/root/xen-4.1.2/tools# cd misc
/root/xen-4.1.2/tools/misc# gmake xen-detect
/root/xen-4.1.2/tools/misc# install xen-detect /usr/local/bin
/root/xen-4.1.2/tools/misc# cd ../xenstore
#接下來要patch
/root/xen-4.1.2/tools/xenstore# sed 's/getenv("XENSTORED_PATH")/"\/dev\/xen\/xenstore"/g' < xs_lib.c > xs_lib.c.new
/root/xen-4.1.2/tools/xenstore# mv xs_lib.c.new xs_lib.c
/root/xen-4.1.2/tools/xenstore# gmake clients
/root/xen-4.1.2/tools/xenstore# install libxenstore.so.3.0 /usr/local/lib
/root/xen-4.1.2/tools/xenstore# install xenstore xenstore-control /usr/local/bin
/root/xen-4.1.2/tools/xenstore# cd /usr/local/bin
/usr/local/bin# ln -s xenstore xenstore-chmod
/usr/local/bin# ln -s xenstore xenstore-exists
/usr/local/bin# ln -s xenstore xenstore-list
/usr/local/bin# ln -s xenstore xenstore-ls
/usr/local/bin# ln -s xenstore xenstore-read
/usr/local/bin# ln -s xenstore xenstore-rm
/usr/local/bin# ln -s xenstore xenstore-write

#裝好後測試一下
# xen-detect
Running in HVM context on Xen v3.4 v4.1.
# xenstore-ls device
vbd = ""
768 = ""
backend = "/local/domain/0/backend/vbd/3/768"
...

# xenstore-ls -f `xenstore-read device/vif/0/backend`
/local/domain/0/backend/vif/3/0/frontend = "/local/domain/3/device/vif/0"
/local/domain/0/backend/vif/3/0/frontend-id = "3"
/local/domain/0/backend/vif/3/0/online = "1"
...

參考資料: FreeBSD/Xen 、 HOWTO: xen tools within FreeBSD domU

沒有留言: