GRUB-2.06 pour EFI

Introduction à GRUB

Le paquet Grub contient un chargeur de démarrage, le GRand Unified Bootloader. Dans cette page il sera construit avec la prise en charge d'UEFI, qui n'était pas activée dans le GRUB construit dans LFS.

This package is known to build and work properly using an LFS 11.3 platform.

Informations sur le paquet

  • Téléchargement (HTTP) : https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz

  • Téléchargement (FTP) :

  • Somme de contrôle MD5 : cf0fd928b1e5479c8108ee52cb114363

  • Taille du téléchargement : 6.3 Mo

  • Estimation de l'espace disque requis : 137 Mo

  • Estimation du temps de construction : 1,0 SBU (sur une LFS 64 bits)

Téléchargements supplémentaires

Données de polices unicode utilisées pour afficher le menu de GRUB

GCC (seulement requis si vous construisez sur une LFS 32 bits)

Dépendances de GRUB

Recommandées

Facultatives

LVM2-2.03.18

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/grub-efi

Installation de GRUB

Tout d'abord, installez les données de police en tant qu'utilisateur root :

mkdir -pv /usr/share/fonts/unifont &&
gunzip -c ../unifont-15.0.01.pcf.gz > /usr/share/fonts/unifont/unifont.pcf
[Avertissement]

Avertissement

Nettoyez les variables d'environnement qui peuvent affecter la construction :

unset {C,CPP,CXX,LD}FLAGS

N'essayez pas de « régler » ce paquet avec des drapeaux de compilation personnalisés : ce paquet est un chargeur d'amorçage, avec des opérations de bas-niveau dans le code source qui seront sans doute cassées par certaines optimisations agressives.

Corrigez un problème qui fait échouer grub-install lorsque la partition /boot (ou la partition racine si /boot n'est pas une partition séparée) est créée par e2fsprogs-1.47.0 ou supérieur.

patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch

Si vous êtes sur une LFS 32 bits, préparez un compilateur 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

Construisez GRUB avec les commandes suivantes :

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

Ce paquet n'a pas de suite de tests qui fournisse des résultats intéressants.

Maintenant, en tant qu'utilisateur root :

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

Explication des commandes

--enable-grub-mkfont : construit l'outil grub-mkfont pour générer le fichier de polices pour le chargeur d'amorçage à partir des données de police qu'on a installées.

[Avertissement]

Avertissement

Si vous n'avez pas installé la dépendance recommandée FreeType-2.13.0, il est possible d'omettre cette option et de construire GRUB. Cependant, si grub-mkfont n'est pas construit ou que les données de police unicode ne sont pas disponibles quand GRUB est construit, GRUB n'installera aucune police pour le chargeur d'amorçage. Le menu de démarrage de GRUB sera affiché avec une police grossière et les premières étapes d'initialisation du noyau se feront en « mode aveugle » — vous ne pourrez pas voir les messages du noyau avant l'initialisation du pilote de carte graphique. Il sera compliqué de diagnostiquer certains problèmes de démarrage, surtout si le pilote graphique est construit en tant que module.

--with-platform=efi : s'assure de construire GRUB avec EFI activé.

--target=x86_64 : s'assure de construire GRUP pour x86_64 même si vous construisez sur une LFS 32 bits. La plupart des firmware sur x86_64 ne prennent pas en charge les chargeurs d'amorçage en 32 bits.

--target=i386 : quelques plateformes x86 32 bits prennent EFI en charge. En plus, certaines plateformes x86_64 ont une implémentation EFI en 32 bits, mais ils sont très vieux et très rares. Utilisez ceci au lieu de --target=x86_64 si vous êtes absolument certain que LFS tourne sur un tel système.

Configuration de GRUB

On discute de comment utiliser GRUB pour rendre le système LFS amorçable sur une plateforme UEFI sur Utiliser GRUB pour paramétrer le processus de démarrage avec UEFI.

Contents

Voir la page pour GRUB dans le livre LFS.