7.12. GRUB-0.97

The GRUB package contains the GRand Unified Bootloader.

7.12.1. Installation of GRUB

GRUB has an issue that can cause it to segfault when you try to configure a drive to utilize GRUB on x86_64 machines. The following patch fixes this problem:

patch -Np1 -i ../grub-0.97-use_mmap-1.patch

GRUB has an issue where it sometimes doesn't detect the disk geometry correctly when used with Linux 2.6, resulting in the error message Error 24: Attempt to access block outside partition. The following patch contains a fix for this issue as well as various fixes for raid controllers and support for the new Intel Mac:

patch -Np1 -i ../grub-0.97-fixes-1.patch

This package is known to have issues when its default optimization flags (including the -march and -mcpu options) are changed. If any environment variables that override default optimizations have been defined, such as CFLAGS and CXXFLAGS, unset them when building GRUB.

Prepare GRUB for compilation:

CC="${CC} ${BUILD32}" ./configure --prefix=/usr \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}

Compile the package:

make

Install the package:

make DESTDIR=${CLFS} install
mkdir -v ${CLFS}/boot/grub
cp -v ${CLFS}/usr/lib/grub/*/stage{1,2} ${CLFS}/boot/grub

The x86_64-pc directory contains a number of *stage1_5 files, different ones for different file systems. Review the files available and copy the appropriate ones to the ${CLFS}/boot/grub directory. Most users will copy the e2fs_stage1_5 and/or reiserfs_stage1_5 files.

Details on this package are located in Section 10.68.2, “Contents of GRUB.”