Si votre système prend en charge l'UEFI et que vous souhaitez démarrer LFS en UEFI, vous devriez sauter cette page, et configurer GRUB avec la prise en charge de l'UEFI avec les instructions de la page BLFS.
Une mauvaise configuration de GRUB peut rendre votre système inutilisable si vous n'avez pas d'autre périphérique d'amorçage comme un cédérom. Cette section n'est pas obligatoire pour démarrer votre système LFS. Il se peut que vous vouliez simplement modifier votre chargeur de démarrage actuel, comme Grub-Legacy, GRUB2 ou LILO.
Assurez-vous d'avoir un disque de démarrage de façon à pouvoir
« dépanner » l'ordinateur si celui-ci
devenait inutilisable (non amorçable). Si vous n'avez pas déjà de
périphérique de démarrage, vous pouvez en créer un. Afin que la
procédure ci-dessous fonctionne, vous devez faire un tour du côté
de BLFS et installer xorriso
qui est dans le paquet
libisoburn.
cd /tmp grub-mkrescue --output=grub-img.iso xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
GRUB utilise sa propre nomenclature de disques et partitions, de la
forme (hdn,m), où
n est le numéro du disque
dur et m le numéro de la
partition. Le numéro du disque dur commence à zéro, mais le numéro
de la partition commence à un pour les partitions normales et à
cinq pour les partitions étendues. Remarquez que ceci diffère des
versions précédentes où les deux numéros commençaient à zéro. Par
exemple, les partitions sda1
correspond à (hd0,1) pour
GRUB et sdb3
correspond à
(hd1,3). Contrairement à
Linux, GRUB ne considère pas les lecteurs de cédérom comme des
disques durs. Par exemple, si un CD se trouve sur hdb
et un second disque dur sur hdc
, ce dernier disque sera malgré tout
(hd1)."
GRUB fonctionne en écrivant les données sur le premier secteur physique du disque dur. Ce secteur ne fait partie d'aucun système de fichiers. Les programmes accèdent alors aux modules de GRUB dans la partition de démarrage. L'emplacement par défaut est /boot/grub/.
L'emplacement de la partition de démarrage est un choix de
l'utilisateur qui conditionne la configuration. Une bonne pratique
consiste à avoir une petite partition distincte (la taille suggérée
est de 200 Mo) pour les informations d'amorçage. De cette
façon, chaque construction, que ce soit LFS ou d'autres
distributions commerciales, peut accéder aux mêmes fichiers de
démarrage et n'importe quel système amorcé peut y accéder. Si vous
choisissez cette option, vous aurez besoin de monter la partition
séparément, de déplacer tous les fichiers du répertoire
/boot
actuel (par exemple, le noyau
linux que vous venez de construire à l'étape précédente) vers la
nouvelle partition. Vous aurez ensuite besoin de démonter la
partition puis de la remonter en tant que /boot
. Si vous le faites, assurez-vous de mettre
à jour /etc/fstab
.
L'utilisation de la partition lfs actuelle fonctionnera également, mais la configuration de plusieurs systèmes sera plus difficile.
En utilisant les informations ci-dessus, déterminez le nom adapté à
la partition racine (ou partition de démarrage, s'il en existe une
distincte). Pour l'exemple suivant, supposons que la partition
racine (ou la partition de démarrage) est sda2
.
Installez les fichiers de GRUB dans /boot/grub
et paramétrez le secteur
d'amorçage :
La commande suivante va écraser le chargeur de démarrage actuel. Ne lancez pas la commande si ce n'est pas ce que vous désirez, par exemple si vous utilisez un gestionnaire de démarrage extérieur pour gérer le Master Boot Record (MBR).
grub-install /dev/sda
Si le système a été démarré en UEFI, grub-install essayera
d'installer des fichiers pour la cible x86_64-efi, mais ces fichiers n'ont
pas été installés au
Chapitre 8. Si c'est le cas, ajoutez --target i386-pc
à la commande ci-dessus.
Générez /boot/grub/grub.cfg
:
cat > /boot/grub/grub.cfg << "EOF"
# Début de /boot/grub/grub.cfg
set default=0
set timeout=5
insmod ext2
set root=(hd0,2)
menuentry "GNU/Linux, Linux 5.19.2-lfs-11.2-systemd" {
linux /boot/vmlinuz-5.19.2-lfs-11.2-systemd root=/dev/sda2 ro
}
EOF
Du point de vue de GRUB, les fichiers du noyau sont relatifs à la partition utilisée. Si vous avez utilisé une partition /boot distincte, supprimez /boot de la ligne linux ci-dessus. Vous devrez aussi modifier la ligne set root pour pointer vers la partition d'amorçage.
La désignation GRUB pour une partition peut changer si vous
ajoutez ou retirez des disques (dont les disques amovibles comme
les clés USB). Le changement peut causer des échecs de démarrage
parce que grub.cfg
se réfère à
« d'anciennes » désignations. Si vous
voulez éviter ce problème, vous pouvez utiliser l'UUID de la
partition et du système de fichiers au lieu de la désignation
GRUB pour spécifier une partition. Exécutez lsblk -o
UUID,PARTUUID,PATH,MOUNTPOINT pour afficher
l'UUID de vos systèmes de fichiers (dans la colonne UUID
) et de vos partitions (dans la colonne
PARTUUID
). Remplacez ensuite
set root=(hdx,y)
par search --set=root --fs-uuid
et remplacez <UUID du système de fichiers où le noyau
est installé>
root=/dev/sda2
par root=PARTUUID=
.
<UUID de
la partition où LFS est construit>
Remarquez que l'UUID d'une partition et l'UUID du système de
fichiers dans cette partition sont complètement différents.
Certaines ressources en ligne peuvent vous indiquer d'utiliser
root=UUID=
au lieu de <UUID du système de
fichiers>
root=PARTUUID=
, mais cela nécessitera un
initramfs qui est au-delà de la portée de LFS.
<UUID de
la partition>
Le nom du nœud de périphérique pour une partition dans
/dev
peut aussi changer (plus
rarement que les désignations GRUB cependant). Vous pouvez aussi
remplacer les chemins vers les nœuds de périphériques comme
/dev/sda1
par PARTUUID=
dans <UUID de la
partition>
/etc/fstab
pour éviter un échec au démarrage
éventuel dans le cas où le nom du nœud de périphérique aurait
changé.
GRUB est un programme extrêmement puissant et il offre un très grand nombre d'options pour démarrer depuis une large gamme de périphériques, de systèmes d'exploitation et de types de partition. Il a aussi beaucoup d'options de personnalisation telles que les écrans d'accueil graphiques, les annonces sonores, l'entrée à la souris, etc. Les détails de ces options vont au-delà des objectifs de cette introduction.
Il existe une commande, grub-mkconfig qui peut écrire automatiquement un fichier de configuration. Elle utilise un ensemble de scripts situés dans /etc/grub.d/ et elle détruira les personnalisations que vous aurez faites. Ces scripts sont d'abord conçus pour des distributions qui ne se basent pas sur les sources et ils ne sont pas recommandés pour LFS. Si vous installez une distribution Linux commerciale, il est fort probable que ce programme soit lancé. Assurez-vous de sauvegarder votre fichier grub.cfg.