Advanced Grub

Grub is a capable boot loader. This document is intended to capture some of its most interesting features and try to explain them a bit better than the texinfo documentation.

Debian Grub

The Debian grub packages do not have networking enabled, so you have to apt-get the source, modify the debian/rules file to include --enable-network-card and dpkg-buildpackage to get a .deb of grub that supports TFTP.

  1. cd /usr/src/debian
  2. apt-get source grub
  3. cd grub-_VERSION_
  4. Add --enable-tulip or similar for your NIC to the ./configure line of the configure-stamp target in the debian/rules file.
  5. dpkg-buildpackage (as root)
  6. cd ..
  7. dpkg -i grub*.deb
  8. cp /lib/grub/_ARCH_/* /boot/grub/, e.g., ARCH is i386-pc
  9. Edit your /boot/grub/menu.lst (see below)
  10. If your boot disk is /dev/hda ==> grub-install (hd0)

TFTP Boot

Using trivial ftp to load a kernel is one of the best features of Grub. Here is how it is done.

The menu.lst can look something like this:

ifconfig --address=192.168.1.2 --server=192.168.1.1
root (nd)
kernel /gnu/boot/oskit-mach.gz root=device:hd0s2 --
root (hd0,1)
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)