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}
+ ;;
+ disabled)
+ cp /usr/lib/syslinux/mboot.c32 ${DATA_PATH}
+ ;;
+ esac
+
+ XEN_KERNELS=$(find chroot/boot/ -name 'xen-*' -printf "%f ")
+ for XEN_KERNEL in ${XEN_KERNELS}
+ do
+ Syslinux_live_entry "live-xen" "${LH_SYSLINUX_MENU_LIVE_ENTRY} (${XEN_KERNEL})" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}"
+ done
+else
+ Syslinux_live_entry "live" "${LH_SYSLINUX_MENU_LIVE_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}"
+fi
if [ "$(echo ${LH_LINUX_FLAVOURS} | wc -w)" -gt "1" ]
then
@@ -517,7 +556,15 @@ then
then
FLAVOUR_KERNEL="$(basename chroot/boot/vmlinuz-*${FLAVOUR})"
FLAVOUR_INITRD="initrd.img-$(echo ${FLAVOUR_KERNEL} | sed -e 's|vmlinuz-||')"
- Syslinux_live_entry "live-${FLAVOUR}" "${LH_SYSLINUX_MENU_LIVE_ENTRY} ${FLAVOUR}" "${FLAVOUR_KERNEL}" "${FLAVOUR_INITRD}"
+ if echo ${DEFAULT_FLAVOUR} | grep -q 'xen-'
+ then
+ for XEN_KERNEL in ${XEN_KERNELS}
+ do
+ Syslinux_live_entry "live-${FLAVOUR}" "${LH_SYSLINUX_MENU_LIVE_ENTRY} ${FLAVOUR}" "${FLAVOUR_KERNEL}" "${FLAVOUR_INITRD}"
+ done
+ else
+ Syslinux_live_entry "live-${FLAVOUR}" "${LH_SYSLINUX_MENU_LIVE_ENTRY} ${FLAVOUR}" "${FLAVOUR_KERNEL}" "${FLAVOUR_INITRD}"
+ fi
fi
done
fi
Reply to: