Package: grub-pc Version: 1.98-1 Severity: wishlist Tags: patch
/etc/grub.d/10_linux generates menu entries for each kernel found in /boot and I believe that 10_hurd should do the same for each gnumach kernel. reportbug was so kind as to include an example configuration created using my patch. -- Package-specific info: *********************** BEGIN /boot/grub/device.map (hd0) /dev/hd0 *********************** END /boot/grub/device.map *********************** BEGIN /boot/grub/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ ${prev_saved_entry} ]; then set saved_entry=${prev_saved_entry} save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z ${boot_once} ]; then saved_entry=${chosen} save_env saved_entry fi } insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x480 insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm fi fi insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb set locale_dir=($root)/boot/grub/locale set lang=en insmod gettext set timeout=5 ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_hurd ### menuentry "Debian GNU/Hurd using gnumach.gz" --class debian --class gnu --class os { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading GNU Mach ... multiboot /boot/gnumach.gz root=device:hd0s1 insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading the Hurd ... module /hurd/ext2fs.static ext2fs --readonly \ --multiboot-command-line='${kernel-command-line}' \ --host-priv-port='${host-port}' \ --device-master-port='${device-port}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(task-create)' '$(task-resume)' module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' } menuentry "Debian GNU/Hurd using gnumach.gz (recovery mode)" { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading GNU Mach ... multiboot /boot/gnumach.gz root=device:hd0s1 -s insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading the Hurd ... module /hurd/ext2fs.static ext2fs \ --multiboot-command-line='${kernel-command-line}' \ --host-priv-port='${host-port}' \ --device-master-port='${device-port}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(task-create)' '$(task-resume)' module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' } menuentry "Debian GNU/Hurd using gnumach-dde.gz" --class debian --class gnu --class os { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading GNU Mach ... multiboot /boot/gnumach-dde.gz root=device:hd0s1 insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading the Hurd ... module /hurd/ext2fs.static ext2fs --readonly \ --multiboot-command-line='${kernel-command-line}' \ --host-priv-port='${host-port}' \ --device-master-port='${device-port}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(task-create)' '$(task-resume)' module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' } menuentry "Debian GNU/Hurd using gnumach-dde.gz (recovery mode)" { insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading GNU Mach ... multiboot /boot/gnumach-dde.gz root=device:hd0s1 -s insmod ext2 set root='(hd0,1)' search --no-floppy --fs-uuid --set 7b000b7e-e74e-4b03-bbda-415153fb62eb echo Loading the Hurd ... module /hurd/ext2fs.static ext2fs \ --multiboot-command-line='${kernel-command-line}' \ --host-priv-port='${host-port}' \ --device-master-port='${device-port}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(task-create)' '$(task-resume)' module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' } ### END /etc/grub.d/10_hurd ### ### BEGIN /etc/grub.d/30_os-prober ### ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ### *********************** END /boot/grub/grub.cfg -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: hurd-i386 (i686-AT386) Kernel: GNU-Mach 1.3.99/Hurd-0.3 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages grub-pc depends on: ii debconf [debconf-2.0] 1.5.32 Debian configuration management sy ii grub-common 1.98-1 GRand Unified Bootloader, version ii libc0.3 2.10.2-7 Embedded GNU C Library: Shared lib ii ucf 3.0025 Update Configuration File: preserv grub-pc recommends no packages. Versions of packages grub-pc suggests: pn desktop-base <none> (no description available) -- debconf information: grub-pc/kopt_extracted: false grub2/kfreebsd_cmdline: grub2/kfreebsd_cmdline_default: quiet * grub-pc/install_devices: grub-pc/postrm_purge_boot_grub: false grub2/linux_cmdline_default: quiet grub-pc/chainload_from_menu.lst: true * grub2/linux_cmdline:
--- /root/10_hurd 2010-05-12 16:42:12.000000000 +0000 +++ /etc/grub.d/10_hurd 2010-05-12 16:58:27.000000000 +0000 @@ -35,13 +35,13 @@ # FIXME: add l4 here? kernel= -for i in /boot/gnumach.gz /boot/gnumach ; do +for i in /boot/gnumach.gz /boot/gnumach /boot/gnumach?*.gz ; do if test -e $i ; then basename=`basename $i` dirname=`dirname $i` rel_dirname=`make_system_path_relative_to_its_root $dirname` echo "Found GNU Mach: $i" >&2 - kernel=${rel_dirname}/${basename} + kernels="${kernels} ${rel_dirname}/${basename}" at_least_one=true fi done @@ -71,17 +71,22 @@ exit 1 fi -cat << EOF -menuentry "${OS}" ${CLASS} { +for kernel in ${kernels} +do + kernel_base="`basename "${kernel}"`" + KERNEL="using ${kernel_base}" + + cat << EOF +menuentry "${OS} ${KERNEL}" ${CLASS} { EOF -prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" + prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" cat << EOF echo $(gettext "Loading GNU Mach ...") multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} EOF -save_default_entry | sed -e "s/^/\t/" -prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" -cat << EOF + save_default_entry | sed -e "s/^/\t/" + prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" + cat << EOF echo $(gettext "Loading the Hurd ...") module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\ --multiboot-command-line='\${kernel-command-line}' \\ @@ -93,17 +98,17 @@ } EOF -cat << EOF -menuentry "${OS} (recovery mode)" { + cat << EOF +menuentry "${OS} ${KERNEL} (recovery mode)" { EOF -prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" -cat << EOF + prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" + cat << EOF echo $(gettext "Loading GNU Mach ...") multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} -s EOF -save_default_entry | sed -e "s/^/\t/" -prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" -cat << EOF + save_default_entry | sed -e "s/^/\t/" + prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/" + cat << EOF echo $(gettext "Loading the Hurd ...") module /hurd/${hurd_fs}.static ${hurd_fs} \\ --multiboot-command-line='\${kernel-command-line}' \\ @@ -114,3 +119,5 @@ module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)' } EOF + +done