Néhány online példa szerint az update-grub-ot a grub-install után kell futtatni. Mások megfordítják a sorrendet. Melyik a helyes?
Ha két Linux telepítésem van (egyet az sda-n és egyet az sdb-n), ha az s-telepítésen futtatom az update-grub fájlt, akkor az sda telepítést a rendszerindítás tetejére helyezi menü. Ha az sdb telepítésén futtatom az update-grub fájlt, az az sdb telepítést a menü tetejére helyezi.
Feltételezve, hogy DEFAULT = 0, ennek elméletileg lehetővé kell tennie, hogy kiválasszam az operációs rendszert az boot eszköz a BIOS-ban. A “grub-install / dev / sda” megváltoztatja az sda indítómenüjét, hogy megfeleljen az utolsó “update-grub” -nak, függetlenül attól, hogy a Linux sda vagy sdb verziójáról futtatták?
Válasz
update-grub
, legalábbis a Debianban és rokonaiban, mint az Ubuntu, alapvetően csak a grub-mkconfig
. Tehát létrehozza / frissíti / regenerálja a GRUB konfigurációt , nem pedig a tényleges bootloadert.
Az, hogy a grub-install
valójában mit csinál, attól függ, hogy a GRUB verziója, amelyet futtat: hagyományos BIOS GRUB vagy UEFI GRUB?
A hagyományos BIOS GRUB segítségével a grub-install
(újra) írja a GRUB Master Boot Recordba ágyazott részét, és belekódolja a fizikai lemezblokkot számok, ahonnan olvasható a GRUB következő része. Azt is meghatározza, hogy a tényleges GRUB konfigurációs fájl (/boot/grub/grub.cfg
) melyik partícióról lesz olvasható. Fontos tényező itt a /boot/grub/device.map
fájl, amely elmondja a GRUB-nak, hogy a BIOS (és ezért a GRUB) eszközszámozása hogyan illeszkedik a Linux lemezeszközökhöz.
az UEFI GRUB, a GRUB bootloader fő része fájlként lesz elhelyezve az EFI rendszerpartícióban, általában /boot/efi/EFI/<name of distribution>/grubx64.efi
vagy hasonló néven. Ez a rendszerbetöltő elérési útja a rendszer NVRAM-jában van (= a BIOS-beállítások tárolási helye) az UEFI rendszerindító változókban. A GRUB fő része teljesen önálló lehet (és annak kell lennie, ha a Biztonságos rendszerindítást használja!), Vagy további funkciókat tölthet be GRUB modulokként, általában a /boot/grub
könyvtárból. a Linux disztribúció, amelynek része.
Az UEFI rendszerindító változók azonosítják azt a lemezt, amelyet a rendszernek használnia kell az EFI rendszerpartíció és a benne lévő rendszerbetöltő fájl megkereséséhez. Ezeket a változókat saját maga is megtekintheti. efibootmgr -v
parancs. A grub-install
parancs frissíti ezeket a változókat, hacsak nem használja a --no-nvram
opciót az eredmény megadásához.
Ennek eredményeként mind a hagyományos BIOS, mind az UEFI használatával a grub-install
futtatása frissítheti a rendszerindítót, hogy egy teljesen más GRUB konfigurációs fájlt olvasson el egy teljesen más lemez – bár ennek a folyamatnak a részletei teljesen mások lesznek.
Az UEFI használatával a rendszerindító eszköz kiválasztását az operációs rendszeren belül megváltoztathatja, bármelyikkel efibootmgr
vagy grub-install
. De a grub-install
erre hatalmas túlterhelés: ha mindkét telepítése UEFI és külön külön ESP partícióval rendelkezik, akkor saját UEFI rendszerindító változói lesznek, és a közöttük történő kiválasztás könnyen elvégezhető a efibootmgr
paranccsal, vagy akár az UEFI BIOS beállításaiban.
A hagyományos BIOS-szal bitszintesebb: biztosítani fogja, hogy minden egyes telepítés A /boot/grub/device.map
az adott telepítés lemezét hd0
, a másikat pedig hd1
Ezután a grub-install
segítségével csak az egyes telepítések saját lemezére írhatja a rendszerbetöltőt; soha ne az “ellenkező” lemezre. Így mindkét lemez teljesen önálló és indítható lesz, még akkor is, ha a másik lemezt teljesen eltávolítják. Minden GRUB konfigurációs fájljában hozzáadhat egy menüpontot, amely lehetővé teszi az “ellenkező” telepítés indítását, ha akarja. Vagy egyszerűen csak a BIOS segítségével választhatja ki az indítandó lemezt.
Az a tudnivaló, hogy a hagyományos BIOS-ok indítási sorrend-választója általában úgy fog működni, hogy kiválasztja a lemezt az “első” lemez indításához. a BIOS funkciókhoz, így a GRUB “s hd0
mindig” a BIOS-ban indításra kijelölt lemezre “hivatkozik.
Tehát, ha jelenleg a /dev/sda
rendszerről indul (tehát a BIOS szerint sda
hd0
), és egy Azon a lemezen található GRUB menüpont segítségével válthat a /dev/sdb
“rendszerindító menüre, ilyesmit használhat:
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 }
… és hasonlóképpen a / dev / sdb GRUB konfigurációján is.
grub-install
telepíti a GRUB bináris részeit,update-grub
csak a konfigurációs fájlt állítja elő. Ha teljesen újra kell telepítenie a GRUB-ot, akkor ' azt mondom, hogy először futtassa agrub-install
parancsot. Lehetséges, hogy a feladat részeként ténylegesen futtatja a következőt:update-grub
– ha nem ' t, akkor utána maga futtathatja. / li>