kernel-xen.sh: Xen dom0 kernel using rebased OpenSUSE xen-patches. This script patches and builds the Linux Kernel for the Xen Hypervisor. To run this scipt you will need the Xen kernel patches in this directory. The patches may be downloaded from: http://gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.34-4.tar.bz2 (md5sum: 25ba07cf0702130af26c045fd6227f2f) Note on kernel: You will need to get kernel version 2.6.34.4 because patches based on Slackware stock kernel tree (2.6.33.4) do not work as expected. Anyway, you can get it from: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.4.tar.bz2 (md5sum: f75d21e5c60f18adf0e99d61c243f964) The included configuration files are based on Slackware's kernel. For Slackware32, the SMP kernels were used as the non-smp kernels would not compile with the Xen patches. For the Xen-specific parameters, the default options were used as much as possible. You may run "make menuconfig" before compiling the Xen kernel by passing the "MENUCONFIG=yes" to the scipt. Another variable worth mentioning here is "BOOTLOADER=", you can use it to select how kernel is packed. Valid options are "lilo" and "grub". By default, the huge kernel is chosen, but you may opt for the generic kernel by passing the "KERNEL=generic" variable to the script. In this case, you will need to make an ad-hoc initrd after installing this package. For example: depmod 2.6.34.4-xen mkinitrd -c -k 2.6.34.4-xen -f ext4 -r /dev/sda1 -m ext4 -o /boot/initrd-xen.gz For details on initrd, read /boot/README.initrd, run /usr/share/mkinitrd/mkinitrd_command_generator.sh for hints and read the Xen User Manual and the README file that comes with the Xen package. Since booting Xen kernel with LILO is not supported by default we have to either use GRUB, or mbootpack to create a LILO compatible kernel. This is an example how to do it with LILO, mbootpack and initrd: cd /boot gzip -d -c /boot/xen-4.0.1.gz > /boot/xen-4.0.1 gzip -d -c /boot/initrd-xen.gz > /boot/initrd-xen mbootpack -o /boot/vmlinuz-2.6.34.4-xen -m /usr/src/linux-2.6.34.4-xen/vmlinux \ -m /boot/initrd-xen /boot/xen-4.0.1 After new kernel image is created, add something like the folowing to lilo.conf: image = /boot/vmlinuz-xen root = /dev/sda1 label = XenLinux append="dom0_mem=256M -- nomodeset" read-only Note: everything before "--" is passed to Xen, and everything after "--" is passed to the Linux kernel. If for some reason LILO is not good enough, you can always use GRUB. GRUB may be installed from Slackware's extra repository. The GRUB package is not available from the Slackware x86_64 distribution, but the source and a SlackBuild may be found in its extra/source repository. grubconfig that comes with Slackware's GRUB package may give a starting point to configure GRUB. Moreover, the Xen User Manual and its README file installed with the Xen package include details on which parameters to include in the GRUB configuration file. For example, include these lines in /boot/grub/menu.lst: title Slackware XenLinux 13.1 root (hd0,0) kernel /boot/xen.gz dom0_mem=262144 console=vga module /boot/vmlinuz-xen root=/dev/sda1 ro console=tty0 nomodeset module /boot/initrd-xen.gz Notes on bootloader: A dom0_mem parameter is critical for Slackware32. You only need the initrd module if you install the generic kernel. Aditional notes on framebuffer: If your dom0 kernel gets stuck on boot with a blinking cursor on the screen, and you have an old VGA card, don't panic, there is a way arround it! Easiest method is to boot from non-xen kernel, and blacklist a framebuffer module from ever loading. Another option would be to replace VGA card with a newer one, or remove module in the next kernel build.