使用者工具

網站工具


linux:vm:xen

Xen Install On CentOs6.0

以參考資料一為主,安裝Xen過程中遇到問題及解決方案,詳看以下步驟:

  • 無序列表項目安裝Xen套件需要的Development
# yum groupinstall "Development tools" "Additional Development" "Debugging Tools" "System administration tools" "Compatibility libraries" 
"Console internet tools" "Desktop Platform Development"

#yum install transfig wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs 
pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial texinfo libuuid-devel

32位元版本,需要安裝下列套件
#yum install glibc-devel.i686
  • 利用Srpm編譯
# mkdir /root/src && cd /root/src
# wget http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/releases/14/Everything/source/SRPMS/xen-4.0.1-6.fc14.src.rpm
# rpm -i xen-4.0.1-6.fc14.src.rpm
# cd /root/rpmbuild/SPECS
# rpmbuild -bb xen.spec
  • 安裝srpm編譯後的套件
# cd /root/rpmbuild/RPMS/x86_64/
# rpm -Uvh xen*4.0.1-6*.rpm
安裝xen4.0時,發生qemu-common套件相依屬性的錯誤。因此緊接者先編譯qemu套件
# cd /root/src
# wget http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/updates/13/SRPMS/qemu-0.12.5-1.fc13.src.rpm
# rpm -i qemu-0.12.5-1.fc13.src.rpm
# cd /root/rpmbuild/SPECS
# rpmbuild -bb qemu.spec
編譯qemu原碼成功後,安裝qemu-common
# cd /root/rpmbuild/RPMS/x86_64
# rpm -Uvh qemu-common-0.12.5-1.el6.x86_64.rpm
之後再一次安裝xen*4.0.1
# rpm -Uvh xen*4.0.1-6*.rpm
  • 安裝kernel-Xen

這裡安裝有兩種方式: 一種是利用yum→容易安裝(參考資料第三點) 另一種是編譯kernel→彈性大,但步驟多;編譯失敗機率高(以下步驟)

# mkdir /root/kernel && cd /root/kernel
#git clone git://github.com/jsgf/linux-xen.git linux-2.6-xen
# cd linux-2.6-xen
# wget -O .config http://pasik.reaktio.net/xen/kernel-config/config-2.6.32.43-pvops-dom0-xen-stable-x86_64
# make oldconfig
# make -j4 bzImage && make -j4 modules && make modules_install
為建立好的模組更新相依屬性
# depmod -a 2.6.32.43
# cp -a arch/x86/boot/bzImage /boot/vmlinuz-2.6.32.43
# cp -a System.map /boot/System.map-2.6.32.43
# cp -a .config /boot/config-2.6.32.43
# cd /boot
# dracut initramfs-2.6.32.43.img 2.6.32.43

(git來源位置)

  • 修改開機選單
每台電安裝狀況不一樣,開機設定檔僅供參考
[root@el6 ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg00-lvroot
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-71.7.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.7.1.el6.x86_64 ro root=/dev/mapper/vg00-lvroot rd_LVM_LV=vg00/lvroot rd_LVM_LV=vg00/lvswap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=fi crashkernel=auto rhgb quiet
        initrd /initramfs-2.6.32-71.7.1.el6.x86_64.img

title Xen 4.0 with Linux 2.6.32.25 dom0
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M loglvl=all guest_loglvl=all
        module /vmlinuz-2.6.32.43 ro root=/dev/mapper/vg00-lvroot rd_LVM_LV=vg00/lvroot nomodeset
        module /initramfs-2.6.32.43.img
  • 重新開機及測試
KSM services會與Xen相衝突,先把KSM關掉
# chkconfig ksm off
# chkconfig ksmtuned off
#reboot
  • 安裝virt-install或virt-manager工具(它是安裝GuestOS的工具)

測試OK後,開機選單跳到非Xen的其他核心來安裝virt-install或virt-manager工具。

# yum install libvirt virt-manager xorg-x11-xauth
因RHEL6並不支援libvirt,所以針對libvirt需要重新編譯。
# cd /root/src
挑選合適RHEL6的libvirt 0.81版本
# wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/libvirt-0.8.1-27.el6.src.rpm
# rpm -i libvirt-0.8.1-27.el6.src.rpm
# wget http://pasik.reaktio.net/xen/patches/libvirt-spec-rhel6-enable-xen.patch
# cd /root/rpmbuild/SPECS
# cp -a libvirt.spec libvirt.spec.orig
# patch -p0 < ~/src/libvirt-spec-rhel6-enable-xen.patch
# rpmbuild -bb libvirt.spec
編譯過程錯誤,需要許多其他套件安裝
# yum install libnl-devel xhtml1-dtds libudev-devel libpciaccess-devel yajl-devel libpcap-devel avahi-devel parted-devel device-mapper-devel numactl-devel netcf-devel
再重新編譯
# rpmbuild -bb libvirt.spec
安裝libvirt套件
# cd /root/rpmbuild/RPMS/x86_64/
# rpm -Uvh --force libvirt-0.8.1-27.el6.x86_64.rpm libvirt-client-0.8.1-27.el6.x86_64.rpm libvirt-python-0.8.1-27.el6.x86_64.rpm
確定libvirtd開機是否啟動
# chkconfig --list libvirtd
  • brctl show 指令,產生的錯誤資訊解決方法
# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          /sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
8000.000000000000       yes
解決方法是下載 bridge-utils-1.2-9.fc13.src.rpm 重新編譯安裝
#rpm -i bridge-utils-1.2-9.fc13.src.rpm
#rpmbuild -bb bridge-utils.spec
#rpm -ivh bridge-utils-1.2-9.el6.x86_64.rpm
#rpm -ivh bridge-utils-debuginfo-1.2-9.el6.x86_64.rpm
  • 安裝GuestOS的工具
安裝GuestOS之前,先檢查xen是否為4.1以上的版本。
#rpm -qa|grep -i 'xen'
結果為xen-4.1版本,虛擬機Domain0網路會有問題,可看參考資料第六項來獲得解決。
結果為xen-4.0版本以下,就可以開始安裝GuestOs,在此以virt-install文字命令列安裝;若
以virt-manager圖形介面安裝,可以看參考資料第1項。
  • 開始以virt-install安裝GuestOs
建立4G印象檔來當硬碟
#dd if=/dev/zero of=/var/lib/xen/image/GuestOs1.img bs=1M count=4096
另外,若有設定selinux則需要修改檔案的安全內容
#chcon -t xen_image_t /var/lib/xen/image/GuestOs1.img
---------------------------------------------------------
Xen半虛擬化僅可透過 http, ftp, nfs 等方式來安裝乾淨的 Linux 系統
這裡選用 http方式。處理安裝來源
這裡假設你已安裝Apache伺服器
掛載Centos6.0_x86_46.iso的ISO檔

#mkdir -p /var/www/html/iso
#mount -o loop Centos6.0_x86_46.iso /var/www/html/iso

確定Apache設定檔內容 是否開啟Index選項 
#vim /etc/httpd/conf/httpd.conf
...
...
<Directory "/var/www/html">
...
Options Indexes FollowSymLinks
....
</Directory>
這裡假定本機IP為192.168.0.18:80 設定防火牆規則可以讓httpd通過
#iptables -I INPUT -s 192.168.0.18 -i eth0 -p tcp --dport 80 -j ACCEPT
起動Apache httpd
#/etc/init.d/httpd start
安裝GuestOs
#virt-install -n centos6.0 -r 512 -f /var/lib/xen/image/GuestOs1.img  --nographics  -l http://192.168.0.18/iso

參考資料

linux/vm/xen.txt · 上一次變更: 2013/07/06 01:28 (外部編輯)