update-grub ou grub-install?

Certains exemples trouvés en ligne indiquent que update-grub doit être exécuté APRÈS grub-install. Dautres inversent lordre. Laquelle est correcte?

Si jai deux installations Linux (une sur sda et une sur sdb), si jexécute update-grub sur linstallation sda, elle placera linstallation sda en haut du démarrage menu. Si jexécute update-grub sur linstallation sdb, cela placera linstallation sdb en haut du menu.

En supposant que DEFAULT = 0, cela devrait, théoriquement, me permettre de sélectionner mon système dexploitation en sélectionnant le périphérique de démarrage dans le BIOS. « Grub-install / dev / sda » modifie-t-il le menu de démarrage sda pour quil corresponde au dernier « update-grub », quil ait été exécuté à partir de la version sda ou sdb de Linux?

Réponse

update-grub, au moins dans Debian et ses parents comme Ubuntu, est essentiellement juste un wrapper autour de grub-mkconfig. Donc, il crée / met à jour / régénère la configuration de GRUB, pas le chargeur de démarrage lui-même.

Ce que fait le grub-install dépend de version de GRUB que vous utilisez: BIOS traditionnel GRUB ou UEFI GRUB?

Avec le BIOS traditionnel GRUB, grub-install va (ré) écrire la partie du GRUB intégrée dans le Master Boot Record, et y encoder le bloc de disque physique numéros doù lire la partie suivante de GRUB. Il déterminera également à partir de quelle partition le fichier de configuration GRUB (/boot/grub/grub.cfg) sera lu. Un facteur important ici est le fichier /boot/grub/device.map, qui indique à GRUB comment la numérotation des périphériques du BIOS (et donc de GRUB) correspond aux périphériques de disque Linux.

Avec UEFI GRUB, la partie principale du chargeur de démarrage GRUB sera située sous forme de fichier dans la partition système EFI, généralement sous la forme /boot/efi/EFI/<name of distribution>/grubx64.efi ou similaire. Ce chemin daccès du chargeur de démarrage est stocké dans la NVRAM système (= lendroit où les paramètres du BIOS sont stockés) dans les variables de démarrage UEFI. La partie principale de GRUB peut être complètement autonome (et doit lêtre si Secure Boot est utilisé!) Ou il peut charger des fonctionnalités supplémentaires en tant que modules GRUB, généralement à partir du répertoire /boot/grub de la distribution Linux dont elle fait partie.

Les variables de démarrage UEFI identifieront le disque que le système doit utiliser pour rechercher la partition système EFI et le fichier du chargeur de démarrage à lintérieur. Vous pouvez afficher ces variables vous-même, en utilisant Commande efibootmgr -v. La commande grub-install mettra à jour ces variables, sauf si vous utilisez loption --no-nvram pour spécifier le contraire.

En conséquence, avec le BIOS traditionnel et lUEFI, lexécution de grub-install peut mettre à jour votre chargeur de démarrage pour lire un fichier de configuration GRUB complètement différent sur un disque différent – bien que les détails de ce processus soient complètement différents.

Avec UEFI, vous pouvez en fait modifier la sélection de votre périphérique de démarrage à partir du système dexploitation, soit efibootmgr ou grub-install. Mais grub-install est une exagération massive pour cela: si vos deux installations sont UEFI et ont leurs propres partitions ESP séparées, elles auront leurs propres variables de démarrage UEFI et la sélection entre elles peut facilement être effectuée avec efibootmgr, ou bien dans les paramètres du BIOS UEFI.

Avec le BIOS traditionnel, cest « un peu plus compliqué: vous » voudrez vous assurer que chaque installation « s /boot/grub/device.map identifie le disque de cette installation spécifique comme hd0 et lautre comme hd1 . Utilisez ensuite grub-install pour écrire uniquement le chargeur de démarrage sur le propre disque de chaque installation; jamais sur le disque «opposé». De cette façon, les deux disques seront complètement autonomes et amorçables même si lautre disque est complètement supprimé. Vous pouvez ajouter un élément de menu sur les fichiers de configuration de chaque GRUB qui vous permettra de démarrer linstallation « opposée », si vous le souhaitez. Ou vous pouvez simplement utiliser le BIOS pour sélectionner le disque à partir duquel démarrer.

Ce que vous devez savoir, cest que le sélecteur dordre de démarrage des BIOS traditionnels fonctionnera généralement en sélectionnant le disque pour démarrer le « premier » disque pour les fonctions du BIOS, et donc le hd0 de GRUB « se référera toujours au » disque actuellement sélectionné pour démarrer dans le BIOS « .

Donc, si vous êtes en cours de démarrage à partir de /dev/sda (donc le BIOS dit que sda est hd0), et vous voulez un Élément de menu GRUB sur ce disque pour passer au menu de démarrage de /dev/sdb « , vous » utiliseriez quelque chose comme:

menuentry "Switch to /dev/sdb" { # flip the disk mappings and reload configuration drivemap -s (hd0) (hd1) set root=<the identifier for sdb"s partition that contains grub.cfg> configfile /boot/grub/grub.cfg # or just /grub/grub.cfg is /boot is a separate partition } 

… et également sur la configuration GRUB de / dev / sdb « .

Commentaires

  • alors lancez update-grub avant grub-install (non pas que cela devrait faire une différence, mais pour lUEFI) ou le contraire?
  • grub-install installe la ou les parties binaires de GRUB, update-grub ne produit que le fichier de configuration. Si vous devez réinstaller complètement votre GRUB, je ' d exécuter grub-install en premier. Il peut en fait exécuter update-grub pour vous dans le cadre du travail – si ce nest ' t, vous pouvez lexécuter vous-même par la suite.
  • " propre variable de démarrage UEFI s " – > Donc, si jai bien compris dans une configuration UEFI, les variables de démarrage UEFI dans la NVRAM sont comme un tableau qui spécifie le disque de démarrage? Que se passe-t-il si un disque tombe en panne? peut-on spécifier un repli / plusieurs valeurs de ce tableau? De plus, si jai compris, lutilisateur peut toujours contourner le var de démarrage UEFI en spécifiant simplement manuellement le disque de démarrage (effectivement ce que fait le var de démarrage UEFI)? Merci.
  • @ninjagecko Votre compréhension est correcte mais peut-être incomplète. Les variables de démarrage UEFI spécifient non seulement lUUID de la partition à partir de laquelle démarrer, mais aussi le chemin du fichier du chargeur de démarrage, un nom lisible par lhomme et un champ de paramètre facultatif. Et oui, vous pouvez spécifier plusieurs (ensembles de) valeurs, spécifier lordre dans lequel les essayer, et même dire au système de démarrer une option spécifique dans lordre normal pour une seule fois, puis reprendre en utilisant lordre normal. Ce sont toutes les fonctionnalités standard de la spécification UEFI; les auteurs du micrologiciel peuvent fournir encore plus doptions sils le souhaitent.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *