In che modo grub efi loader trova la directory grub.cfg e boot corretta?


9

A quanto ho capito, il bios uefi carica grub.efi dalla partizione efi. Questo ora carica un sacco di moduli grub e il file di configurazione dalla directory / boot.

Ma come fa grub a trovare il dispositivo corretto in cui risiede la partizione di avvio? In grub legacy, di solito installeresti grub in una partizione specifica, usando

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

Quindi è abbastanza chiaro dove cercherà la directory di avvio. Come fa grub-efi a capire il dispositivo corretto?


a quanto ho capito, la configurazione per l'ubicazione del kernel è nella partizione efi.
Joe

Chiaramente le informazioni devono essere nella partizione efi, ma non le si specifica in nessun momento (come una volta) quando si installa grub.
user128063

nel file .efi che viene generato quando esegui grub-efi
Joe

Risposte:


9

Dopo aver usato ghex per esaminare il mio file "BOOTX64.EFI" nella partizione efi ho trovato questa riga.

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

Questo dimostra che le informazioni per l'ubicazione di grub (la partizione di avvio) sono state incorporate da grub2-install nel file BOOTX64.EFI generato per il sistema.

Grub2 viene quindi eseguito dal caricatore EFI e si ottiene l'interfaccia grub per scegliere il sistema operativo (kernel) da avviare o viene caricato il kernel predefinito.

Solo per espandere un po ': i file ".EFI" sono un po' come le applicazioni che il sottosistema UEFI può eseguire. Destinato ad essere utilizzato sia per avviare il sistema sia per fornire un posto conveniente per eseguire programmi di protezione dell'esecuzione e anti-virus.

Hanno messo l'estensione in "Unified Extensible Firmware Interface"


Sarebbe interessante vedere se è possibile correggere questo file e modificare la configurazione e gli uuid e comunque avviare senza reinstallare Grub
Joe

Strano, non riesco a trovarlo. La mia directory ubfi efi ha un grub.cfg (in ascii) con il prefisso e le informazioni di root all'interno dell'ID. Ma la mia directory efi di archlinux ha semplicemente un grubx64.efi che non ha alcun segno dei comandi radice e prefisso che hai citato anche quando li leggo in ghex.
user128063

Non in ubuntu.efi cercare boot.efi. la partizione efi ha una cartella. Chiamato efi e in essa una cartella chiamata boot.
Joe

La cartella efi ha diversi binari efi, uno per Windows, uno per Ubuntu e così via. Il nome del file efi è irrilevante. Il motivo per cui non sono riuscito a trovare la linea uuid è perché la mia partizione di root è una partizione lvm. Memorizza invece un lvmid!
user128063

1
Oh, scusa se ho letto male il tuo post precedente. Stackexchange ha interrotto il tuo post precedente nella parte in cui hai descritto il tuo sistema. La tua descrizione è di una singola immagine bootloader (grub) (BOOTX64.EFI) che avvia due sistemi operativi per quanto posso dire. Ecco alcune altre possibilità: 1) Steamos potrebbe anche avere un proprio bootloader separato, per il quale avrebbe un proprio file EFI nella partizione efi. 2) si dispone di un sistema di avvio ibrido EFI legacy in cui il bootloader Steamos è archiviato nell'MBR. Puoi vedere che il bootorder efi è da usare sudo efibootmgr -vsu gentoo, ma sono sicuro che lo sai
user128063
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.