#### Beyond Linux® From Scratch (System V Edition) - Version r12.4-737

### Chapter 5. File Systems and Disk Management

- Prev

  efibootmgr-18

- Next

  Using GRUB to Set Up the Boot Process with UEFI

- Up
- Home

# GRUB-2.12 for EFI

## Introduction to GRUB

The GRUB package provides GRand Unified Bootloader. In this page it will be built with UEFI support, which is not enabled for GRUB built in LFS.

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz

- Download MD5 sum: 60c564b1bdc39d8e43b3aab4bc0fb140

- Download size: 29 MB

- Estimated disk space required: 174 MB (with optional dependencies and download)

- Estimated build time: 0.6 SBU

### Additional Downloads

Optional Unicode font data for the GRUB menu (only useful if FreeType is installed)

- Download (HTTP): https://unifoundry.com/pub/unifont/unifont-17.0.01/font-builds/unifont-17.0.01.pcf.gz

- Download MD5 sum: c3fbc239da0fb49a9afc9b141f606ad4

- Download size: 1.3 MB

### GRUB Dependencies

#### Recommended

efibootmgr-18 (runtime)

#### Optional

FreeType-2.14.1, Fuse-3.17.4, and LVM2-2.03.37

If you are building GRUB for a 32-bit LFS system to boot it on a 64-bit UEFI firmware, rebuild GCC-15.2.0 with the `--enable-targets=all` switch appended to the ../configure command.

## Installation of GRUB

First, install font data as the `root` user if you've downloaded it and you've installed the optional dependency FreeType-2.14.1:

    mkdir -pv /usr/share/fonts/unifont &&
    zcat ../unifont-17.0.01.pcf.gz > /usr/share/fonts/unifont/unifont.pcf

### Warning

Unset any environment variables which may affect the build:

    unset {C,CPP,CXX,LD}FLAGS

Don't try “tuning” this package with custom compilation flags: this package is a bootloader, with low-level operations in the source code which is likely to be broken by some aggressive optimizations.

Add a file missing from the release tarball:

    echo depends bli part_gpt > grub-core/extra_deps.lst

Build GRUB with the following commands:

    ./configure --prefix=/usr        \
                --sysconfdir=/etc    \
                --disable-efiemu     \
                --with-platform=efi  \
                --target=x86_64      \
                --disable-werror     &&
    make

This package does not have a test suite providing meaningful results.

Now, if you've skipped the LFS GRUB package, as the `root` user install GRUB and skip the remaining instructions in this section:

    make install &&
    mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions

If you've not skipped LFS GRUB package, as the `root` user, only install the components not installed from the LFS GRUB package instead:

    make -C grub-core install

If you've installed the optional font data and FreeType-2.14.1, install the grub-mkfont program and the font data files (without the font data files GRUB can still function normally, but the boot menu will be displayed using a coarse font or in a smaller region on the screen).

    install -vm755 grub-mkfont /usr/bin/ &&
    install -vm644 ascii.h widthspec.h *.pf2 /usr/share/grub/

If both Fuse-3.17.4 and LVM2-2.03.37 are installed, also install the grub-mount program:

    install -vm755 grub-mount /usr/bin/

## Command Explanations

`--with-platform=efi`: Ensures building GRUB with EFI enabled.

`--target=x86_64`: Ensures building GRUB for x86_64 even if building on a 32-bit LFS system. Most EFI firmware on x86_64 does not support 32-bit bootloaders.

`--target=i386`: A few 32-bit x86 platforms have EFI support. And, some x86_64 platforms have a 32-bit EFI implementation, but they are very old and rare. Use this instead of `--target=x86_64` if you are absolutely sure that LFS is running on such a system.

## Configuring GRUB

Using GRUB to make the LFS system bootable on UEFI platform will be discussed in Using GRUB to Set Up the Boot Process with UEFI.

## Contents

A list of the installed files, along with their short descriptions can be found at ../../../../lfs/view/development/chapter08/grub.html#contents-gRUB.

Listed below are the newly installed programs along with short descriptions.

Installed Programs: grub-mkfont and grub-mount (optional)
Installed Directories: /usr/lib/grub/x86_64-efi

### Short Descriptions

grub-mkfont | converts common font file formats into PF2
grub-mount | is a debug tool for filesystem driver

- Prev

  efibootmgr-18

- Next

  Using GRUB to Set Up the Boot Process with UEFI

- Up
- Home