Jotkut verkossa löydetyt esimerkit sanovat, että update-grub on suoritettava grub-installin jälkeen. Toiset kääntävät järjestyksen. Mikä on oikein?
Jos minulla on kaksi Linux-asennusta (yksi sda: lla ja toinen sdb: llä), jos suoritan update-grub: n sda-asennuksessa, se sijoittaa sda-asennuksen käynnistyksen yläosaan valikossa. Jos suoritan update-grub -palvelun sdb-asennuksessa, se sijoittaa sdb-asennuksen valikon yläosaan.
Olettaen, että DEFAULT = 0, tämän pitäisi teoriassa antaa minun valita käyttöjärjestelmäni valitsemalla käynnistyslaite BIOSissa. Muuttaako ”grub-install / dev / sda” sda-käynnistysvalikon vastaamaan edellistä ”update-grub” -toimintoa riippumatta siitä, onko se suoritettu Linuxin SDA- tai SDB-versiosta?
Vastaus
update-grub
, ainakin Debianissa ja sen sukulaisissa, kuten Ubuntu, on pohjimmiltaan vain kääre grub-mkconfig
. Joten se luo / päivittää / uudistaa GRUB -määrityksen , ei varsinaista käynnistyslatainta.
Se, mitä grub-install
todella tekee, riippuu siitä, mikä käyttämäsi GRUB-versio: perinteinen BIOS GRUB tai UEFI GRUB?
Perinteisellä BIOS-GRUB: lla grub-install
kirjoittaa (uudelleenkäynnistää) pääkäynnistystietueeseen upotetun GRUB-osan ja koodaa siihen fyysisen levylohkon numerot mistä lukea seuraava GRUB-osa. Se määrittää myös, mistä osiosta todellinen GRUB-määritystiedosto (/boot/grub/grub.cfg
) luetaan. Tärkeä tekijä tässä on /boot/grub/device.map
-tiedosto, joka kertoo GRUB: lle, kuinka BIOSin (ja siten GRUB: n) laitteiden numerointi yhdistyy Linux-levykkeisiin.
Kanssa UEFI GRUB, GRUB-käynnistyslataimen pääosa sijaitsee tiedostona EFI-järjestelmäosiossa, tyypillisesti nimellä /boot/efi/EFI/<name of distribution>/grubx64.efi
tai vastaava. Tämä käynnistyslataimen polun nimi tallennetaan järjestelmän NVRAM-muistiin (= paikka, johon BIOS-asetukset tallennetaan) UEFI-käynnistysmuuttujiin. GRUB: n pääosa voi olla täysin itsenäinen (ja sen on oltava, jos suojattu käynnistys on käytössä!) Tai se voi ladata lisätoimintoja GRUB-moduuleina, tyypillisesti hakemistosta /boot/grub
Linux-jakelu, johon se kuuluu.
UEFI-käynnistysmuuttujat tunnistavat levyn, jota järjestelmän tulisi käyttää etsimään EFI-järjestelmäosiota ja sen sisällä olevaa käynnistyslataustiedostoa. Voit tarkastella näitä muuttujia itse käyttämällä efibootmgr -v
-komento. grub-install
-komento päivittää nämä muuttujat, ellet käytä vaihtoehtoa --no-nvram
Määritä muuten.
Tämän seurauksena sekä perinteisellä BIOS: lla että UEFI: llä grub-install
-sovelluksen suorittaminen voi päivittää käynnistyslataimen lukemaan aivan toisen GRUB-määritystiedoston kokonaan eri levy – vaikkakin prosessin yksityiskohdat ovat täysin erilaiset.
UEFI: n avulla voit itse muuttaa käynnistyslaitteen valintaa käyttöjärjestelmän sisällä joko efibootmgr
tai grub-install
. Mutta grub-install
on massiivinen ylivoima sitä varten: jos molemmat asennuksesi ovat UEFI ja niillä on omat erilliset ESP-osionsa, niillä on omat UEFI-käynnistysmuuttujansa ja niiden välillä valinta voidaan tehdä helposti efibootmgr
-kohdassa tai UEFI BIOS -asetuksissa.
Perinteisessä BIOSissa se on bittisempi: haluat varmistaa, että jokainen asennus /boot/grub/device.map
tunnistaa kyseisen asennuksen levyn nimellä hd0
ja toisen nimellä hd1
. Käytä sitten grub-install
-näppäintä kirjoittaaksesi käynnistyslataimen vain kunkin asennuksen omalle levylle; koskaan ”vastakkaiselle” levylle. Tällä tavoin molemmat levyt ovat täysin erillisiä ja käynnistettävissä, vaikka toinen levy olisi kokonaan poistettu. Voit lisätä jokaisen GRUB: n määritystiedostoihin valikkokohdan, jonka avulla voit käynnistää ”vastakkaisen” asennuksen, jos haluat. Tai voit vain käyttää BIOSia valitaksesi levyn, josta käynnistetään.
Asia, joka sinun on tiedettävä, että perinteisten BIOS: ien käynnistysjärjestysvalitsin toimii yleensä tekemällä levyn valituksi käynnistämään ”ensimmäinen” levy BIOS-toiminnoille, joten GRUB ”s hd0
viittaa aina” levylle, joka on tällä hetkellä valittu käynnistettäväksi BIOSissa ”.
Joten jos olet Käynnistetään tällä hetkellä osoitteesta /dev/sda
(joten BIOS sanoo, että sda
on hd0
) ja haluat Tämän levyn GRUB-valikkokohta siirtyäksesi /dev/sdb
”käynnistysvalikkoon, käytät jotain seuraavista:
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 }
… ja vastaavasti myös / dev / sdb: n GRUB-määrityksissä.
Kommentit
. Se voi tosiasiallisesti suorittaa update-grub
sinulle osana työtä – jos se ei ' t, voit sitten suorittaa sen itse jälkikäteen.
grub-install
asentaa GRUB: n binaariosat,update-grub
tuottaa vain määritystiedoston. Jos sinun on asennettava GRUB kokonaan uudelleen, sanon ensin