Binqbu2002:Xen4.0 installation

First,You should install CentOS 5.5 X86-64,You can refer Qian's guide CentOS5.5 Installation
=Install Xen4.0.1=
Of course,you should download xen-4.0.1.tar.gz and target it.
==Step 1: Necessary tarball list for Xen-4.0.1==
*newlib-1.16.0.tar.gz 
*lwip-1.3.0.tar.gz 
*zlib-1.2.3.tar.gz 
*pciutils-2.2.9.tar.bz2 
*grub-0.97.tar.gz
You can get them on ftp://192.168.1.253:5501 
Download and place them in xen-4.0.1/stumdom/ 
==Step 2: Install dependence==
The necessary dependence are listed as following:
:* gcc v3.4 or later 
:* make
:* binutils
:* development install of zlib (e.g., zlib-dev)
:* development install of Python v2.3 or later (e.g., python-dev)
:* development install of curses (e.g., libncurses-dev)
:* development install of openssl (e.g., openssl-dev)
:* development install of x11 (e.g. xorg-x11-dev)
:* bridge-utils package (/sbin/brctl)
:* iproute package (/sbin/ip)
:* hotplug or udev
:* gawk
:* gettext
:* texinfo
:* transfig
:* development install of libssl (e.g. libssl-dev)
:* bcc
:* ACPI ASL compiler (iasl)
:* latex relevance (e.g. texlive-latex-xxx, tetex-xxx, latex2html, latex2pdf)
:* mercurial (NOTE: This can be unnecessary if you don't need the hg support.)
:* git (NOTE: This can be unnecessary if you don't need the Git support.)
:* qemu
of course ,the following are important.
yum install binutils zlib-devel python-devel
yum install ncurses-devel openssl-devel bridge-utils 
yum install iproute gettext texinfo*
yum install transfig dev86 vnc
yum install latex*
yum install mercurial
==Step 3: Prepare domain0 kernel==
You should download the domain0 kernel:linux-xen.stable-2.6.32.x.tar.gz on ftp://192.168.1.253:5501 to xen-4.0.1.
tar zxvf linux-xen.stable-2.6.32.x.tar.gz 
note:In our installation,we use that
DOM0=linux-2.6-pvops
DOM0_SRC=linux-xen.stable-2.6.32.x.tar.gz
DOM0_MODULES=2.6.32.12
==Step 4:Compile and Install==
When all things are ready, you need to obtain root permission. OK, start sailing!
make clean
make dist KERNELS=linux-2.6-pvops
make install KERNELS=linux-2.6-pvops
After the installation finish, you can see "xend" and "xendomains" in /etc/init.d/ directory.
==Step 5:Modify the config==
Be careful that if you refuse this step,you could find this error when you reboot to Xen-4.0.1 :
RedHat nash Version 5.1.19.6 startingrver(2.6.33.3)
mount: could not find filesystem ‘/dev/root’
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic – not syncing: Attempted to kill init!
[Linux-initrd @ 0x1fc37000,0x228585 bytes]
so, after compiling,you should do the following step:
*modify the .config on xen-4.0.1/build-linux-2.6-prvops_x86_64/
*set CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_SYSFS_DEPRECATED=y
and do
cd build-*
make
make modules_install
make install
==Step 6 :Create booting==
You should return to root to do this
su -
depmod 2.6.32.12
mkinitrd -v -f /boot/initrd-2.6.32.12.img 2.6.32.12 \
	--builtin=pata_marvell \
 --builtin=ehci-hcd --builtin=ohci-hcd --builtin=uhci-hcd --builtin=ahci --builtin=ata_piix
After this,you can find initrd-2.6.32.12.img in /boot
Then,modify grub
add Xen start
 title Xen Dom0, kernel 2.6.32.12
 root (hd0,0)
 kernel /xen-4.0.1.gz dom0_mem=512M
 module /vmlinuz-2.6.32.12 root=LABEL=/ rhgb quiet
 module /initrd-2.6.32.12.img
NOTE: Details should be similar to other entries, e.g. the value of root.
Ok,now ,reboot
=Create Domain U=
* PLEASE LOG IN AS root!!!!
* First, create a hard disk .img file in console, "qemu-img" is a tool, "create" is the subcommand, "xxx.img" is the target image 
==Create a hard disk==
(this way is faster)
qemu-img create xxx.img 20G
or
(the old way, which is very slow and you will hear harddisk crying)
dd if=/dev/zero of=xxx.img bs=1024k count=2048
==xend start==
so,you can excute
xend start
if you find the error
> ERROR Internal error: Could not obtain handle on privileged command 
> interface (2 = No such file or directory)
> Traceback (most recent call last):
> File "/usr/sbin/xend", line 36, in <module>
> from xen.xend.server import SrvDaemon
> File "usr/lib/python2.5/site-packages/xen/xend/server/SrvDaemon.py", 
> line 26, in <module>
> File "usr/lib/python2.5/site-packages/xen/xend/server/relocate.py", 
> line 28, in <module>
> File "usr/lib/python2.5/site-packages/xen/xend/XendDomain.py", line 
> 35, in <module>
> File "usr/lib/python2.5/site-packages/xen/xend/XendCheckpoint.py", 
> line 20, in <module>
> File "usr/lib/python2.5/site-packages/xen/xend/image.py", line 46, 
> in <module>
> xen.lowlevel.xc.Error: (1, 'Internal error', 'Could not obtain handle 
> on privileged command interface (2 = No such file or directory)')
you should do the following
modify /etc/fstab by adding:
none /proc/xen xenfs defaults 0 0
more solution，you can refer xend start problem
==create winxp config file==
If you want to create a domainU and want to install winxp on it ,you should create a winxp config file and copy the following
import os, re
arch = os.uname()[4]
if re.search('64', arch):
 arch_libdir = 'lib64'
else:
 arch_libdir = 'lib'
kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 1024 
name = "winxp"
vcpus = 1
#cpus = ["2", "3"] # VCPU0 runs on CPU2, VCPU1 runs on CPU3
#vif = [ 'type=vnif, mac=00:16:3e:00:00:11' ]
disk = ['file:/root/xxx.img,hda,w', 'phy:/dev/cdrom,hdc:cdrom,r']
#disk = ['file:/var/lib/xen/images/winxp.img,hda,w','phy:/dev/cdrom,hdc:cdrom,r']
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
device_model = '/usr/lib/xen/bin/qemu-dm'
boot="dc"
vnc=1
localtime=1
#cpuid = [ '0x40000002:edx=0x3' ]
#mouse adjustment
usb=1
usbdevice='tablet'
#guest os debug support
serial = 'pty'
#serial = 'tcp::4444,server,nowait'
Notice:disk = ['file:/root/xxx.img,hda,w', 'phy:/dev/cdrom,hdc:cdrom,r']
the file path is your domain U path!!
==launch xend==
xend start
* Launch a console, cd to the config file directory, type in: (winxp is the name of the config file)
xm create winxp
* Type following to "see" domain U. "xm create" only launches the domainU and runs it at "background", so you need to use vnc (a remote desktop) to connect to domainU display.
xm vnc winxp
If everything goes well, you can see the black booting screen in the Domain U.
* Note: Sometimes, the domainU is created but disappear immediately. Please put a bootable CD in the CD-ROM in advance.
* If there is nothing, you can use:
xm list
to check if winxp has been launched.
OK,enjoy!
=Qian's XEN4.0 Installation Script= 
Of course,Qian give a wonderful Installation Script of Xen-4.0.0,We should thanks to him and we can refer his scription
#!/bin/bash
XEN=xen-4.0.0
DOM0=linux-2.6-pvops
DOM0_SRC=linux-xen.stable-2.6.32.x.tar.gz
DOM0_MODULES=2.6.32.12
echo "Deleting previous Xen directory."
rm -rf $XEN
echo "Extracting Xen source package ..."
tar xzf $XEN.tar.gz
echo "Extracting Dom0 kernel ..."
tar xzf $DOM0_SRC -C $XEN
echo "Preparing stubdom packages ..."
cp stubdom_pkg/* $XEN/stubdom/
cd $XEN/
make clean
make dist KERNELS=$DOM0
make install KERNELS=$DOM0
depmod $DOM0_MODULES
mkinitrd -v -f /boot/initrd-$DOM0_MODULES.img $DOM0_MODULES \
	--builtin=pata_marvell \
 --builtin=ehci-hcd --builtin=ohci-hcd --builtin=uhci-hcd --builtin=ahci --builtin=ata_piix
exit 0
=参考文档=
*Xen Dom0 kernel: Quick Start
*xen实践手册
*How to Setup Xen4 and pvops 2.6.32.x on CentOS 5.5