update-grub vs. grub-install?

update-grub, alespoň v Debianu a jeho příbuzných, jako je Ubuntu, je v podstatě jen obal kolem grub-mkconfig. Tedy vytváří/aktualizuje/regeneruje konfiguraci GRUBu, nikoliv samotný zavaděč.

Co vlastně grub-install dělá, závisí na tom, jakou verzi GRUBu používáte: tradiční GRUB BIOSu nebo GRUB UEFI?

Při tradičním GRUBu BIOS grub-install (pře)zapíše část GRUBu vloženou do hlavního zaváděcího záznamu a zakóduje do něj čísla bloků fyzického disku, odkud se má načíst další část GRUBu. Určí také, ze kterého oddílu se bude číst skutečný konfigurační soubor GRUB (/boot/grub/grub.cfg). Důležitým faktorem je zde soubor /boot/grub/device.map, který říká systému GRUB, jak se číslování zařízení systému BIOS (a tedy i systému GRUB) mapuje na disková zařízení systému Linux.

U systému UEFI GRUB bude hlavní část zavaděče GRUB umístěna jako soubor v systémovém oddílu EFI, obvykle jako /boot/efi/EFI/<name of distribution>/grubx64.efi nebo podobně. Tento název cesty zavaděče je uložen v systémové paměti NVRAM (= místo, kde jsou uložena nastavení systému BIOS) 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 GRUBu, obvykle z adresáře /boot/grub distribuce Linuxu, jejíž je součástí.

Zaváděcí proměnné UEFI určí disk, který má systém použít k vyhledání systémového oddílu EFI a souboru zavaděče v něm. Tyto proměnné si můžete zobrazit sami pomocí příkazu efibootmgr -v. Příkaz grub-install tyto proměnné aktualizuje, pokud pomocí volby --no-nvram neurčíte jinak.

Při použití tradičního systému BIOS i UEFI může spuštění příkazu grub-install aktualizovat zavaděč tak, aby načetl zcela jiný konfigurační soubor GRUB na zcela jiném disku – i když podrobnosti tohoto procesu budou zcela odlišné.

S UEFI můžete skutečně změnit výběr zaváděcího zařízení přímo v operačním systému, a to buď pomocí efibootmgr, nebo grub-install. Ale grub-install je pro to obrovský přežitek: pokud jsou obě vaše instalace UEFI a mají své vlastní oddělené oddíly ESP, budou mít své vlastní zaváděcí proměnné UEFI a výběr mezi nimi lze snadno provést pomocí efibootmgr nebo skutečně v nastavení UEFI BIOSu.

S tradičním BIOSem je to trochu chaotičtější: budete se muset ujistit, že /boot/grub/device.map každé instalace identifikuje disk této konkrétní instalace jako hd0 a ten druhý jako hd1. Pak použijte grub-install pro zápis zavaděče pouze na vlastní disk každé instalace; nikdy ne na „opačný“ disk. Tímto způsobem budou oba disky zcela samostatné a bootovatelné, i když druhý disk zcela odstraníte. Pokud chcete, můžete do konfiguračních souborů každého GRUBu přidat položku nabídky, která umožní zavést „opačnou“ instalaci. Nebo můžete prostě použít BIOS pro výběr disku, z něhož se bude bootovat.

Je třeba vědět, že volba pořadí bootování v tradičních BIOSech obvykle funguje tak, že disk vybraný pro bootování je „prvním“ diskem pro funkce BIOSu, a tak se hd0 GRUBu bude vždy vztahovat k „disku, který je aktuálně vybrán pro bootování v BIOSu“.

Jestliže tedy aktuálně bootujete z disku /dev/sda (takže BIOS říká, že sda je hd0) a chcete, aby se položka nabídky GRUBu na tomto disku přepnula do bootovací nabídky disku /dev/sdb, použijete 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ě i v konfiguraci GRUBu na /dev/sdb.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.