以參考資料一為主,安裝Xen過程中遇到問題及解決方案,詳看以下步驟:
# 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
# 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
# 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
這裡安裝有兩種方式: 一種是利用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
測試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 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之前,先檢查xen是否為4.1以上的版本。 #rpm -qa|grep -i 'xen' 結果為xen-4.1版本,虛擬機Domain0網路會有問題,可看參考資料第六項來獲得解決。 結果為xen-4.0版本以下,就可以開始安裝GuestOs,在此以virt-install文字命令列安裝;若 以virt-manager圖形介面安裝,可以看參考資料第1項。
建立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