This patch implements savedefault NUM which allows you to specify the next boot entry savedefault NUM

Installation
Download the patch from here
Download grub
Unpack the grub-0.93 archive

tar xzf grub-0.93.tar.gz

Apply the patch in the stage2 directory:

gunzip grub-0.93-stage2-builtins.diff.gz
cd grub-0.93/stage2
patch < ../../grub-0.93-stage2-builtins.diff.gz

Install grub

cd grub-0.93
./configure
make
make install
grub-install /dev/hda

For more information please see grub’s documentation

Example usage
Upgrading kernels on remote machines can be a trouble maker
the following configuration can save you from going to the office
and fix your machine (if you have the ability to power boot your machine)

/boot/grub/menu.lst
default saved
timeout 10
title RedHat - New Kernel
savedefault 1
root (hd0,0)
kernel /vmlinuz.new ro root=/dev/hda1
initrd /initrd.img
title RedHat - Old Kernel
savedefault 0
root (hd0,0)
kernel (hd0,0)
kernel /vmlinuz.old ro root=/dev/hda1
initrd /initrd.img
Modify the above values to fit your configuration

This will alternatively boot the two kernels, if your new kernel won’t work
you only need a reboot to bring the old kernel back.
If everything is ok you can change "default saved" to "default 0"
or "savedefault 1" to "savedefault" and it will continue to boot
with your new kernel.
FreeBSD Zope PostgreSQL djbDNS