8.64. GRUB-2.14

GRUB 软件包包含 “大统一” (GRand Unified) 启动引导器。

[注意]

注意

本页面被分为若干节,每节为一种引导方案 (BIOS, 64 位 UEFI,以及 32 位 UEFI) 安装该软件包。GRUB 无法一次为所有引导方案构建。

可以跳过不需要的引导方案。如果不确定需要哪种引导方案,可以全部安装,但会需要更多构建时间。为您使用的引导方案安装 GRUB 后,即可继续构建本章中的其他软件包。使用 GRUB 引导系统的配置将在 第 10.4 节 “使用 GRUB 设定引导过程” 中讨论。

[警告]

警告

移除所有可能影响构建的环境变量:

unset {C,CPP,CXX,LD}FLAGS

不要尝试使用自定义的编译选项优化该软件包。该软件包是一个引导加载器,其源代码中的低级操作可能被一些激进的优化所破坏。

估计构建时间: 0.3 SBU
需要硬盘空间: 202 MB

8.64.1. 为 BIOS 安装 GRUB

首先,修复 grub-2.14 引入的问题:

sed 's/--image-base/--nonexist-linker-option/' -i configure

准备编译 GRUB:

./configure --prefix=/usr     \
            --sysconfdir=/etc \
            --disable-efiemu  \
            --disable-werror

新的配置选项的含义:

--disable-werror

该选项允许在有较新的 Flex 版本导致的警告时完成构建。

--disable-efiemu

该选项通过禁用 LFS 不需要的特性和测试程序,最小化需要构建的内容。

编译该软件包:

make

不推荐运行该软件包的测试套件。许多测试依赖于在 LFS 的有限环境中不存在的软件包。如果一定要进行测试,运行 make check

安装该软件包:

make install

8.64.2. 为 64 位 UEFI 安装 GRUB

如果需要使用 64 位 UEFI 引导系统,则需要为支持它构建 GRUB。

首先,如果已经在上一节中构建了 GRUB,清理源代码树:

make clean

现在配置 GRUB 以支持 64 位 UEFI:

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

新的配置选项的含义:

--target=x86_64

该选项指定 UEFI 固件的架构为 x86_64,使得 GRUB 被构建为该架构的目标代码。

--with-platform=efi

该选项指定为 EFI 平台构建 GRUB。它和 --target=x86_64 一起,使得 GRUB 可在 x86_64-efi 平台工作。

编译该软件包的 64 位 UEFI 支持:

make

安装 64 位 UEFI 支持:

make install

8.64.3. 为 32 位 UEFI 安装 GRUB

如果需要使用极其少见的 32 位 UEFI 引导系统,则需要为支持它构建 GRUB:

首先,如果已经在上一节中构建了 GRUB,清理源代码树:

make clean

现在配置 GRUB 以支持 32 位 UEFI:

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

新的配置选项的含义:

--target=i386

该选项指定 UEFI 固件的架构为 i386(32 位 x86),使得 GRUB 被构建为该架构的目标代码。它和 --with-platform=efi 一起,使得 GRUB 能在 i386-efi 平台工作。

编译该软件包的 32 位 UEFI 支持:

make

安装 32 位 UEFI 支持:

make install

8.64.4. GRUB 的内容

安装的程序: grub-bios-setup, grub-editenv, grub-file, grub-fstest, grub-glue-efi, grub-install, grub-kbdcomp, grub-macbless, grub-menulst2cfg, grub-mkconfig, grub-mkimage, grub-mklayout, grub-mknetdir, grub-mkpasswd-pbkdf2, grub-mkrelpath, grub-mkrescue, grub-mkstandalone, grub-ofpathname, grub-probe, grub-reboot, grub-render-label, grub-script-check, grub-set-default, grub-sparc64-setup, 以及 grub-syslinux2cfg
安装的目录: /usr/lib/grub, /etc/grub.d, /usr/share/grub, 以及 /boot/grub (在初次运行 grub-install 时安装)
[注意]

注意

/usr/lib/grub 的内容和您之前安装的 GRUB 平台支持相关。具体来说,它会包含为每个平台构建的 GRUB 模块。

简要描述

grub-bios-setup

是 grub-install 使用的辅助程序

grub-editenv

是一个用于编辑环境块的工具

grub-file

检验文件是否是给定类型

grub-fstest

是一个调试文件系统驱动程序的工具

grub-glue-efi

将 32 位和 64 位二进制文件结合成一个文件 (以便在 Apple 生产的机器使用)。

grub-install

在您的驱动器上安装 GRUB

grub-kbdcomp

是一个脚本,用于将 xkb 布局转化为 GRUB 能够识别的格式

grub-macbless

是 Mac 风格的,用于 HFS 和 HFS+ 文件系统的 bless 程序 (bless 仅用于 Apple 生产的机器;它能将设备变得可引导)

grub-menulst2cfg

将经典的 GRUB menu.lst 转化为 grub.cfg 以供 GRUB 2 使用

grub-mkconfig

生成一个 grub.cfg 文件

grub-mkimage

创建 GRUB 可引导镜像

grub-mklayout

生成 GRUB 键盘布局文件

grub-mknetdir

准备 GRUB 网络启动目录

grub-mkpasswd-pbkdf2

生成用于引导菜单的加密 PBKDF2 密码

grub-mkrelpath

生成相对于根目录的系统路径名称

grub-mkrescue

为软盘,CDROM/DVD,或 USB 设备创建 GRUB 可引导镜像

grub-mkstandalone

生成独立 (包含所有模块) 的镜像

grub-ofpathname

打印 GRUB 设备路径的帮助程序

grub-probe

探测给定路径或设备的信息

grub-reboot

仅为下次启动设置 GRUB 默认引导项

grub-render-label

为 Apple Mac 设置 Apple .disk_label

grub-script-check

在 GRUB 配置脚本中检查语法错误

grub-set-default

设置 GRUB 默认引导项

grub-sparc64-setup

grub-setup 使用的帮助程序

grub-syslinux2cfg

将 syslinux 配置文件转换为 grub.cfg 格式