Kernel-3.10.0-957.el7_xen

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

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

  1. copy .config for pv_ops of domU

    cp arch/ia64/configs/xen_domu_wip_defconfig .config

  2. make kernel with pv_ops

    make oldconfig

    make

  3. 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
=========

Written by Akio Takebe takebe_akio@jp.fujitsu.com on 28 May 2008