Pejman Moghadam / Ubuntu

Ubuntu 6.06.2 - Xen virtualization recipe

Public domain


--------Xen 3.0.2-2 / Ubuntu 6.06.2 Installation Progress ------------------------------------------
1. Install Ubuntu server 6.06.2 (Dapper Drake) with 3 partitions :
     /dev/hda1 512MB  swap
     /dev/hda2 10GB   /
     /dev/hda3 30GB   /xen-images

2. [Optional] Copy previously downloaded ubuntu ( Insert Packages CD ) :
     $ sudo -i
     # mount /cdrom
     # cd /var/cache/apt
     # tar zxvf /cdrom/archives.tar.gz
     # eject /cdrom

3. Update the server :
     $ sudo -i
     # apt-get update
     # apt-get upgrade

4. Install SSH server for remote access :
     # apt-get install ssh

5. Install additionall packages ( Insert Ubuntu Installation CD ):
     # apt-get install         \
         bridge-utils          \
         build-essential       \
         bzip2                 \
         debootstrap           \
         gcc                   \
         gs                    \
         iproute               \
         libc6-dev             \
         libcurl3              \
         libcurl3-dev          \
         libncurses5           \
         libncurses5-dev       \
         module-init-tools     \
         ncurses-term          \
         netpbm                \
         openssl               \
         python                \
         python-dev            \
         python-twisted        \
         tetex-base            \
         tetex-extra           \
         transfig              \
         zlib1g                \
         zlib1g-dev

6. Download Xen 3.0.2-2 :
     # cd /usr/src
     # wget http://www.cl.cam.ac.uk/research/srg/netos/xen/downloads/xen-3.0.2-2-src.tgz

        [optional] OR copy previously downloaded source (Insert Packages CD):
        # mount /cdrom
        # cp /cdrom/xen-3.0.2-2-src.tgz /usr/src
        # eject /cdrom

7. Install Xen 3.2.2-2 :
     # cd /usr/src/
     # tar zxvf xen-3.0.2-2-src.tgz
     # cd xen-3.0.2-2

        [optional] copy previously downloaded Linux kernel 2.6.16 (Insert Packages CD):
        # mount /cdrom/
        # cp /cdrom/linux-2.6.16.tar.bz2 /usr/src/xen-3.0.2-2
        # eject /cdrom

     # make world && make install
     # depmod -a 2.6.16-xen

8. Add this line to FILE "/etc/mkinitramfs/modules" ( Increase loop divices ) :
              loop max_loop=64

9. Make initial RAMFS :
     # cd /boot
     # mkinitramfs -o initrd.img-2.6.16-xen 2.6.16-xen

10. Add to FILE "/boot/grub/menu.lst" before first kernel title ( BootLoader Config ) :
              title           Xen 3.0 / XenLinux 2.6
              kernel          /boot/xen-3.gz
              module          /boot/vmlinuz-2.6-xen root=/dev/hda2 ro
              module          /boot/initrd.img-2.6.16-xen

11. Xen startup configuration :
     # update-rc.d xend start 30 2 3 4 5 . stop 31 0 1 6 .
     # update-rc.d xendomains start 31 2 3 4 5 . stop 30 0 1 6 .

12. Disable Thread-Local Storage :
     # mv /lib/tls /lib/tls.disabled

13. Fixing Xen udev rule :
     # mv /etc/udev/rules.d/xen-backend.rules /etc/udev/rules.d/92-xen-backend.rules

14. Add this to FILE "/etc/init.d/xend" after "/proc/xen/capabilities" check :
              if [ ! -d /var/run/xend ] ; then
                mkdir -p /var/run/xend
              fi
              if [ ! -d /var/run/xenstored ] ; then
                mkdir -p /var/run/xenstored
              fi

15. Chaging LOCKFILE location in "/etc/init.d/xendomains" :
       LOCKFILE=/var/lock/xendomains


16. Bootup Xen kernel :
     # reboot

17. After reboot verifying Xen :
     $ sudo -i
     # xm list
         Name                              ID Mem(MiB) VCPUs State  Time(s)
         Domain-0                           0      217     1 r-----    12.1

--------Xen 3.0.2-2 / Ubuntu 6.06.2 Configuration Progress -----------------------------------------

1. Create baseimage :
     # mkdir /xen-images/mnt
     # dd if=/dev/zero of=/xen-images/guest_base.img bs=1024k count=1000
     # dd if=/dev/zero of=/xen-images/guest_base-swap.img bs=1024k count=500
     # chmod 640 /xen-images/guest_base*

2. Format images :
     # mkfs.ext3 /xen-images/guest_base.img
     # mkswap /xen-images/guest_base-swap.img

3. Install Ubuntu Dapper into images :
    # mount -o loop /xen-images/guest_base.img /xen-images/mnt

         [Optional] Copy Previously downloaded base packages (Insert Package CD ) :
         # mount /cdrom
         # mkdir -p /xen-images/mnt/var/cache/apt
         # cd /xen-images/mnt/var/cache/apt
         # tar zxvf /cdrom/base-packages.tar.gz
         # cd -
         # eject /cdrom

    # debootstrap --arch i386 dapper /xen-images/mnt http://archive.ubuntu.com/ubuntu/
    (other mirror:  http://swtsrv.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu/ )

4. Configure APT :
    # cp /etc/apt/sources.list /xen-images/mnt/etc/apt/

5. Copy kernel modules :
    # cp -dpR /lib/modules/2.6.16-xen /xen-images/mnt/lib/modules/

6. Disable Thread-Local Storage : 
    # mv /xen-images/mnt/lib/tls /xen-images/mnt/lib/tls.disabled

7. Add these lines to Network Configuration FILE in "/xen-images/mnt/etc/network/interfaces" :
              # The loopback network interface
              auto lo
              iface lo inet loopback

              # The primary network interface
              #auto eth0
              #iface eth0 inet static
              #  address 192.168.0.101
              #  netmask 255.255.255.0
              #  broadcast 192.168.0.255
              #  gateway 192.168.0.1
              #  dns-nameservers 192.168.0.1


8. Create hosts FILE in "/xen-images/mnt/etc/hosts" :
              127.0.0.1       localhost localhost.localdomain
              127.0.0.1       guest

              # The following lines are desirable for IPv6 capable hosts
              ::1     ip6-localhost ip6-loopback
              fe00::0 ip6-localnet
              ff00::0 ip6-mcastprefix
              ff02::1 ip6-allnodes
              ff02::2 ip6-allrouters
              ff02::3 ip6-allhosts

9. Configure HOSTNAME :
     # echo guest > /xen-images/mnt/etc/hostname

10. Configure mount points FILE in "/xen-images/mnt/etc/fstab" :
              proc            /proc       proc    defaults    0 0
              /dev/hda1       /           ext3    defaults,errors=remount-ro    0 1
              /dev/hda2       none        swap    sw          0 0
11. Unmount baseimage :
     # umount /xen-images/mnt

12. Create baseimage config FILE in "/etc/xen/baseimage" :
              #  -*- mode: python; -*-
              kernel = "/boot/vmlinuz-2.6.16-xen"
              ramdisk = "/boot/initrd.img-2.6.16-xen"
              memory = 33
              name = "baseimage"
              vif = ['bridge=xenbr0']
              disk = ['file:/xen-images/guest_base.img,hda1,w','file:/xen-images/guest_base-swap.img,hda2,w']
              ip = "192.168.0.101"
              netmask = "255.255.255.0"
              gateway = "192.168.0.1"
              hostname = "baseimage"
              root = "/dev/hda1 ro"
              extra = "4" 

13. Starting baseimage :
     # xm create baseimage -c

14. Login as root and set root password :
     # passwd 
     # shadowconfig on

15. Create a backup of "/etc/network/interfaces" :
     # cp /etc/network/interfaces /etc/network/interfaces.bak

16. Edit "/etc/network/interfaces" and connect to internet :
     # vi /etc/network/interfaces
     # /etc/init.d/networking restart

17. Install base packages :
     # apt-get update
     # apt-get install ubuntu-base openssh-server
     ( Other Mirror :  sed -i /etc/apt/sources.list -e 's,http://us.archive.ubuntu.com/ubuntu/,http://swtsrv.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu/,' )

18. Disable Thread-Local Storage :
     # mv /lib/tls /lib/tls.disabled

19. Restore "/etc/network/interfaces" backup :
     # /etc/init.d/networking stop
     # mv /etc/network/interfaces.bak /etc/network/interfaces

20. Shutdown baseimage :
     # poweroff

21. Make a copy of baseimages for first guest domain :
     # cp /xen-images/guest_base.img /xen-images/guestdom1.img
     # cp /xen-images/guest_base-swap.img /xen-images/guestdom1-swap.img
     # mv /etc/xen/baseimage /etc/xen/guestdom1

22. Change FILE "/etc/xen/guestdom1" for first guest domain :
              name = "guestdom1"
              disk = ['file:/xen-images/guestdom1.img,hda1,w','file:/xen-images/guestdom1-swap.img,hda2,w']
              hostname = "guestdom1"

23. Mount first domain image :
     # mount -o loop /xen-images/guestdom1.img /xen-images/mnt/

24. Change hostname of first domain :
     # echo FirstDomain > /xen-images/mnt/etc/hostname

25. Edit FILE "/xen-images/mnt/etc/hosts" and change hostname :
              127.0.0.1       FirstDomain

26. Change Network Settings in FILE "/xen-images/mnt/etc/network/interfaces" 

27. Unmount first domain image :
     # umount /xen-images/mnt

28. Automatic startup for first guest domain :
     # ln -s /etc/xen/guestdom1 /etc/xen/auto/

29. Manually start first guest domain :
     # xm create guestdom1

30. List Virtual Machins :
     # xm list

31. Attach to Domain :
     # xm console 6

32. Further Documents : http://www.cl.cam.ac.uk/Research/SRG/netos/xen/documentation.html

----------------------------------------------------------------------------------------

BY: Pejman Moghadam
TAG: xen, virtualization, fstab
DATE: 2009-05-27 17:37:00


Pejman Moghadam / Ubuntu [ TXT ]