From 69bf3cc142af6981c4fddf9664d25356313bbf84 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 5 Apr 2014 18:46:20 +0200 Subject: [PATCH] livedvd: implemented syslinux multilanguage menu --- platforms/livedvd-root/settings.inc | 3 +- platforms/livedvd/post.inc.sh | 117 +++++++++++++++++----------- platforms/livedvd/settings.inc | 2 +- 3 files changed, 74 insertions(+), 48 deletions(-) diff --git a/platforms/livedvd-root/settings.inc b/platforms/livedvd-root/settings.inc index bd06f27..621119d 100644 --- a/platforms/livedvd-root/settings.inc +++ b/platforms/livedvd-root/settings.inc @@ -1,6 +1,6 @@ PRODUCT_NAME=livedvd MEDIA=squash_xz -MULTITHREAD=1 +MULTILANGUAGE="en it es fr" if [ "$ARCH" = "i586" ]; then KERNEL_EXTRAVER=mamba @@ -12,7 +12,6 @@ elif [ "$ARCH" = "x86_64" ]; then KERNEL_PLATFORM="" #KERNEL_ADDITIONAL="vboxvideo" KERNEL_MORE_EXTRAVER= - MULTILANGUAGE="it en es fr" fi TARGET_HOSTNAME=openmamba-livedvd diff --git a/platforms/livedvd/post.inc.sh b/platforms/livedvd/post.inc.sh index e7022b4..a3ba71c 100644 --- a/platforms/livedvd/post.inc.sh +++ b/platforms/livedvd/post.inc.sh @@ -30,62 +30,85 @@ done buildinfo="`cat $MOUNTDIR/etc/openmamba-release` ${PLATFORM}" # configure isolinux boot loader -cat > $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF +cat > $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF PROMPT 0 TIMEOUT 20 DEFAULT vesamenu.c32 MENU TITLE ${buildinfo} (${KERNEL_MAJVER} kernel) MENU BACKGROUND openmamba.png MENU COLOR TITLE 1;32;49 #ff00993d #00000000 std + +LABEL - + MENU LABEL Please select system startup language: + MENU DISABLE _EOF ISOID= -for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do - cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF -LABEL default-${KERNEL_MAJVER}${K} -MENU LABEL default (${KERNEL_MAJVER}${K}) - kernel /boot/vmlinuz${ISOID} - append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 +for l in $MULTILANGUAGE; do + case $l in + "en") LABEL="English"; LOCALELANG="en_US.UTF-8"; VCONSOLEKEYMAP="us" ;; + "it") LABEL="Italiano"; LOCALELANG="it_IT.UTF-8"; VCONSOLEKEYMAP="it" ;; + "fr") LABEL="Français"; LOCALELANG="fr_FR.UTF-8"; VCONSOLEKEYMAP="fr" ;; + "es") LABEL="Español"; LOCALELANG="es_ES.UTF-8"; VCONSOLEKEYMAP="es" ;; + *) LABEL="$l" + esac + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF +MENU BEGIN $l + MENU LABEL $LABEL + MENU TITLE ${buildinfo} (${KERNEL_MAJVER} kernel) +_EOF + + ISOID= + for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF + LABEL default-${KERNEL_MAJVER}${K} + MENU LABEL default (${KERNEL_MAJVER}${K} $l) + kernel /boot/vmlinuz${ISOID} + append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP +_EOF + ISOID=$(($ISOID + 1)) + done + + echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 + ISOID= + for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF + LABEL vga800-${KERNEL_MAJVER}${K} + MENU LABEL VGA 800x600 no modeset (${KERNEL_MAJVER}${K} $l) + kernel /boot/vmlinuz${ISOID} + append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=789 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP nomodeset +_EOF + ISOID=$(($ISOID + 1)) + done + + ISOID= + for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF + LABEL vga1024-${KERNEL_MAJVER}${K} + MENU LABEL VGA 1024x768 no modeset (${KERNEL_MAJVER}${K} $l) + kernel /boot/vmlinuz${ISOID} + append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP nomodeset +_EOF + ISOID=$(($ISOID + 1)) + done + + echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 + ISOID= + for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF + LABEL debug-${KERNEL_MAJVER}${K} + MENU LABEL Debug mode (${KERNEL_MAJVER}${K} $l) + kernel /boot/vmlinuz${ISOID} + append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 locale.LANG=$LOCALELANG vconsole.keymap=$VCONSOLEKEYMAP rddebug nomodeset +_EOF + ISOID=$(($ISOID + 1)) + done + cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF +MENU END _EOF - ISOID=$(($ISOID + 1)) done -echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg -ISOID= -for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do - cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF -LABEL vga800-${KERNEL_MAJVER}${K} -MENU LABEL VGA 800x600 no modeset (${KERNEL_MAJVER}${K}) - kernel /boot/vmlinuz${ISOID} - append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=789 nomodeset -_EOF - ISOID=$(($ISOID + 1)) -done - -ISOID= -for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do - cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF -LABEL vga1024-${KERNEL_MAJVER}${K} -MENU LABEL VGA 1024x768 no modeset (${KERNEL_MAJVER}${K}) - kernel /boot/vmlinuz${ISOID} - append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 quiet splash vga=792 nomodeset -_EOF - ISOID=$(($ISOID + 1)) -done - -echo "MENU SEPARATOR" >> $MOUNTDIR2/boot/isolinux/isolinux.cfg -ISOID= -for K in $KERNEL_EXTRAVER $KERNEL_MORE_EXTRAVER; do - cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF -LABEL debug-${KERNEL_MAJVER}${K} -MENU LABEL Debug mode (${KERNEL_MAJVER}${K}) - kernel /boot/vmlinuz${ISOID} - append initrd=/boot/initrd${ISOID}.gz root=live:LABEL=${MAKEDIST_TARGET}_${PLATFORM} ro selinux=0 rddebug nomodeset -_EOF - ISOID=$(($ISOID + 1)) -done - -cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg << _EOF +cat >> $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 << _EOF MENU SEPARATOR LABEL memtest MENU LABEL Memory test @@ -97,13 +120,17 @@ LABEL - MENU DISABLE _EOF +# convert isolinux.cfg from UTF-8 to CP437 +iconv -f utf-8 -t cp437 $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 > $MOUNTDIR2/boot/isolinux/isolinux.cfg +rm -f $MOUNTDIR2/boot/isolinux/isolinux.cfg.utf8 + # install isolinux binary [ -e $MOUNTDIR/usr/share/syslinux/isolinux.bin ] && cp $MOUNTDIR/usr/share/syslinux/isolinux.bin $MOUNTDIR2/boot/isolinux/isolinux.bin || { echo "Error: /usr/share/syslinux/isolinux.bin not found. Please install the syslinux package."; exit 1; } # copy syslinux addons to final root /boot dir -cp $MOUNTDIR/usr/share/syslinux/{ldlinux,libcom32,libutil,vesamenu}.c32 $MOUNTDIR2/boot/isolinux/ +cp $MOUNTDIR/usr/share/syslinux/vesamenu.c32 $MOUNTDIR2/boot/isolinux/ # install memtest [ -e $MOUNTDIR/boot/memtest.bin ] && cp $MOUNTDIR/boot/memtest.bin $MOUNTDIR2/boot/isolinux/memtest || diff --git a/platforms/livedvd/settings.inc b/platforms/livedvd/settings.inc index c4feb19..2c8ef09 100644 --- a/platforms/livedvd/settings.inc +++ b/platforms/livedvd/settings.inc @@ -1,5 +1,5 @@ MEDIA=iso -MULTITHREAD=1 +MULTILANGUAGE="en it es fr" DISTROMATIC=off if [ "$ARCH" = "i586" ]; then