2008-05-28 12:13:53 +04:00
|
|
|
Recipe for getting/building/running Xen/ia64 with pv_ops
|
|
|
|
--------------------------------------------------------
|
|
|
|
|
|
|
|
This recipe describes how to get xen-ia64 source and build it,
|
|
|
|
and run domU with pv_ops.
|
|
|
|
|
|
|
|
============
|
|
|
|
Requirements
|
|
|
|
============
|
|
|
|
|
|
|
|
- python
|
|
|
|
- mercurial
|
|
|
|
it (aka "hg") is an open-source source code
|
|
|
|
management software. See the below.
|
|
|
|
http://www.selenic.com/mercurial/wiki/
|
|
|
|
- git
|
|
|
|
- bridge-utils
|
|
|
|
|
|
|
|
=================================
|
|
|
|
Getting and Building Xen and Dom0
|
|
|
|
=================================
|
|
|
|
|
|
|
|
My environment is;
|
|
|
|
Machine : Tiger4
|
|
|
|
Domain0 OS : RHEL5
|
|
|
|
DomainU OS : RHEL5
|
|
|
|
|
|
|
|
1. Download source
|
|
|
|
# hg clone http://xenbits.xensource.com/ext/ia64/xen-unstable.hg
|
|
|
|
# cd xen-unstable.hg
|
|
|
|
# hg clone http://xenbits.xensource.com/ext/ia64/linux-2.6.18-xen.hg
|
|
|
|
|
|
|
|
2. # make world
|
|
|
|
|
|
|
|
3. # make install-tools
|
|
|
|
|
|
|
|
4. copy kernels and xen
|
|
|
|
# cp xen/xen.gz /boot/efi/efi/redhat/
|
|
|
|
# cp build-linux-2.6.18-xen_ia64/vmlinux.gz \
|
|
|
|
/boot/efi/efi/redhat/vmlinuz-2.6.18.8-xen
|
|
|
|
|
|
|
|
5. make initrd for Dom0/DomU
|
|
|
|
# make -C linux-2.6.18-xen.hg ARCH=ia64 modules_install \
|
2017-11-05 12:44:16 +03:00
|
|
|
O=$(pwd)/build-linux-2.6.18-xen_ia64
|
2008-05-28 12:13:53 +04:00
|
|
|
# mkinitrd -f /boot/efi/efi/redhat/initrd-2.6.18.8-xen.img \
|
|
|
|
2.6.18.8-xen --builtin mptspi --builtin mptbase \
|
|
|
|
--builtin mptscsih --builtin uhci-hcd --builtin ohci-hcd \
|
|
|
|
--builtin ehci-hcd
|
|
|
|
|
|
|
|
================================
|
|
|
|
Making a disk image for guest OS
|
|
|
|
================================
|
|
|
|
|
|
|
|
1. make file
|
|
|
|
# dd if=/dev/zero of=/root/rhel5.img bs=1M seek=4096 count=0
|
|
|
|
# mke2fs -F -j /root/rhel5.img
|
|
|
|
# mount -o loop /root/rhel5.img /mnt
|
|
|
|
# cp -ax /{dev,var,etc,usr,bin,sbin,lib} /mnt
|
|
|
|
# mkdir /mnt/{root,proc,sys,home,tmp}
|
|
|
|
|
|
|
|
Note: You may miss some device files. If so, please create them
|
|
|
|
with mknod. Or you can use tar instead of cp.
|
|
|
|
|
|
|
|
2. modify DomU's fstab
|
|
|
|
# vi /mnt/etc/fstab
|
|
|
|
/dev/xvda1 / ext3 defaults 1 1
|
|
|
|
none /dev/pts devpts gid=5,mode=620 0 0
|
|
|
|
none /dev/shm tmpfs defaults 0 0
|
|
|
|
none /proc proc defaults 0 0
|
|
|
|
none /sys sysfs defaults 0 0
|
|
|
|
|
|
|
|
3. modify inittab
|
|
|
|
set runlevel to 3 to avoid X trying to start
|
|
|
|
# vi /mnt/etc/inittab
|
|
|
|
id:3:initdefault:
|
|
|
|
Start a getty on the hvc0 console
|
|
|
|
X0:2345:respawn:/sbin/mingetty hvc0
|
|
|
|
tty1-6 mingetty can be commented out
|
|
|
|
|
|
|
|
4. add hvc0 into /etc/securetty
|
|
|
|
# vi /mnt/etc/securetty (add hvc0)
|
|
|
|
|
|
|
|
5. umount
|
|
|
|
# umount /mnt
|
|
|
|
|
|
|
|
FYI, virt-manager can also make a disk image for guest OS.
|
|
|
|
It's GUI tools and easy to make it.
|
|
|
|
|
|
|
|
==================
|
|
|
|
Boot Xen & Domain0
|
|
|
|
==================
|
|
|
|
|
|
|
|
1. replace elilo
|
|
|
|
elilo of RHEL5 can boot Xen and Dom0.
|
|
|
|
If you use old elilo (e.g RHEL4), please download from the below
|
|
|
|
http://elilo.sourceforge.net/cgi-bin/blosxom
|
|
|
|
and copy into /boot/efi/efi/redhat/
|
|
|
|
# cp elilo-3.6-ia64.efi /boot/efi/efi/redhat/elilo.efi
|
|
|
|
|
|
|
|
2. modify elilo.conf (like the below)
|
|
|
|
# vi /boot/efi/efi/redhat/elilo.conf
|
|
|
|
prompt
|
|
|
|
timeout=20
|
|
|
|
default=xen
|
|
|
|
relocatable
|
|
|
|
|
|
|
|
image=vmlinuz-2.6.18.8-xen
|
|
|
|
label=xen
|
|
|
|
vmm=xen.gz
|
|
|
|
initrd=initrd-2.6.18.8-xen.img
|
|
|
|
read-only
|
|
|
|
append=" -- rhgb root=/dev/sda2"
|
|
|
|
|
|
|
|
The append options before "--" are for xen hypervisor,
|
|
|
|
the options after "--" are for dom0.
|
|
|
|
|
|
|
|
FYI, your machine may need console options like
|
|
|
|
"com1=19200,8n1 console=vga,com1". For example,
|
|
|
|
append="com1=19200,8n1 console=vga,com1 -- rhgb console=tty0 \
|
|
|
|
console=ttyS0 root=/dev/sda2"
|
|
|
|
|
|
|
|
=====================================
|
|
|
|
Getting and Building domU with pv_ops
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
1. get pv_ops tree
|
|
|
|
# git clone http://people.valinux.co.jp/~yamahata/xen-ia64/linux-2.6-xen-ia64.git/
|
|
|
|
|
|
|
|
2. git branch (if necessary)
|
|
|
|
# cd linux-2.6-xen-ia64/
|
|
|
|
# git checkout -b your_branch origin/xen-ia64-domu-minimal-2008may19
|
|
|
|
(Note: The current branch is xen-ia64-domu-minimal-2008may19.
|
|
|
|
But you would find the new branch. You can see with
|
|
|
|
"git branch -r" to get the branch lists.
|
|
|
|
http://people.valinux.co.jp/~yamahata/xen-ia64/for_eagl/linux-2.6-ia64-pv-ops.git/
|
|
|
|
is also available. The tree is based on
|
|
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 test)
|
|
|
|
|
|
|
|
|
|
|
|
3. copy .config for pv_ops of domU
|
|
|
|
# cp arch/ia64/configs/xen_domu_wip_defconfig .config
|
|
|
|
|
|
|
|
4. make kernel with pv_ops
|
|
|
|
# make oldconfig
|
|
|
|
# make
|
|
|
|
|
|
|
|
5. install the kernel and initrd
|
|
|
|
# cp vmlinux.gz /boot/efi/efi/redhat/vmlinuz-2.6-pv_ops-xenU
|
|
|
|
# make modules_install
|
|
|
|
# mkinitrd -f /boot/efi/efi/redhat/initrd-2.6-pv_ops-xenU.img \
|
|
|
|
2.6.26-rc3xen-ia64-08941-g1b12161 --builtin mptspi \
|
|
|
|
--builtin mptbase --builtin mptscsih --builtin uhci-hcd \
|
|
|
|
--builtin ohci-hcd --builtin ehci-hcd
|
|
|
|
|
|
|
|
========================
|
|
|
|
Boot DomainU with pv_ops
|
|
|
|
========================
|
|
|
|
|
|
|
|
1. make config of DomU
|
|
|
|
# vi /etc/xen/rhel5
|
|
|
|
kernel = "/boot/efi/efi/redhat/vmlinuz-2.6-pv_ops-xenU"
|
|
|
|
ramdisk = "/boot/efi/efi/redhat/initrd-2.6-pv_ops-xenU.img"
|
|
|
|
vcpus = 1
|
|
|
|
memory = 512
|
|
|
|
name = "rhel5"
|
|
|
|
disk = [ 'file:/root/rhel5.img,xvda1,w' ]
|
|
|
|
root = "/dev/xvda1 ro"
|
|
|
|
extra= "rhgb console=hvc0"
|
|
|
|
|
|
|
|
2. After boot xen and dom0, start xend
|
|
|
|
# /etc/init.d/xend start
|
|
|
|
( In the debugging case, # XEND_DEBUG=1 xend trace_start )
|
|
|
|
|
|
|
|
3. start domU
|
|
|
|
# xm create -c rhel5
|
|
|
|
|
|
|
|
=========
|
|
|
|
Reference
|
|
|
|
=========
|
|
|
|
- Wiki of Xen/IA64 upstream merge
|
|
|
|
http://wiki.xensource.com/xenwiki/XenIA64/UpstreamMerge
|
|
|
|
|
|
|
|
Written by Akio Takebe <takebe_akio@jp.fujitsu.com> on 28 May 2008
|