パッケージ構成
LFS ブックにおける 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.
LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。
ダウンロード (HTTP): https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz
ダウンロード MD5 sum: 60c564b1bdc39d8e43b3aab4bc0fb140
ダウンロードサイズ: 6.4 MB
必要ディスク容量: 183 MB
概算ビルド時間: 0.4 SBU (on 64-bit LFS, using parallelism=4)
Unicode font data used to display GRUB menu
ダウンロード (HTTP): https://unifoundry.com/pub/unifont/unifont-15.1.04/font-builds/unifont-15.1.04.pcf.gz
ダウンロード MD5 sum: 72f95e7ecb47a4c7ed610babe6959ead
ダウンロードサイズ: 1.3 MB
GCC (only needed if building on 32-bit LFS)
Refer to GCC-13.2.0 page for download info.
efibootmgr-18 (runtime) and FreeType-2.13.2
まずは root
ユーザーになってフォントデータをインストールします。
mkdir -pv /usr/share/fonts/unifont && gunzip -c ../unifont-15.1.04.pcf.gz > /usr/share/fonts/unifont/unifont.pcf
ビルドに影響が出ないように環境変数をリセットします。
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
If you are running a 32-bit LFS, prepare a 64-bit compiler:
case $(uname -m) in i?86 )
tar xf ../gcc-13.2.0.tar.xz
mkdir gcc-13.2.0/build
pushd gcc-13.2.0/build
../configure --prefix=$PWD/../../x86_64-gcc \
--target=x86_64-linux-gnu \
--with-system-zlib \
--enable-languages=c,c++ \
--with-ld=/usr/bin/ld
make all-gcc
make install-gcc
popd
export TARGET_CC=$PWD/x86_64-gcc/bin/x86_64-linux-gnu-gcc
esac
以下のコマンドを実行して GRUB をビルドします。
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-efiemu \ --enable-grub-mkfont \ --with-platform=efi \ --target=x86_64 \ --disable-werror && unset TARGET_CC && make
本パッケージには有効な結果となるテストスイートは含まれていません。
root
ユーザーになって以下を実行します。
make install && mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
--enable-grub-mkfont
: Build
the tool named grub-mkfont to generate the font
file for the boot loader from the font data we've installed.
If the recommended dependency FreeType-2.13.2 is not installed, it is possible to omit this option and build GRUB. However, if grub-mkfont is not built, or the unicode font data is not available at the time GRUB is built, GRUB won't install any font for the boot loader. The GRUB boot menu will be displayed using a coarse font or in a smaller region on the screen.
--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.
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.
LFS ブックにおける GRUB のページを参照してください。