[[PageOutline]] = Massive Deployment of Xen enabled Virtual Cluster with Diskless Remote Boot Linux = == Test Environment == * VMWare Server 1.0.3 * VMWare Image debian 4.0r1 as DRBL Server * [[Image(drbl_xen_vmx.jpg)]] * VMWare Image without disk as DRBL Client * [[Image(drbl_xen_client_vmx.jpg)]] == Pre-installation == * First, install Xen Hypervisor and Xen enabled Linux Kernel and then reboot {{{ root@drbl-xen-srv:~# uname -a Linux drbl-xen-srv 2.6.18-6-686 #1 SMP Sat May 24 10:24:42 UTC 2008 i686 GNU/Linux root@drbl-xen-srv:~# apt-get install xen-hypervisor-3.0.3-1-i386-pae linux-image-2.6.18-6-xen-vserver-686 xen-tools libc6-xen root@drbl-xen-srv:~# update-grub root@drbl-xen-srv:~# reboot }}} * Note: If you did not install libc6-xen, you might have "4gb seg fixup" error message keep showing up while booting. * [[Image(xen_4gb_seg_fixup.png)]] * Choose Xen to boot at GRUB menu * [[Image(xen_grub.png)]] == Install and Configure DRBL == * Download GPG-KEY-DRBL and add GPG key via apt-key {{{ root@drbl-xen-srv:~# wget http://drbl.nchc.org.tw/GPG-KEY-DRBL root@drbl-xen-srv:~# apt-key add GPG-KEY-DRBL }}} * Add DRBL repository URL {{{ root@drbl-xen-srv:~# echo "deb http://free.nchc.org.tw/drbl-core drbl stable" > /etc/apt/sources.list.d/drbl-sources.list root@drbl-xen-srv:~# apt-get update root@drbl-xen-srv:~# apt-get install drbl }}} * Use drblsrv command to setup DRBL server. Here we choose linux-image-2.6.18-6-486 as default DRBL PXE kernel image {{{ root@drbl-xen-srv:~# /opt/drbl/sbin/drblsrv -i [....skip....] Install kernel for clients... ... In ayo repository, searching the latest kernel ... *****************************************************. Now run: /opt/drbl/sbin/drblsrv-offline -c -d -a -l en_US -k /var/cache/apt/archives/linux-image-2.6.18-6-486_2.6.18.dfsg.1-18etch5_i386.deb "" "" Kernel package /var/cache/apt/archives/linux-image-2.6.18-6-486_2.6.18.dfsg.1-18etch5_i386.deb is used for client... *****************************************************. [....skip....] }}} * Use drblpush command to deploy DRBL Client Image {{{ root@drbl-xen-srv:~# /opt/drbl/sbin/drblpush -i }}} * Use Thin Client VMWare Image to test DRBL * [[Image(drbl_xen_client_boot.jpg)]] == Configure PXELinux for Xen Network Booting == * To load Xen-based kernels you have to use the SYSLINUX multiboot module mboot.c32. So we copy mboot.c32 and xen kernel to TFTP root directory of DRBL. {{{ root@drbl-xen-srv:~# dpkg -S mboot.c32 syslinux: /usr/lib/syslinux/mboot.c32 root@drbl-xen-srv:~# cp /usr/lib/syslinux/mboot.c32 /tftpboot/nbi_img/. root@drbl-xen-srv:~# cp /boot/xen-3.0.3-1-i386-pae.gz /tftpboot/nbi_img/. }}} * Generate PXE initial ramdisk for xen-based kernel using '''drblsrv-offline''' command {{{ root@drbl-xen-srv:~# /opt/drbl/sbin/drblsrv-offline -s `uname -r` }}} * Since Xen-based kernel can not boot with Xen hypervisor, we have to switch vmlinuz-pxe and initrd-pxe.img back to normal linux kernl. {{{ root@drbl-xen-srv:~# /opt/drbl/sbin/drblsrv-offline -c -d -a -l en_US -k /var/cache/apt/archives/linux-image-2.6.18-6-486_2.6.18.dfsg.1-18etch5_i386.deb }}} * Add a new Xen option to pxelinux.cfg {{{ root@drbl-xen-srv:~# cat << EOF >> /tftpboot/nbi_img/pxelinux.cfg/default > label xen cluster > MENU DEFAULT > # MENU HIDE > MENU LABEL Xen 3.0.1-1-i386-pae > # MENU PASSWD > kernel mboot.c32 > append xen-3.0.3-1-i386-pae.gz --- vmlinuz-2.6.18-6-xen-vserver-686 root=/dev/sda1 ro console=tty0 --- initrd-pxe.2.6.18-6-xen-vserver-686.img > TEXT HELP > Run Xen 3.0 in each DRBL Client > ENDTEXT > EOF }}} * Use Thin Client VMWare Image to test DRBL * [[Image(drbl_xen_client_boot_2.jpg)]] * [[Image(drbl_xen_client_boot_3.jpg)]] == Reference == * [http://syslinux.zytor.com/wiki/index.php/Xen Syslinux Wiki] * [http://os-drive.com/files/docbook/xen-pxeboot.html Xen PXE Boot Howto] * [http://www.tjd.phlegethon.org/software/ Bootloader support for Xen] * If you are using debian, beware of bug [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=391152 #391152]