Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Tchip!
Bip bip, tut.
Brrrtglglglglgl.
Dzip dzip.
Crrrrrrrrrrrr.
Et non, ça n'était pas un modem 56k en train d'établir une connexion internet, mais comme vous l'avez reconnue une tour des années 2000 (avec lecteur de disquette) qui démarrait.
Qu'est-ce que ça cache?
Ce qui nous intéressera ici n'est pas ce que fait le BIOS ou l'UEFI, mais plutôt ce qu'il se passe à partir du moment où ils donnent la main. On prendra comme exemple le cas où c'est le gestionnaire de démarrage Grub qui est installé.
L'amorce du BIOS est rigolote, on comprend un peu pourquoi certains voulaient la changer. Après le POST, quand le BIOS a repéré un disque dur amorçable (à ne pas confondre avec une partition amorçable, et encore moins avec le flag boot), il charge le premier secteur du disque dur en mémoire, et l'exécute.
Un secteur fait 512 octets. Vu les autres infos déjà présentes dans ce secteur, comme la table des partitions (dans un format appelé «msdos» et ne permettant pas plus de 4 paritions principales, dont au plus 1 partition étendue), il ne reste que 440 octets de libres pour le chargeur de démarrage. Dans ces 440 octets, sur la plupart de nos machines, se trouve « Grub Stage 1 », installé par « grub-install /dev/disque-dur », soit automatiquement lors de l'installation de Debian, soit manuellement par la suite.
Ce petit programme de 440o ne peut pas faire grand chose. En pratique, il charge un code situé dans les premiers secteurs du disque dur s'ils sont libres, un « Grub Stage 1.5 », qui lui contient les pilotes nécessaires pour lire le système de fichier ext2. À partir de là, « Grub Stage 1.5 » peut aller lire et charger en mémoire « Grub 2 » depuis /boot/grub, l'interface visuelle et modulaire que nous connaissons.
Cette fois-ci, le firmware de l'UEFI (qui remplace donc le BIOS, son SETUP et son POST), récupère dans le MBR simplifié l'adresse de la partition EFI. Puis il va chercher dans cette partition le fichier « .efi » correspondant au gestionnaire de démarrage. Debian range un grub.efi et un grub.cfg dans « efi/debian/ » (à vérifier via ls /boot/efi/efi)
La sélection d'un noyau dans le menu du Grub permet de choisir un fichier image contenant le noyau, une archive contenant des modules indispensables au démarrage, et des options de configuration, comme par exemple, la partition à utiliser comme système de fichier racine /
.
Le noyau est chargé en mémoire par le gestionnaire de démarrage, puis exécuté.
La liste des options de démarrage proposées par Grub est présente dans le fichier grub.cfg, lui-même généré lors du update-grub. Si le paquet os-prober est installé, les systèmes autres partitions seront testées pour la présence d'OS connus, et les entrées seront ajoutées au grub.cfg. La sélection de l'option de démarrage par défaut est faite par grub et configurable via le /etc/default/grub.
Au cas où vous avez 2 ou plus systèmes libres sur des disques séparés avec leur GRUB respectif le dernier système mis à jour prendra la main au démarrage, comment l'éviter ?
Supprimer /boot/grub de l'installation d'un second système serait une grosse erreur. Cela n'empêchera pas le GRUB correspondant (dont le premier étage est ailleurs) de se lancer mais aura pour seul effet de le faire planter (car il a besoin de /boot/grub pour continuer), bloquant l'amorçage.
Il y a plusieurs causes possibles qui peuvent faire que le GRUB lancé au démarrage a changé. Cela dépend tout d'abord si la machine démarre en mode BIOS/legacy ou en mode EFI.
L'amorçage se fait à partir du MBR d'un disque.
Comme Debian et Ubuntu2) sont installés sur des disques séparés, la logique voudrait que le GRUB de chacun soit installé dans le MBR de son propre disque.
GRUB est installé dans une partition système EFI.
Peu importe qu'il y ait une seule partition EFI sur un des disques ou une sur chaque disque, le GRUB de chaque distribution est installé dans un répertoire différent donc pas de risque d'écrasement (sauf entre deux Debian ou deux Ubuntu) et l'ordre de priorité est déterminé par une variable du firmware EFI.
efibootmgr
permet d'afficher les entrées d'amorçage EFI et leur ordre de priorité.
Le rapport de bootinfoscript
3) nous en apprendra plus sur la configuration d'amorçage.
Dans ce cas, chaque système devrait avoir son propre chargeur d'amorçage, et un chargeur principal indépendant devrait être installé pour chaîner les chargeurs des différents systèmes qui vont à leur tour charger le noyau de leur propre système.
Si le système auquel le chargeur appartient est supprimé ou endommagé, ça ne démarre plus !
Il faut installer un GRUB (ou autre chargeur comme rEFInd en EFI) indépendant des OS installés.
Depuis stretch, la commande refind permet d'ajouter en EFI les nouveaux systèmes sans modifier la priorité du premier installé )comme le permettait anciennement gag)…
Un krô merci à nounours, solar66 et raleur et tous les autres participants d'avoir initié sur le fil du forum ces précisions délicates.