Conteúdo
Veja-se a página para o GRUB no livro LFS.
O pacote GRUB fornece o GRand Unified Bootloader. Nesta página, ele será construído com suporte UEFI, que não está habilitado para o GRUB construído no LFS.
Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.
Transferência (HTTP): https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz
Soma de verificação MD5 da transferência: cf0fd928b1e5479c8108ee52cb114363
Tamanho da transferência: 6,3 MB
Espaço em disco estimado exigido: 137 MB
Tempo de construção estimado: 1,0 UPC (no LFS de 64 bits)
Dados de fonte Unicode usados para exibir o menu do GRUB
Transferência (HTTP): https://unifoundry.com/pub/unifont/unifont-15.0.01/font-builds/unifont-15.0.01.pcf.gz
Soma de verificação MD5 da transferência: c371b9b4a8a51228c468cc7efccec098
Tamanho da transferência: 1,4 MB
GCC (necessário somente se construir no LFS de 32 bits)
Transferência (HTTP): https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.xz
Soma de verificação MD5 da transferência: 73bafd0af874439dcdb9fc063b6fb069
Tamanho da transferência: 81 MB
efibootmgr-18 (tempo de execução) e FreeType-2.13.0
Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/grub-efi
Primeiro, instale os dados da fonte como o(a) usuário(a)
root
:
mkdir -pv /usr/share/fonts/unifont && gunzip -c ../unifont-15.0.01.pcf.gz > /usr/share/fonts/unifont/unifont.pcf
Desconfigure quaisquer variáveis de ambiente que possivelmente afetem a construção:
unset {C,CPP,CXX,LD}FLAGS
Não tente “ajustar” esse pacote com sinalizadores personalizados de compilação: esse pacote é um carregador de inicialização, com operações de baixo nível no código-fonte, as quais provavelmente sejam quebradas por algumas otimizações agressivas.
Corrija um problema que faz com que grub-install falhe quando a
partição /boot
(ou a partição raiz,
se /boot
não for uma partição
separada) é criada pelo e2fsprogs-1.47.0 ou posterior:
patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch
Se você estiver executando um LFS de 32 bits, [então] prepare um compilador de 64 bits:
case $(uname -m) in i?86 )
tar xf ../gcc-12.2.0.tar.xz
mkdir gcc-12.2.0/build
pushd gcc-12.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
Construa o GRUB com os seguintes comandos:
./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-efiemu \ --enable-grub-mkfont \ --with-platform=efi \ --target=x86_64 \ --disable-werror && unset TARGET_CC && make
Esse pacote não tem uma suíte de teste que forneça resultados significativos.
Agora, como o(a) usuário(a) root
:
make install && mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
--enable-grub-mkfont
:
Construa a ferramenta chamada grub-mkfont para gerar o arquivo
de fonte para o carregador de inicialização a partir dos dados de
fonte que instalamos.
Se a dependência recomendada FreeType-2.13.0 não estiver instalada, [então] é possível omitir essa opção e construir o GRUB. No entanto, se o grub-mkfont não fosse construído ou os dados da fonte Unicode não estivessem disponíveis ao tempo que o GRUB for construído, [então] o GRUB não instalaria nenhuma fonte para o carregador de inicialização. O menu de inicialização do GRUB será exibido usando uma fonte grosseira e o estágio inicial da inicialização do núcleo será em “modo cego” — você não consegue ver nenhuma mensagem do núcleo antes que o controlador da placa gráfica seja inicializado. Será muito difícil diagnosticar alguns problemas de inicialização, especialmente se o controlador gráfico for construído como módulo.
--with-platform=efi
:
Garante a construção do GRUB com EFI habilitado.
--target=x86_64
: Garante a
construção do GRUB para x86_64, mesmo se construir em um sistema
LFS de 32 bits. A maioria dos firmwares EFI em x86_64 não suporta
carregadores de inicialização de 32 bits.
--target=i386
: Algumas plataformas x86
de 32 bits tem suporte EFI. E algumas plataformas x86_64 tem uma
implementação EFI de 32 bits, mas são muito antigas e raras. Use
isso ao invés de --target=x86_64
se você estiver
absolutamente seguro(a)
de que o LFS está executando em tal sistema.
Usar o GRUB para tornar o sistema LFS inicializável na plataforma UEFI será discutido em Usando o GRUB para Configurar o Processo de Inicialização com UEFI.
Veja-se a página para o GRUB no livro LFS.