|        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 |