update-grub vs grub-install? (Magyar)

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.

Megjegyzések

  • ezért futtassa az update-grub-t a grub-install előtt (nem mintha különbséget kellene tennie, de az UEFI esetében) vagy éppen ellenkezőleg?
  • 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 a grub-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>
  • " saját UEFI rendszerindító változó s " – > Tehát ha jól értettem egy UEFI beállításnál, akkor az NVRAM UEFI indítóváltozatai olyanok, mint egy tömb, amely meghatározza a rendszerindító lemezt? Mi történik, ha egy lemez meghibásodik; megadhat egy tartalék / több értéket ennek a tömbnek? Továbbá, ha megértettem, a felhasználó mindig megkerülheti az UEFI rendszerindító var-t, csupán manuálisan megadva a rendszerindító lemezt (gyakorlatilag mit csinál az UEFI rendszerindító var). Köszönöm.
  • @ninjagecko Megértése helyes, de talán hiányos. Az UEFI rendszerindító változók nem csak az UUID partíciót adják meg, ahonnan indítani kell, hanem a bootloader fájl elérési útját, egy ember által olvasható nevet és egy opcionális paramétermezőt. És igen, megadhat több (halmaz) értéket, meghatározhatja a megkísérlés sorrendjét, és akár azt is mondhatja a rendszernek, hogy egyszer csak egy adott beállítást indítson a normál sorrendből, majd folytassa a normál sorrend használatával. Ezek mind az UEFI specifikáció standard jellemzői; a firmware-készítők megadhatják még több lehetőséget, ha akarják.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük