http://www.gnu.org/software/grub/

This section complements the ?InstallNotes with complete information regarding the GRUB 2 boot loader. The syntax is different from GRUB Legacy aka GRUB 1 (see below).

  • update-grub is Debian specific and very useful. It will automatically create a /boot/grub/grub.cfg file for the kernels in /boot/ and for OSes that it finds on various partitions, including GNU/Hurd.

  • Make sure that GRUB 2's version is at least 20091130 and GNU Mach's version is at least 20091020.

  • Sample file:

    menuentry "GNU/Linux" {
        insmod ext2
        set root=(hd0,12)
        linux      /boot/vmlinuz-2.6.32 root=/dev/hda12 ro
        initrd     /boot/initrd.img-2.6.32
    }
    
    
    menuentry "GNU" {
        insmod ext2
        set root=(hd0,16)
        multiboot /boot/gnumach.gz root=device:hd0s16
        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)'
    }
    

The following information may be outdated and should be revised.

This section complements the ?InstallNotes with complete information regarding the GRUB boot loader. The syntax is different from Lilo's and so to scratch my own itch I'm creating this quick reference. The Grub manual is another good reference.

  • update-grub is Debian specific and very nice. It will automatically create a /boot/grub/menu.lst file for the kernels in /boot/. It will also append a manually configured set for other partitions like the GNU/Hurd.
  • grub-floppy is a Debian specific boot floppy creation script.
  • mkbimage is a Debian specific boot disk image creation script.
  • http://khazad.dyndns.org/packages/grub-disk/ contains a Debian packaged makefile for creating CD & floppy images. Looks like it doesn't work properly. If you fix it, please send patches to the maintainer.
  • essential GRUB commands & disk syntax
    • root
    • kernel
    • module
    • boot
  • sample file

    title      GNU/Linux
    root       (hd0,11)
    kernel     /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
    initrd     /boot/initrd.img-2.4.18
    savedefault
    
    
    title      GNU
    root       (hd0,15)
    kernel     /boot/oskit-mach root=device:hd0s16 --
    module     /hurd/ext2fs.static                              \
               --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 /hurd/exec $(exec-task=task-create)
    savedefault
    
    
    title           DOS
    rootnoverify    (hd0,0)
    chainloader +1
    

-- ?GrantBow - 01 Oct 2002
-- ?GrantBow - 22 Dec 2002

Another example, just as good, but a lot easier to read. The backslash at the end of each line is to "escape" the enter-key. So make sure there are no spaces following the backslashes!

title GNU/Linux (Linux 2.4.18)
   root            (hd0,11)
   kernel          /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
   initrd          /boot/initrd.img-2.4.18
   savedefault

title GNUmach 1.3
   root (hd0,1)
   kernel /boot/gnumach.gz root=device:hd0s2
   module /hurd/ext2fs.static --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 /hurd/exec $(exec-task=task-create)

title GNUmach 1.90 (CVS)
   root (hd0,1)
   kernel /boot/oskit-mach.gz root=device:hd0s2 --
   module /hurd/ext2fs.static --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 /hurd/exec $(exec-task=task-create)

Note the differences between GNUmach and OSKit-Mach. The latter needs the two dashes after the root specification!

-- ?JoachimNilsson - 09 Nov 2002