Making the LFS system bootable

Now that we have our shiny new Linux-From-Scratch system completed, we need to ensure we can boot it. To do this, we will run the grub program.

grub

Grub uses its own naming structure for drives, in the form of (hdn,m), where n is the hard drive number, and m is the partition number, both of which start from zero. So, partition hda1 would be (hd0,0) to Grub, and hdb2 would be (hd1,1). Also, Grub doesn't pay attention to CD-ROM drives at all, so if, for example, you have a CD on hdb, and a second hard drive on hdc, partitions on that second hard drive would still be (hd1,m).

So, using the information above, select the appropriate designator for your root partition. For the purposes of this, we will assume (hd0,3) for your root partition. First, we tell grub where to find its files:

root (hd0,3)
setup (hd0)
quit

This tells Grub to look for its files on hda4 (hd0,3), and install itself into the MBR (Master Boot Record) of hda.

Also, we need to create the menu.lst file, which Grub uses to designate its boot menu:

cat > /boot/grub/menu.lst << "EOF"
# Begin /boot/grub/menu.lst

# Default to first menu entry
default 0

# Allow 30 seconds before booting default
timeout 30

# Use prettier colors
color green/black light-green/black

# Default Entry for LFS
title LFS 5.0
root (hd0,3)
kernel /boot/lfskernel root=/dev/hda4 ro
EOF

You might also want to add in an entry for your host distribution. It might look similar to this:

cat >> /boot/grub/menu.lst << "EOF"
# Redhat Linux
title Redhat
root (hd0,2)
kernel /boot/kernel-2.4.20 root=/dev/hda3 ro
initrd /boot/initrd-2.4.20
EOF

Also, if you happen to dual-boot Windows, the following entry should allow booting it:

cat >> /boot/grub/menu.lst << "EOF"
# Windows
title Windows
rootnoverify (hd0,0)
chainloader +1
EOF

You can find more information regarding Grub on its website, located at: http://www.gnu.org/software/grub.