Version 3 (modified by 8 years ago) ( diff ) | ,
---|
Grub Legacy for CLFS Builds
Needed Files
Grub Legacy ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz
256-byte inode Patch http://patches.clfs.org/dev/grub-0.97-256byte_inode-1.patch
EXT4 Patch http://patches.clfs.org/dev/grub-0.97-ext4-1.patch
Fixes Patch http://patches.clfs.org/dev/grub-0.97-fixes-1.patch
x86_64 Fixes Patch http://patches.clfs.org/dev/grub-0.97-use_mmap-1.patch
Apply the patches
These patches are required for both the boot method and the Final-System sections of the book.
patch -Np1 -i ../grub-0.97-use_mmap-1.patch patch -Np1 -i ../grub-0.97-fixes-1.patch patch -Np1 -i ../grub-0.97-256byte_inode-1.patch patch -Np1 -i ../grub-0.97-ext4-1.patch
Changes for Cross-Tools Section
This build is only required if you're using the Boot Method of the build.
Build Grub Legacy
./configure --prefix=/usr \ --build=${CLFS_HOST} --host=${CLFS_TARGET} make make DESTDIR=${CLFS} install mkdir -v ${CLFS}/boot/grub cp -v ${CLFS}/usr/lib/grub/*/stage{1,2} ${CLFS}/boot/grub
Changes to Final-System section
This build is only required for the final-system section of the book.
Build Grub Legacy
The 'make check' is optional.
./configure --prefix=/usr make make check make install mkdir -pv /boot/grub cp -v /usr/lib/grub/*/stage{1,2} /boot/grub
The FHS stipulates that the bootloader's configuration file should be symlinked to /etc/{Bootloader Name}. The bootloader's configuration file is created in the following section. To satisfy this requirement for GRUB, issue the following command:
mkdir -v /etc/grub && ln -sv /boot/grub/menu.lst /etc/grub
Installing Grub
GRUB uses its own naming structure for drives and partitions in the form of (hdn,m), where n is the hard drive number and m is the partition number, both starting from zero. For example, partition hda1 is (hd0,0) to GRUB and hdb3 is (hd1,2). In contrast to Linux, GRUB does not consider CD-ROM drives to be hard drives. For example, if using a CD on hdb and a second hard drive on hdc, that second hard drive would still be (hd1).
Using the above information, determine the appropriate designator for the root partition (or boot partition, if a separate one is used). For the following example, it is assumed that the root (or separate boot) partition is hda4.
After running the 'grub' command. tell GRUB where to search for its stage{1,2} files. The Tab key can be used everywhere to make GRUB show the alternatives. Install grub to the MBR and then quit.
grub root (hd0,3) setup (hd0) quit
Creating the Boot Menu
Create a "Boot Menu" for grub by defining the boot menu; ${CLFS} is only required if you are using the boot method.
cat > ${CLFS}/boot/grub/menu.lst << "EOF" # Begin /boot/grub/menu.lst # By default boot the first menu entry. default 0 # Allow 30 seconds before booting the default. timeout 30 # Use prettier colors. color green/black light-green/black # The first entry is for CLFS. title CLFS SVN-20100101 root (hd0,3) kernel /boot/clfskernel-2.6.30.5 root=/dev/hda4 EOF
Add an entry for the host distribution if desired. It might look like this:
cat >> ${CLFS}/boot/grub/menu.lst << "EOF" title Red Hat root (hd0,2) kernel /boot/kernel-2.6.5 root=/dev/hda3 initrd /boot/initrd-2.6.5 EOF
If dual-booting Windows, the following entry will allow booting it:
cat >> ${CLFS}/boot/grub/menu.lst << "EOF" title Windows rootnoverify (hd0,0) chainloader +1 EOF