syslinux patch for xen flavour
hi, To boot xen dom0 from debian-live, I tweak lh_binary_syslinux. I'm glad if someone check and integrate it. regards, -- KURASHIKI Satoru diff --git a/helpers/lh_binary_syslinux b/helpers/lh_binary_syslinux index 2d7cf33..ef5d962 100755 --- a/helpers/lh_binary_syslinux +++ b/helpers/lh_binary_syslinux @@ -94,6 +94,22 @@ Syslinux_live_entry () INITRD="${4}" APPEND="${5}" + # Check xen-flavour + if [ "$(echo ${KERNEL} | grep 'xen-')" != "" ] + then + # prepare multiboot module + case "${LH_CHROOT_BUILD}" in + enabled) +cp chroot/usr/lib/syslinux/mboot.c32 ${DATA_PATH} +;; + disabled) +cp /usr/lib/syslinux/mboot.c32 ${DATA_PATH} +;; + esac + XEN_KERNEL="$(basename chroot/boot/xen-*)" + + fi + case "${LH_BINARY_IMAGES}" in iso|usb-hdd) NUMBER="$(ls -1 ${KERNEL_PATH} | grep 'vmlinuz[0-9]\+$' | wc -l)" @@ -108,6 +124,14 @@ Syslinux_live_entry () ;; esac + # Xen kernel + if [ -f ${DATA_PATH}/mboot.c32 ] + then + LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL} Xen\n" + LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_DATA_PATH}/mboot.c32\n" + LINUX_LIVE="${LINUX_LIVE}\tappend ${LIVE_KERNEL_PATH}/${XEN_KERNEL} dom0_mem=256M --- ${LIVE_KERNEL_PATH}/${KERNEL} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} --- ${LIVE_KERNEL_PATH}/${INITRD}\n" + fi + # Regular kernel LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n" @@ -496,6 +520,11 @@ then mv binary/${INITFS}/vmlinuz* ${KERNEL_PATH} mv binary/${INITFS}/initrd* ${KERNEL_PATH} + if [ "$(echo ${LH_LINUX_FLAVOURS} | grep 'xen-')" != "" ] + then + mv binary/${INITFS}/xen* ${KERNEL_PATH} + fi + if [ "${LH_MEMTEST}" != "disabled" ] && [ "${LH_MEMTEST}" != "none" ] then mv binary/${INITFS}/memtest ${KERNEL_PATH}
Re: syslinux patch for xen flavour
hi, Thanks for your comments. >> Useless use of test: >> >> if echo ${KERNEL} | grep -q 'xen-' > > For completeness, you actually want `grep -qs` here, for various > portability reasons. If portability matters, grep(1) suggests `grep ... > /dev/null 2>&1`. As live-helper will run on Debian systems, `grep -q` seems to be sufficient. And, also, `mv` xen kernel doesn't work, it should be fixed... > Will this work on USB stick boot and netboot also?? USB stick boot works, which is my target. (Acording to DebianWiki, xen requires grub to boot, and usb-hdd requires syslinux to boot. I want to use xen with usb-hdd.) > Is that guaranteed to be the only xen kernel there? No, that picks (alphabetically) first from installed xen kernels. (And I assumed to be customized menu.cfg after created.) -- I will try to improve these problems. Which way below is suitable for live-helper? 1. Xen kernel is one of kernel images. All installed kernels will be detected and configured automatically. 2. Xen needs special configuration like LH_XEN_*. lh_binary_syslinux will have new functions for xen. regards, -- KURASHIKI Satoru -- To UNSUBSCRIBE, email to debian-live-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Re: syslinux patch for xen flavour
hi, How about this workaround? - lh_binary_linux-image moves xen kernels if exist - lh_binary_syslinux: it detects xen-flavour and xen kernels, and create syslinux multiboot entry for every xen kernels. Netboot is not tested (I don't have netboot environment), and xen boot parameters are hardcoded. regards, -- KURASHIKI Satoru diff --git a/helpers/lh_binary_linux-image b/helpers/lh_binary_linux-image index 7fe2986..8d5136e 100755 --- a/helpers/lh_binary_linux-image +++ b/helpers/lh_binary_linux-image @@ -79,6 +79,11 @@ mkdir -p "${DESTDIR}" cp chroot/boot/"${LINUX}"-* "${DESTDIR}" cp chroot/boot/initrd.img-* "${DESTDIR}" +# Instaling xen kernel +if echo ${LH_LINUX_FLAVOURS} | grep -q 'xen\-' + cp chroot/boot/xen-* "${DESTDIR}" +fi + # Including boot parameter documentation if [ "${LH_BINARY_IMAGES}" != "net" ] then diff --git a/helpers/lh_binary_syslinux b/helpers/lh_binary_syslinux index 2d7cf33..9414afb 100755 --- a/helpers/lh_binary_syslinux +++ b/helpers/lh_binary_syslinux @@ -8,6 +8,7 @@ # under certain conditions; see COPYING for details. set -e +set -x # Including common functions LH_BASE="${LH_BASE:-/usr/share/live-helper}" @@ -97,32 +98,46 @@ Syslinux_live_entry () case "${LH_BINARY_IMAGES}" in iso|usb-hdd) NUMBER="$(ls -1 ${KERNEL_PATH} | grep 'vmlinuz[0-9]\+$' | wc -l)" - NUMBER="$((${NUMBER} +1))" - # Note: ISOLINUX will not find the kernel if the name ends in ".img". - mv ${KERNEL_PATH}/${KERNEL} ${KERNEL_PATH}/vmlinuz${NUMBER} - mv ${KERNEL_PATH}/${INITRD} ${KERNEL_PATH}/initrd${NUMBER}.img + if [ -f "${KERNEL_PATH}/${KERNEL}" ] + then +NUMBER="$((${NUMBER} +1))" + +# Note: ISOLINUX will not find the kernel if the name ends in ".img". +mv ${KERNEL_PATH}/${KERNEL} ${KERNEL_PATH}/vmlinuz${NUMBER} +mv ${KERNEL_PATH}/${INITRD} ${KERNEL_PATH}/initrd${NUMBER}.img + fi KERNEL=vmlinuz${NUMBER} INITRD=initrd${NUMBER}.img ;; esac - # Regular kernel - LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n" + if echo ${LABEL} | grep -q '\-xen' + then + # Xen kernel + LH_XEN_BOOTAPPEND="dom0_mem=256M vga=gfx-1024x768x16 console=vga" + LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL} ${XEN_KERNEL}\n" + LINUX_LIVE="${LINUX_LIVE}\nMENU LABEL ${MENULABEL} ${XEN_KERNEL}\n" + LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_DATA_PATH}/mboot.c32\n" + LINUX_LIVE="${LINUX_LIVE}\tappend ${LIVE_KERNEL_PATH}/${XEN_KERNEL} ${LH_XEN_BOOTAPPEND} --- ${LIVE_KERNEL_PATH}/${KERNEL} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} --- ${LIVE_KERNEL_PATH}/${INITRD}\n" + else + # Regular kernel + LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n" - # Write the menu label if the syslinux menu is being use - LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL}\n" - LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n" - LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND}\n" + # Write the menu label if the syslinux menu is being use + LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL}\n" + LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n" + LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND}\n" - # Failsafe kernel - LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}failsafe\n" + # Failsafe kernel + LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}failsafe\n" - # Write the menu label if the syslinux menu is being use - LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL} (fail-safe mode)\n" - LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n" - LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} ${FAILSAFE}\n" + # Write the menu label if the syslinux menu is being use + LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL} (fail-safe mode)\n" + LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n" + LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} ${LH_BOOTAPPEND_LIVE} ${APPEND} ${FAILSAFE}\n" + fi } Syslinux_install_entry () @@ -496,6 +511,11 @@ then mv binary/${INITFS}/vmlinuz* ${KERNEL_PATH} mv binary/${INITFS}/initrd* ${KERNEL_PATH} + if echo ${LH_LINUX_FLAVOURS} | grep -q 'xen\-' + then + mv binary/${INITFS}/xen-* ${KERNEL_PATH} + fi + if [ "${LH_MEMTEST}" != "disabled" ] && [ "${LH_MEMTEST}" != "none" ] then mv binary/${INITFS}/memtest ${KERNEL_PATH} @@ -507,7 +527,26 @@ DEFAULT_FLAVOUR="$(echo ${LH_LINUX_FLAVOURS} | awk '{ print $1 }')" DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})" DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')" -Syslinux_live_entry "live" "${LH_SYSLINUX_MENU_LIVE_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}" +if echo ${DEFAULT_FLAVOUR} | grep -q 'xen-' +then + # prepare multiboot module + case "${LH_CHROOT_BUILD}" in + enabled) + cp chroot/usr/lib/syslinux/mboot.c32 ${DATA_PATH} + ;; + di