update-grub vs. grub-install? (Čeština)

Některé online příklady ukazují, že update-grub by měl být spuštěn PO grub-install. Ostatní mění pořadí. Co je správné?

Pokud mám dvě instalace Linuxu (jednu na sda a druhou na sdb), pokud spustím update-grub na instalaci sda, umístí instalaci sda do horní části bootování Jídelní lístek. Pokud spustím update-grub na instalaci sdb, umístí instalaci sdb do horní části nabídky.

Za předpokladu DEFAULT = 0 by mi to teoreticky mělo umožnit vybrat můj OS výběrem zaváděcí zařízení v systému BIOS. Mění „grub-install / dev / sda“ bootovací nabídku sda tak, aby odpovídala poslední „update-grub“, bez ohledu na to, zda byla spuštěna z verze sda nebo sdb Linuxu?

Odpověď

update-grub, přinejmenším v Debianu a jeho příbuzných, jako je Ubuntu, je v podstatě jen obalem grub-mkconfig. Vytváří tedy / aktualizuje / regeneruje GRUB konfiguraci , nikoli samotný bootloader.

To, co vlastně grub-install dělá, závisí na tom, které verzi GRUBu, kterou používáte: tradiční BIOS GRUB nebo UEFI GRUB?

S tradičním systémem BIOS GRUB grub-install zapíše (znovu) část GRUBu vloženou do hlavního bootovacího záznamu a zakóduje do něj blok fyzického disku. čísla, odkud číst další část GRUBu. Rovněž určí, ze které oblasti se načte skutečný konfigurační soubor GRUB (/boot/grub/grub.cfg). Důležitým faktorem je zde soubor /boot/grub/device.map, který sděluje GRUBu, jak se číslování zařízení BIOS (a tedy GRUB) mapuje na disková zařízení Linux.

S UEFI GRUB, hlavní část zavaděče GRUB bude umístěna jako soubor v systémovém oddílu EFI, obvykle jako /boot/efi/EFI/<name of distribution>/grubx64.efi nebo podobný. Tato cesta bootloaderu je uložena v systémovém NVRAM (= místo, kde je uloženo nastavení BIOSu) v zaváděcích proměnných UEFI. Hlavní část GRUBu může být zcela samostatná (a musí být, pokud se používá Secure Boot!) Nebo může načítat další funkce jako moduly GRUB, obvykle z adresáře /boot/grub distribuce Linuxu, jejíž je součástí.

Zaváděcí proměnné UEFI identifikují disk, který by měl systém použít k vyhledání systémového oddílu EFI a souboru bootloaderu v něm. Tyto proměnné můžete zobrazit sami pomocí Příkaz efibootmgr -v. Příkaz grub-install tyto proměnné aktualizuje, pokud nepoužijete možnost --no-nvram jinak specifikovat.

Výsledkem je, že jak v tradičním BIOSu, tak v UEFI může spuštění grub-install aktualizovat váš bootloader tak, aby na zcela kompletním konfiguračním souboru GRUB mohl číst jiný disk – ačkoli podrobnosti tohoto procesu budou zcela odlišné.

S UEFI můžete ve skutečnosti změnit výběr zaváděcího zařízení z operačního systému, buď efibootmgr nebo grub-install. Ale grub-install je na to obrovský přehnaně: pokud jsou obě vaše instalace UEFI a mají své vlastní samostatné oddíly ESP, budou mít své vlastní spouštěcí proměnné UEFI a lze mezi nimi snadno vybírat s efibootmgr, nebo dokonce v nastavení systému UEFI BIOS.

S tradičním BIOSem je to trochu messier: budete se chtít ujistit, že každá instalace /boot/grub/device.map identifikuje disk konkrétní instalace jako hd0 a druhý jako hd1 Poté použijte grub-install k zápisu bootloaderu pouze na vlastní disk každé instalace; nikdy na „opačný“ disk. Tímto způsobem budou oba disky zcela samostatné a zaváděcí, i když bude druhý disk zcela odebrán. Do konfiguračních souborů každého GRUBu můžete přidat položku nabídky, která vám umožní spustit „opačnou“ instalaci, pokud chcete. Nebo můžete jednoduše použít systém BIOS k výběru disku, ze kterého se má spustit.

Věc, kterou musíte vědět, že volič pořadí zavádění tradičních BIOSů bude obvykle fungovat tak, že bude vybrán disk ke spuštění „prvního“ disku pro funkce systému BIOS, takže GRUB „s hd0 bude vždy odkazovat na„ disk, který je aktuálně vybrán pro zavedení v systému BIOS “.

Takže pokud jste aktuálně se zavádí z /dev/sda (BIOS tedy říká, že sda je hd0) a chcete Položka nabídky GRUB na daném disku pro přepnutí do spouštěcí nabídky /dev/sdb, můžete použít něco jako:

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 } 

… a podobně také na konfiguraci GRUBu / dev / sdb.

Komentáře

  • takže před grub-install spusťte update-grub (ne že by to mělo něco změnit, ale pro UEFI) nebo naopak?
  • grub-install nainstaluje binární části GRUBu, update-grub vytvoří pouze konfigurační soubor. Pokud potřebujete zcela přeinstalovat svůj GRUB, řeknu ' nejprve spustit grub-install. Může to ve skutečnosti běžet update-grub jako součást úlohy – pokud tomu tak není ' t, můžete jej poté spustit sami.
  • " vlastní spouštěcí proměnná UEFI s " – > Takže pokud jsem správně pochopil nastavení UEFI, spouštěcí UEFI vars v NVRAM jsou jako pole, které určuje spouštěcí disk? Co se stane, když selže jeden disk; lze určit záložní / více hodnot tohoto pole? Kromě toho, pokud jsem pochopil, může uživatel vždy obejít bootovací var UEFI pouhým ručním zadáním bootovacího disku (účinně to, co dělá bootovací var UEFI dělá)? Děkuji.
  • @ninjagecko Vaše porozumění je správné, ale možná neúplné. Zaváděcí proměnné UEFI určují nejen UUID oddílu, ze kterého se má zavést, ale také cestu k souboru zavaděče, název čitelný člověkem a volitelné pole parametru. A ano, můžete zadat více (sad) hodnot, zadat pořadí, ve kterém se o ně pokusíte, a dokonce říct systému, aby právě jednou spustil konkrétní možnost z normálního pořadí a poté pokračoval v normálním pořadí. To jsou všechny standardní funkce specifikace UEFI; autoři firmwaru mohou poskytnout, pokud chtějí, ještě více možností.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *