| 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 \ |
| O=$(/bin/pwd)/build-linux-2.6.18-xen_ia64 |
| # 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 |