Centos5.4  安装XEN3.4.2  

1.XEN 的安装

a需要的包名称

xen-3.4.2.tar.gz 

linux-2.6.18-xen-3.4.2.tar.gz 

补丁

grub-0.97.tar.gz   newlib-1.16.0.tar.gz    pciutils-2.2.9.tar.gz

lwip-1.3.0.tar.gz  pciutils-2.2.9.tar.bz2  zlib-1.2.3.tar.gz

其中zlib-1.2.3.tar.gz注意解压后文件夹名称是否为zlib-1.2.3(重要

否则会导致编译错误

b.安装包

# yum install 

libx11-devel.x86_64

openssl-devel.x86_64

gettext_devel.x86_64

gcc.x86_64

dev86.x86_64

ncurses-devel

python-devel

libtool-ltdl

texinfo.x86_64

xorg-x11-xtrans-devel

xorg-x11-server-sdk

xorg-x11-drv-i810-devel

xorg-x11-drv-via

xorg-x11-proto-devel

c.设置配置文件

把对应的linux内核源码包放到xen的目录下改成linux-2.6.18-xen.hg并修改src.hg-clone文件。

[root@localhost source]# mv linux-2.6.18-xen-3.4.2 xen-3.4.2/linux-2.6.18-xen.hg

[root@localhost source]# cd xen-3.4.2

[root@localhost xen-3.4.2]# gedit buildconfigs/src.hg-clone 

去掉hg同步linux内核源码的步骤(修改后的文件)如下

----------------------------------------------------------------

# Mercurial

HG ?= hg

LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen.hg

# Repository to clone.

XEN_LINUX_HGREPO ?= $$(sh buildconfigs/select-repository $(LINUX_SRCDIR) $(LINUX_SRC_PATH))

# Set XEN_LINUX_HGREV to update to a particlar revision.

XEN_LINUX_HGREV  ?= tip

$(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)

set -e ; \

touch $@

d.准备studom补丁集

studom是xen中的一个补丁集可以增加性能是从xen3.3引入的并不是必需的。网上有说可以把这块去掉(具体步骤可以到网上去找)如果不想去掉的话可以自己上网下载对应的工具包放到xen源码目录下的studom目录下。我已经下好了这些工具包在按照名字在网上都很容易搜索到的。

[root@localhost stubdom]# ls

grub-0.97.tar.gz   newlib-1.16.0.tar.gz    pciutils-2.2.9.tar.gz

lwip-1.3.0.tar.gz  pciutils-2.2.9.tar.bz2  zlib-1.2.3.tar.gz

[root@localhost stubdom]# cp * ../xen-3.4.2/stubdom/

其中zlib-1.2.3.tar.gz注意解压后文件夹名称是否为zlib-1.2.3(重要

e.开始编译安装

[root@localhost xen-3.4.2]# make dist有Y选Y没Y选M

[root@localhost xen-3.4.2]# make install

f.生成initrd镜像

[root@localhost xen-3.4.2]# mkinitrd --without-dmraid -v -f /boot/initrd-2.6.18.8-xen.img 2.6.18.8-xen

g.修改grub配置文件

[root@localhost xen-3.4.2]# gedit /boot/grub/grub.conf 

----------------------------------------------------------------

default=1

timeout=1

splashp_w_picpath=(hd0,1)/boot/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.18-164.el5)

root (hd0,1)

kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/1 rhgb quiet

initrd /boot/initrd-2.6.18-164.el5.img

title CentOS-Xen3.4.2 (2.6.18-8)

root (hd0,1)

kernel /boot/xen-3.4.2.gz

module /boot/vmlinuz-2.6.18.8-xen ro root=LABEL=/1 rhgb quiet

module /boot/initrd-2.6.18.8-xen.img 

title Other

rootnoverify (hd0,0)

chainloader +1

----------------------------------------------------------------
2.DOMU的启动

编译一个domU内核
   我们使用上面下载的Xen源代码来创建domU内核
1、进入包含源代码的目录
   cd ~/xen-source
2、编译domU内核
   make linux-2.6-xenU-config
3、选择domU内核需要的选项如果不确定可以使用缺省选项记得在退出时保存选项。
4、创建domU内核然后安装
   make linux-2.6-xenU-build
   make linux-2.6-xenU-install
5、为domU内核创建initrd(我没有成功建立少个模块没有这个也可以启动)
   mkinitrd -v -f --with=ide-disk --with=sd_mod --with=ide-generic --with=ext3 --with=scsi_mod /boot/initrd-2.6.**.**-xenU.img 2.6.**.**-xenU

mkinitrd -v -f   initrd-2.6.21.DomU.img  $(uname -r)

创建镜像文件

For example, to create a 2GB sparse le-backed virtual block device (actually only

consumes 1KB of disk):

# dd if=/dev/zero of=vm1disk bs=1k seek=2048k count=1

Make a le system in the disk le:

# mkfs -t ext3 vm1disk

(when the tool asks for conrmation, answer `y')

Populate the le system e.g. by copying from the current root:

# mount -o loop vm1disk /mnt

# cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt

# mkdir /mnt/{proc,sys,home,tmp}

配置文件修改

修改与系统相关的配置文件例如

文件系统表/etc/fstab

主机名/etc/sysconfig/network

IP地址和MAC地址/etc/sysconfig/network-scripts/ifcfg-eth0这些最好都进行修改。

注意这里所说的文件系统表还有主机名等文件是在/mnt/下的如/etc/fstab实际是指/mnt/etc/fstab含义其实很简单就是修改我们创建的vm1disk这套半虚拟话磁盘镜像系统内的系统表主机名等这里就不再赘述了。

现将我的修改贴出来以供大家参考我的修改全部是必须的修改因为我之前这些有的没有修改因此会爆出这样或那样的错误让人很困扰后面的错误分析中我会具体说明是哪些未修改引起的错误。

文件系统表/etc/fstab

  全部都注释掉只留一行

/dev/sda2    /  ext3 defaults     1     1

注sda2这个要视情况而定。学长告诉我先要在终端中用fdisk -l这个命令看看哪个在root那一行是*然后就写成哪个所以我本来写的是sda1但是有问题后来另一个学长告诉我恰恰相反要用没有用过的因此用了在fdisk -l里面没有出现的sda2结果成功了所以这个选择我希望大家最好还是试试看吧有兴趣的尝试一下可以告诉我哦~

补充刚才我又试了一下在一切的成功的基础上将sda2都改为sda1也没有问题不知道是什么情况希望知道的留言解释呵呵。

  主机名/etc/sysconfig/network

将主机名修改即可。

IP和MAC地址/etc/sysconfig/network-scripts/ifcfg-eth0

这个可以不修改但是不修改则无法上网至少我用的时候不修改是无法ping通本机的建议大家修改

更改系统级别/etc/inittab

选择3 ×××面方式

Domu启动配置文件

配置文件制作

kernel = "/boot/vmlinuz-2.6.21-2950.fc8xen"        //DomU的内核

ramdisk = "/boot/initrd-2.6.21.DomU.img"               // 包含相应驱动DomU 的intrd 文件 要自己制作最好不要用                系统生成的可选

#ramdisk  = "/boot/initrd-2.6.21-2950.fc8xen.img"

memory = 200

maxmem = 200

name   = "jiangyue-fc8"

vif    = ['mac=AA:AA:0A:EF:EF:04,bridge=eth0']

vcpus  = 1

ip     = "192.168.201.18"

netmask= "255.255.255.0"

dns    = "202.114.0.242"

disk   = ['file:/media/disk/fc8.img,sda2,w']    //sda2 与DomU中 /etc/fstab中一致

root   = "/dev/sda2 ro"                                                   //sda2 与DomU中一致

#extra  = 'xencons=tty'  

 

 

xen-4.1.2+Linux-3.1.2源码编译安装

以下所有命令均在CentOS6.2系统上操作。

下载xen源码 
wget http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz

安装必备软件包

yum groupinstall "Development Libraries"

yum groupinstall "Development Tools"

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 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 install python-devel -y

 

编译安装xen hypervisor

tar zxvf xen-4.1.2.tar.gz

 

make world

make install

 

/boot下多了xen-4.1.2.gz和xen-syms-4.1.2文件

 

将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

 

编译安装Linux3.1.2内核

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.2.tar.bz2
#make oldconfig # 全部默认
#make menuconfig 

Processor type and features --- >
     选中Paravirtualized Guest Support
  Device Drivers ---> 
      Xen driver support ---> 
        全部选*

修改CONFIG_XEN_DEV_EVTCHN=y如果是m开机时无法启动xencommons

make
make modules
make modules_install
make install 会报找不到xen-evtchn模块忽略
depmod 3.1.2
mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initramfs-3.1.2.img 3.1.2

配置grub

title CentOS (3.1.2-xen)
        root (hd0,0)
        kernel /boot/xen-4.1.2.gz  dom0_mem=1024M
        module /boot/vmlinuz-3.1.2 ro root=/dev/sda1
        module /boot/initramfs-3.1.2.img

参考
http://linuxme.blog.51cto.com/1850814/390778
http://share.blog.51cto.com/278008/723828
http://blog.chinaunix.net/space.php?uid=147142&do=blog&id=2788048
http://wiki.xen.org/xenwiki/2.6.18-to-2.6.31-and-higher
http://wiki.xen.org/wiki/Migrate_from_Linux_2.6.18_to_2.6.31_and_higher
http://wiki.xen.org/wiki/Mainline_Linux_Kernel_Configs
http://wiki.xen.org/wiki/HostConfiguration/Networking


虚机配置文件中增加

extra="single"


#!/bin/bash
# Generate vm configuration file for already running vms

# Execute 'xm new -F test.cfg' to create vm using generated config
#
# By feisky
vms=`xm li | grep -v Name | grep -v Domain-0 | awk '{print $1}'`
for vm in $vms
do 
xm li -l $vm > $vm.cfg
done

 

换过一个版本的xen之后重新编译源代码重新启动出现
Kernel panic - not syncing: Attempted to kill init!
解决办法initrd镜像没有更新重新生成下initrd的镜像针对2.6.18.8的到boot目录下执行如下命令mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18.8-xen.img 2.6.18.8-xen再次启动就可以了