update-grub contro grub-install?

Alcuni esempi trovati online dicono che update-grub dovrebbe essere eseguito DOPO grub-install. Altri invertono lordine. Quale è corretto?

Se ho due installazioni Linux (una su sda e una su sdb), se eseguo update-grub sullinstallazione sda, posizionerà linstallazione sda nella parte superiore dellavvio menù. Se eseguo update-grub sullinstallazione sdb, posizionerà linstallazione sdb nella parte superiore del menu.

Supponendo DEFAULT = 0, questo dovrebbe, in teoria, permettermi di selezionare il mio sistema operativo selezionando il dispositivo di avvio nel BIOS. “Grub-install / dev / sda” cambia il menu di avvio sda in modo che corrisponda allultimo “update-grub”, indipendentemente dal fatto che sia stato eseguito dalla versione sda o sdb di Linux?

Risposta

update-grub, almeno in Debian e nei suoi parenti come Ubuntu, è fondamentalmente solo un involucro attorno a grub-mkconfig. Quindi crea / aggiorna / rigenera la configurazione di GRUB, non il bootloader vero e proprio.

Ciò che grub-install fa effettivamente dipende da quale versione di GRUB che stai utilizzando: BIOS tradizionale GRUB o UEFI GRUB?

Con il tradizionale BIOS GRUB, grub-install (ri) scriverà la parte di GRUB incorporata nel Master Boot Record e codificherà in esso il blocco del disco fisico numeri da cui leggere la parte successiva di GRUB. Determinerà anche da quale partizione verrà letto il file di configurazione di GRUB (/boot/grub/grub.cfg). Un fattore importante qui è il file /boot/grub/device.map, che dice a GRUB come la numerazione dei dispositivi BIOS (e quindi GRUB “s) si associ ai dispositivi disco Linux.

UEFI GRUB, la parte principale del bootloader GRUB si troverà come file nella partizione di sistema EFI, tipicamente come /boot/efi/EFI/<name of distribution>/grubx64.efi o simile. Questo percorso del bootloader è memorizzato nella NVRAM di sistema (= il luogo in cui sono archiviate le impostazioni del BIOS) nelle variabili di avvio UEFI. La parte principale di GRUB può essere completamente autonoma (e deve esserlo se è in uso Secure Boot!) Oppure può caricare funzionalità aggiuntive come moduli GRUB, tipicamente dalla directory /boot/grub di la distribuzione Linux di cui fa parte.

Le variabili di avvio UEFI identificheranno il disco che il sistema dovrebbe utilizzare per cercare la partizione di sistema EFI e il file bootloader al suo interno. Puoi visualizzare queste variabili tu stesso, utilizzando efibootmgr -v comando. Il comando grub-install aggiornerà tali variabili, a meno che non utilizzi lopzione --no-nvram per specificare altrimenti.

Di conseguenza, sia con il BIOS tradizionale che con UEFI, lesecuzione di grub-install può aggiornare il bootloader per leggere un file di configurazione GRUB completamente diverso su un disco diverso, sebbene i dettagli di tale processo saranno completamente diversi.

Con UEFI, puoi effettivamente modificare la selezione del dispositivo di avvio dallinterno del sistema operativo, con efibootmgr o grub-install. Ma grub-install è un enorme sovraccarico per questo: se entrambe le installazioni sono UEFI e hanno le proprie partizioni ESP separate, avranno le proprie variabili di avvio UEFI e la selezione tra di esse può essere facilmente eseguita con efibootmgr, o addirittura nelle impostazioni UEFI BIOS.

Con il BIOS tradizionale, “è un po più complicato: ti consigliamo di assicurarti che ogni installazione” sia /boot/grub/device.map identifica il disco di quella specifica installazione come hd0 e laltro come hd1 Quindi usa grub-install per scrivere il bootloader solo sul disco di ciascuna installazione; mai al disco “opposto”. In questo modo, entrambi i dischi saranno completamente autonomi e avviabili anche se laltro disco viene completamente rimosso. Puoi aggiungere una voce di menu ai file di configurazione di ogni GRUB che ti permetterà di avviare linstallazione “opposta”, se lo desideri. Oppure puoi semplicemente usare il BIOS per selezionare il disco da cui avviare.

La cosa che devi sapere che il selettore dellordine di avvio dei BIOS tradizionali di solito funzionerà facendo in modo che il disco selezionato per lavvio sia il “primo” disco per le funzioni BIOS, quindi hd0 di GRUB farà sempre riferimento al “disco attualmente selezionato per lavvio nel BIOS”.

Quindi, se lo sei attualmente si avvia da /dev/sda (quindi il BIOS dice che sda è hd0) e vuoi un Voce di menu GRUB su quel disco per passare al menu di avvio /dev/sdb “, devi” usare qualcosa del tipo:

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 } 

… e allo stesso modo anche nella configurazione GRUB di / dev / sdb.

Commenti

  • quindi esegui update-grub prima di grub-install (non che dovrebbe fare la differenza, ma per UEFI) o il contrario?
  • grub-install installa le parti binarie di GRUB, update-grub produce solo il file di configurazione. Se è necessario reinstallare completamente GRUB, ' dico di eseguire prima grub-install. Potrebbe effettivamente eseguire update-grub per te come parte del lavoro; se ' non funziona, puoi eseguirlo da solo in seguito.
  • " propria variabile di avvio UEFI s " – > Quindi, se ho capito correttamente in una configurazione UEFI, le variabili di avvio UEFI nella NVRAM sono come un array che specifica il disco di avvio? Cosa succede se un disco si guasta; si può specificare un fallback / più valori di questo array? Inoltre, se ho capito, lutente può sempre bypassare la var di avvio UEFI semplicemente specificando manualmente il disco di avvio (effettivamente cosa sta facendo la var di avvio UEFI)? Grazie.
  • @ninjagecko La tua comprensione è corretta ma forse incompleta. Le variabili di avvio UEFI specificano non solo lUUID della partizione da cui eseguire lavvio, ma il percorso del file del bootloader, un nome leggibile dalluomo e un campo parametro facoltativo. E sì, puoi specificare più (insiemi di) valori, specificare lordine in cui provarli e persino dire al sistema di avviare unopzione specifica dallordine normale solo per questa volta, quindi riprendere a utilizzare lordine normale. Queste sono tutte le caratteristiche standard della specifica UEFI; gli autori del firmware possono fornire ancora più opzioni se lo desiderano.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *