From 81a76d4adc812c16be8238fedda25bd43ab3a379 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 18 Sep 2007 21:43:18 -0300 Subject: implements syslinux vesa menu support --- helpers/lh_binary_syslinux | 110 +++++++++++++++++++++++++++++++++------------ 1 file changed, 82 insertions(+), 28 deletions(-) diff --git a/helpers/lh_binary_syslinux b/helpers/lh_binary_syslinux index c50ec05..4d26626 100755 --- a/helpers/lh_binary_syslinux +++ b/helpers/lh_binary_syslinux @@ -47,7 +47,12 @@ Require_stagefile .stage/bootstrap Check_stagefile .stage/binary_syslinux # Checking syslinux templates -Check_templates syslinux +if [ "${LH_SYSLINUX_MENU}" = "disabled" ] +then + Check_templates syslinux +else + Check_templates syslinux-menu +fi # Checking lock file Check_lockfile .lock @@ -68,12 +73,37 @@ Restore_cache cache/packages_binary Install_package # Local functions +Syslinux_memtest_entry () +{ + LABEL="${1}" + MENULABEL="${2}" + KERNEL="${3}" + + # syslinux << 3.36 lacks support to file/path + if [ "`basename ${DESTDIR_LIVE}`" = "binary" ] + then + KERNEL="${DIRECTORY}/${KERNEL}" + fi + + MEMTEST="${MEMTEST}\nLABEL ${LABEL}\n" + + # Write the menu label if the syslinux menu is being use + if [ "${LH_SYSLINUX_MENU}" != "disabled" ] + then + MEMTEST="${MEMTEST}\tMENU LABEL ${MENULABEL}\n" + fi + + MEMTEST="${MEMTEST}\tkernel /${KERNEL}\n" + MEMTEST="`/bin/echo ${MEMTEST} | sed -e 's#//#/#g'`" +} + Syslinux_live_entry () { LABEL="${1}" - KERNEL="${2}" - INITRD="${3}" - APPEND="${4}" + MENULABEL="${2}" + KERNEL="${3}" + INITRD="${4}" + APPEND="${5}" # syslinux << 3.36 lacks support to file/path if [ "${LH_BINARY_IMAGES}" != "net" ] && [ "`basename ${DESTDIR_LIVE}`" != "binary" ] @@ -84,6 +114,13 @@ Syslinux_live_entry () fi LINUX_LIVE="${LINUX_LIVE}\nLABEL ${LABEL}\n" + + # Write the menu label if the syslinux menu is being use + if [ "${LH_SYSLINUX_MENU}" != "disabled" ] + then + LINUX_LIVE="${LINUX_LIVE}\tMENU LABEL ${MENULABEL}\n" + fi + LINUX_LIVE="${LINUX_LIVE}\tkernel /${KERNEL}\n" LINUX_LIVE="${LINUX_LIVE}\tappend initrd=/${INITRD} boot=${INITFS} LH_BOOTAPPEND_LIVE ${APPEND}\n" } @@ -250,8 +287,8 @@ 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" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}" -Syslinux_live_entry "live-failsafe" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}" "${FAILSAFE}" +Syslinux_live_entry "live" "${LH_SYSLINUX_MENU_LH_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}" +Syslinux_live_entry "live-failsafe" "${LH_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}" "${FAILSAFE}" if [ "`echo ${LH_LINUX_FLAVOURS} | wc -w`" -gt "1" ] then @@ -261,8 +298,8 @@ then KERNEL_VERSION="`echo ${KERNEL_IMAGE} | sed -e 's/vmlinuz-//'`" INITRD="initrd.img-${KERNEL_VERSION}" - Syslinux_live_entry "live-${KERNEL_VERSION}" "${KERNEL_IMAGE}" "${INITRD}" - Syslinux_live_entry "live-${KERNEL_VERSION}-failsafe" "${KERNEL_IMAGE}" "${INITRD}" "${FAILSAFE}" + Syslinux_live_entry "live-${KERNEL_VERSION}" "${LH_SYSLINUX_MENU_LIVE_ENTRY}" "${KERNEL_IMAGE}" "${INITRD}" + Syslinux_live_entry "live-${KERNEL_VERSION}-failsafe" "${LH_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY}" "${KERNEL_IMAGE}" "${INITRD}" "${FAILSAFE}" done fi @@ -308,16 +345,7 @@ LINUX_INSTALL="`/bin/echo ${LINUX_INSTALL} | sed -e 's/binary//g' -e 's#//#/#g'` # Assembling memtest configuration if [ -f "${DESTDIR_LIVE}"/memtest ] then - KERNEL_PATH="/`basename ${DESTDIR_LIVE}`/" - - # syslinux << 3.36 lacks support to file/path - if [ "`basename ${DESTDIR_LIVE}`" = "binary" ] - then - KERNEL_PATH="" - fi - - MEMTEST="LABEL memtest\n\tkernel ${KERNEL_PATH}memtest" - MEMTEST="`/bin/echo ${MEMTEST} | sed -e 's#//#/#g'`" + Syslinux_memtest_entry "memtest" "${LH_SYSLINUX_MENU_MEMTEST_ENTRY}" "memtest" fi case "${LH_BINARY_IMAGES}" in @@ -365,24 +393,44 @@ case "${LH_BINARY_IMAGES}" in mv binary/isolinux/syslinux.cfg binary/isolinux/isolinux.cfg + # Copying configuration file + if [ -n "${LH_SYSLINUX_CFG}" ] + then + cp "${LH_SYSLINUX_CFG}" binary/isolinux/isolinux.cfg + fi + # Copying local configuration file if [ -f config/binary_syslinux/syslinux.cfg ] then - cp config/binary_syslinux/syslinux.cfg binary/isolinux/isolinux.cfg + LH_SYSLINUX_SPLASH="config/binary_syslinux/splash.rle" fi - # Copying splash screen - if [ -f config/binary_syslinux/splash.rle ] + # Copying menu module + if [ "${LH_SYSLINUX_MENU}" != "disabled" ] then - LH_SYSLINUX_SPLASH="config/binary_syslinux/splash.rle" + MENUPATH="`grep 'menu.c32' binary/isolinux/isolinux.cfg | sed 's,DEFAULT\s*\(.*menu.c32\)$,\1,g'`" + MENUMODULE="`basename ${MENUPATH}`" + + mkdir -p binary/isolinux/"`dirname ${MENUPATH}`" + cp chroot/usr/lib/syslinux/"${MENUMODULE}" binary/isolinux/"`dirname ${MENUPATH}`" fi - if [ -n "${LH_SYSLINUX_SPLASH}" ] + # Copying splash screen + if [ -z "${LH_SYSLINUX_SPLASH}" ] || [ "${LH_SYSLINUX_SPLASH}" = "none" ] then - if [ "${LH_SYSLINUX_SPLASH}" = "none" ] + rm -f binary/isolinux/splash.rle + sed -i -e "s/.*splash.*//" binary/isolinux/boot.txt + else + if [ "${LH_SYSLINUX_MENU}" != "disabled" ] then - rm -f binary/isolinux/splash.rle - sed -i -e "s/.*splash.*//" binary/isolinux/boot.txt + SPLASHPATH="`grep -i 'MENU BACKGROUND' binary/isolinux/isolinux.cfg | sed 's,MENU\sBACKGROUND\s*\(.*\)$,\1,g'`" + if [ ! -e "${LH_SYSLINUX_SPLASH}" ] + then + Echo_error "${LH_SYSLINUX_SPLASH} doen't exist" + exit 1 + fi + mkdir -p binary/isolinux/"`dirname ${SPLASHPATH}`" + cp -f "${LH_SYSLINUX_SPLASH}" binary/isolinux/"${SPLASHPATH}" else cp -f "${LH_SYSLINUX_SPLASH}" binary/isolinux/splash.rle fi @@ -391,9 +439,15 @@ case "${LH_BINARY_IMAGES}" in # Configure syslinux templates sed -i -e "s@LINUX_LIVE@${LINUX_LIVE}@" -e "s@LINUX_INSTALL@${LINUX_INSTALL}@" -e "s@MEMTEST@${MEMTEST}@" binary/isolinux/isolinux.cfg sed -i -e "s#LH_BOOTAPPEND_INSTALL#${LH_BOOTAPPEND_INSTALL}#" -e "s#LH_BOOTAPPEND_LIVE#${LH_BOOTAPPEND_LIVE}#" binary/isolinux/isolinux.cfg - sed -i -e "s/LH_DISTRIBUTION/${LH_DISTRIBUTION}/" -e "s/LH_DATE/`date +%Y%m%d`/" -e "s/LH_MEDIA/CD-ROM/" binary/isolinux/f1.txt + if [ -e binary/isolinux/f1.txt ] + then + sed -i -e "s/LH_DISTRIBUTION/${LH_DISTRIBUTION}/" -e "s/LH_DATE/`date +%Y%m%d`/" -e "s/LH_MEDIA/CD-ROM/" binary/isolinux/f1.txt + fi sed -i -e "s/LH_MEDIA/CD-ROM/" binary/isolinux/f3.txt - sed -i -e "s/LH_VERSION/${VERSION}/" binary/isolinux/f10.txt + if [ -e binary/isolinux/f10.txt ] + then + sed -i -e "s/LH_VERSION/${VERSION}/" binary/isolinux/f10.txt + fi # Working arround syslinux 8.3 limitation if [ "`echo ${LH_LINUX_FLAVOURS} | wc -w`" -gt "1" ] -- cgit v1.0