Comment le chargeur efi de grub trouve-t-il le bon répertoire grub.cfg et boot?

9

Si je comprends bien, le bios uefi charge grub.efi à partir de la partition efi. Cela charge maintenant un tas de modules grub et le fichier de configuration à partir du répertoire / boot.

Mais comment grub trouve-t-il le bon périphérique sur lequel réside la partition de démarrage? Dans l'héritage grub, vous installiez généralement grub sur une partition spécifique, en utilisant

# grub-install --root-directory=/dev/sda

Il est donc assez clair où il va chercher le répertoire de démarrage. Comment grub-efi trouve-t-il le bon appareil?

user128063
la source
si je comprends bien, la configuration de l'emplacement du noyau est dans la partition efi.
Joe
Il est clair que les informations doivent se trouver dans la partition efi, mais vous ne les spécifiez jamais vraiment à aucun moment (comme vous le deviez auparavant) lors de l'installation de grub.
user128063
dans le fichier .efi généré lorsque vous exécutez grub-efi
Joe

Réponses:

9

Après avoir utilisé ghex pour examiner mon fichier "BOOTX64.EFI" dans la partition efi, j'ai trouvé cette ligne.

search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4 
set prefix=($root)'/boot/grub'

Cela montre que les informations pour l'emplacement de grub (la partition de démarrage) ont été intégrées par grub2-install dans le fichier BOOTX64.EFI généré pour le système.

Grub2 est ensuite exécuté par le chargeur EFI et vous obtenez l'interface grub pour choisir le système d'exploitation (noyau) dans lequel démarrer ou le noyau par défaut est chargé.

Juste pour développer un peu: les fichiers ".EFI" sont un peu comme des applications que le sous-système UEFI peut exécuter. Destiné à être utilisé à la fois pour démarrer le système et pour fournir un emplacement pratique pour exécuter des programmes de protection contre l'exécution et de type antivirus.

Ils ont mis l'extensible dans "Unified Extensible Firmware Interface"

Joe
la source
Il serait intéressant de voir si vous pourriez patcher ce fichier et changer votre configuration et uuid et toujours démarrer sans réinstaller Grub
Joe
Bizarre, je ne peux pas le trouver. Mon répertoire ubuntu efi a un grub.cfg (en ascii) avec le préfixe et les informations racine dans id. Mais mon répertoire archlinux efi a simplement un grubx64.efi qui n'a aucun signe des commandes racine et préfixe que vous avez mentionnées même lorsque je les ai lues dans ghex.
user128063
Pas dans ubuntu.efi, recherchez boot.efi. la partition efi a un dossier. Appelé efi et en lui un dossier appelé boot.
Joe
Le dossier efi contient plusieurs fichiers binaires efi, un pour windows, un pour ubuntu et ainsi de suite. Le nom du fichier efi n'a pas d'importance. La raison pour laquelle je n'ai pas pu trouver la ligne uuid est que ma partition racine est une partition lvm. Il stocke un lvmid à la place!
user128063
1
Oh, désolé d'avoir mal lu votre post précédent. Stackexchange a coupé votre message précédent à la partie où vous avez décrit votre système. Votre description est celle d'une image de bootloader (grub) unique (BOOTX64.EFI) qui démarre deux systèmes d'exploitation pour autant que je sache. Voici quelques autres possibilités: 1) les steamos pourraient également avoir leur propre chargeur de démarrage distinct, pour lequel il aurait son propre fichier EFI dans la partition efi. 2) vous disposez d'un système de démarrage hybride EFI hérité où votre chargeur de démarrage steamos est stocké dans le MBR. Vous pouvez voir que le bootorder efi est à utiliser sudo efibootmgr -vsur gentoo, mais je suis sûr que vous le savez
user128063