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.
.