一、环境
系统:CentOS 6.3
Xen版本:4.1.2
Linux kernel:3.1.2
libvirt:0.7.7
资源地址
xen:http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
kernel:http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.2.tar.bz2
libvirt:http://pkgs.Fedoraproject.org/repo/pkgs/libvirt/libvirt-0.7.7.tar.gz/5f315b0bf20e3964f7657ba1e630cd67/libvirt-0.7.7.tar.gz
libvirt所有的版本:http://pkgs.fedoraproject.org/repo/pkgs/libvirt/
xen和内核都是编译安装,libvirt也需要编译安装,因为6.0之后默认支持的虚拟化是KVM,源里面的libvirt默认是不支持xen的。
yum install libvirt 这种安装方式使用virt-install会出现错误:主机不支持任何虚拟化。
使用virt-manager会出现无法连接xen。
1、初始化环境
yum update
2、关闭selinux,xen不支持selinux。
vi /etc/selinux/config
SELINUX=disabled
3、安装必备软件包
yum -y groupinstall "Development Libraries"
yum -y groupinstall "Development Tools"
yum -y 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 libidn-devel
yum -y install glibc-devel.i686texinfo libuuid-devel iasl python-lxml
yum -y install openssl openssl-devel
yum -y install ncurses ncurses-*
yum -y install python-devel
yum -y install vim wget tcpdump ntp ntpdate man smartmontools links lynx ethtool xorg-x11-xauth
4、安装xen
tar zxvf xen-4.1.2.tar.gz
cd xen-4.1.2
make world
make install
将xen加入启动脚本
/sbin/chkconfig --add xend
/sbin/chkconfig --add xencommons
/sbin/chkconfig --add xendomains
/sbin/chkconfig xend on
/sbin/chkconfig xendomains on
/sbin/chkconfig xencommons on
5、安装Linux3.1.2内核
linux3.0之后已经默认支持xen,所以3.0之后的版本不需要安装xen-kernel内核补丁,直接编译内核就可以。
tar jxf linux-3.1.2.tar.bz2
cd linux-3.1.2
make menuconfig
参数配置:
Processor type and features --- >
选中Paravirtualized Guest Support
Device Drivers --->
XEN driver support --->
[ * ] Xen memory balloon driver
[ * ] Scrub pages before returning them to system
<*> Xen /dev/xen/evtchn device
[ * ] Backend driver support
<*> Xen filesystem
[ * ] Create compatibility mount point /proc/xen
[ * ] Create xen entries under /sys/hypervisor
<*> userspace grant access device driver
在.config文件中做如下修改,我在创建虚拟机的时候出现vif0错误。查找网上的资料说是下面两个没有修改。
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_NETDEV_BACKEND=m
编译安装
make -j6
make -j6 modules
make -j6 modules_install
make -j6 install
depmod 3.1.2
注:-j参数是指定运行的线程数,没有用这个参数会慢特别多。建议使用节省编译时间。后面的数字根据自己的机器配置设置。详细参数可以查看man make
6、编译安装libvirt
tar -zxvf libvirt-0.7.7.tar.gz
./configure
make && make install
运行程序
libvirt:libvirtd -d
7、修改启动项,使用xen内核启动
vi /etc/grub.conf
默认会有一个3.1.2的启动项。基本是是这样的:
title CentOS (3.1.2)
root ***
kernel /**********
initrd /********
复制上面几行。title前面粘贴,在root和kernel之间插入一行kernel /xen.gz
修改kernel和initrd为module,修改后为:
title xen (3.1.2)
root ***
kernel /xen.gz
modul /**********
modul /********
然后修改default=N这个,查看修改的这个title xen是第几个title,第一个则修改为default=0
第二个修改为default=1,依次类推。
reboot
**********************************************************************************
安装前的准备:
1、网络设置:设置NM_CONTROLLE为no。
2、GRUB设置:取消hiddenmenu。将来要引导xen用的。
3、SELINUX设置:禁用SELINUX。目前xen尚不支持SELINUX。
4、软件依赖包的安装:可以参考两个官方文档:
http://wiki.xen.org/wiki/RHEL6Xen4Tutorial
http://wiki.xen.org/wiki/Xen_4.0_Release_Notes
Xen安装(即Xen Hypervisior安装):
版本选择:4.1
下载:http://www.xen.org/products/xen_source.html
安装过程可以参考xen解压后的README。网上教程各种各样,我也不知道哪个准,所以只好看README。话说回来,本来就应该这样,但我们安装软件时,往往几乎下意识地到网上搜索教程。扯远了一点。
cd xen-4.1.2 make world make install
在make world过程中遇到的错误:
遇错:*** check_uuid_devel FAILED: missing uuid headers (package uuid-dev)
解决:yum install libuuid-devel
遇错:WARNING: makeinfo' is missing on your system.
解决:yum install texinfo
遇错:*** No rule to make target `clean'. Stop.
解决:重新解压xen软件包,重新编译。可能还需要安装http://wiki.xen.org/wiki/RHEL6Xen4Tutorial文中的提到的软件包。该文档安装的依赖软件比较全面,当然,需要下载的文件也比较多。
domain 0的安装:
这个我没有使用xen-kernel,直接下载linux kernel 3.1.2。linux内核从3.0开始支持xen,所以不用再另外安装xen-kernel了,方便。安装过程可以参考:http://siwind.iteye.com/blog/1188053。
下载Linux内核3.1.2:
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.2.tar.bz2
编译安装Linux内核(注意,这个过程比较耗时!估计要30~40分钟):
cd 3.1.2 make help make menuconfig 这个地方主要修改是Device Drivers下的Xen driver support,把它们全部选中! 然后是Processor famaily,选中core 2 /new xeon。 还有就是取消一些AMD相关的选项,我的CPU是xeon的。 最后,选中Paravirtualized Guest Support,及其下面的Xen Guest Support。 make make modules make modules_install make install /bin/depmod 3.1.2
安装内核以后,修改grub.conf,添加如下内容:
title CentOS Linux (3.1.2 with xen) root(hd0,0) kernel /xen-4.1.2.gz dom0_mem=1024MB module /vmlinuz-3.1.2 ro root=UUID=ed3d4a3c-af33-4e7a-8fe4-c07773fb01f4 module /initramfs-3.1.2.img
重启系统,进入xen Linux。
启动Xen:
/sbin/chkconfig --add xencommons /sbin/chkconfig --add xend /sbin/chkconfig --add xendomains /sbin/chkconfig --level 35 xend on /sbin/chkconfig --level 35 xendomains on /sbin/chkconfig --level 35 xencommons on service xencommons start service xend start service xendomains start
查看是否启动成功:
xm list
******************************************************************************************
Step.1 安装需要的软件包:
首先最小化安装 CentOS,首先使用yum升级系统
# yum update
然后安装编译 Xen 和 Linux xen kernel 所需要的软件包:
# yum groupinstall "Development Tools"
# yum install hmaccalc ncurses-devel zlib-devel openssl-devel python-devel
bridge-utils libtool-ltdl iasl xorg-x11-drv-evdev xorg-x11-drv-fbdev
xorg-x11-drv-i810-devel xorg-x11-drv-via-devel xorg-x11-proto-devel
xorg-x11-server-sdk xorg-x11-xtrans-devel
到http://www.acpica.org/downloads下载并安装acpica,进入解压缩包中的compiler目录中,
# make
# make install
Step.2 安装 Xen hypervisor:
到 http://www.xen.org/products/xen_source.html 下载最新的 Xen 源代码,然后解开、编译、安装,标准的 Linux 软件源码安装动作:
# tar zxvf xen-4.1.1.tar.gz
# cd xen-4.1.1/
# make world
(此过程耗时约10-15分钟)
# make install
Step.3 将Xen加入到启动脚本:
# /sbin/chkconfig --add xend
# /sbin/chkconfig --add xendomains
# /sbin/chkconfig --add xencommons
# /sbin/chkconfig xend on
# /sbin/chkconfig xendomains on
# /sbin/chkconfig xencommons on
Step.4 下载、配置并编译 Xen 内核:
下载 Linux 内核后给内核打 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
配置带 xen 的 Linux 内核www.codesky.net:
$ 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
注意:如果使用32位系统,则务必将PAE功能开启,将内存支持选择为64GB,否则会重启后内核将会报错。
Processor type and features --->
High Memory Support (4GB) --->
64GB
配置好内核参数以后,保存并退出,开始编译 Linux 内核:
# make
(此过程耗时约30-45分钟)
# make modules
# make modules_install
# make install
# /sbin/depmod 2.6.31.8
Step.5 更新 grub 引导信息:
# vi /boot/grub/menu.lst
title CentOS (2.6.31.8-xen)
root (hd0,0)
kernel /xen-4.1.1.gz
module /vmlinuz-2.6.31.8 ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.31.8.img
Step.6 重启系统,确认 Xen 安装成功:
# reboot
# uname -a
Linux localhost.localdomain 2.6.31.8 #2 SMP Tue Apr 20 11:19:19 SAST 2010 x86_64 GNU/Linux
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 3713 4 r----- 36.0
特别注意:
1、如果您是在VMware中安装的虚拟Linux系统,您需要在#make menuconfig配置内核时,将SCSI相关的选项编译进内核(即改为“*”),并且将".config"配置文件中的“#CONFIG_SYSFS_DEPRECATED_V2 is not set”项一行修改为“CONFIG_SYSFS_DEPRECATED_V2=y”,重新编译内核,否则会出现下列错误信息:
Mounting root filesystem.
mount: could not find filesystem ‘/dev/root’
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic �C not syncing: Attempted to kill init!
2、过程中若提示缺包,请使用#yum install xxx,使用yum在线下载安装。
3、使用virt-manager提示无法连接8000端口的问题,请做出如下改动:
#vi /etc/xen/xend-config.sxp
修改其中的#(xend-unix-server no) -> (xend-unix-server yes)
#service xend restart