update-grub vs. grub-install? (Suomi)

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

  • joten suorita update-grub ennen grub-installia (ei, että sillä pitäisi olla merkitystä, mutta UEFI: lle) vai päinvastoin?
  • grub-install asentaa GRUB: n binaariosat, update-grub tuottaa vain määritystiedoston. Jos sinun on asennettava GRUB kokonaan uudelleen, sanon ensin

. Se voi tosiasiallisesti suorittaa update-grub sinulle osana työtä – jos se ei ' t, voit sitten suorittaa sen itse jälkikäteen.

  • " oma UEFI-käynnistysmuuttuja s " – > Joten jos ymmärsin oikein UEFI-asennuksessa, NVRAMin UEFI-käynnistysmuunnelmat ovat kuin matriisi, joka määrittää käynnistyslevyn? Mitä tapahtuu, jos yksi levy vikaantuu; voidaanko määrittää tämän matriisin varavara / useita arvoja? Lisäksi ymmärsin, että käyttäjä voi aina ohittaa UEFI-käynnistysmuuttujan vain määrittelemällä käynnistyslevyn manuaalisesti (mitä UEFI-käynnistysvaihtoehto todella tekee)? Kiitos.
  • @ninjagecko Ymmärrys on oikea, mutta ehkä epätäydellinen. UEFI-käynnistysmuuttujat määrittävät paitsi osion UUID: n, josta käynnistetään, myös käynnistyslataustiedoston polun nimen, ihmisen luettavissa olevan nimen ja valinnaisen parametrikentän. Ja kyllä, voit määrittää useita arvoja (joukkoa), määrittää järjestyksen, jolla niitä yritetään, ja jopa kertoa järjestelmälle käynnistää tietyn vaihtoehdon normaalista järjestyksestä vain kerran, ja jatkaa sitten normaalin järjestyksen käyttöä. Nämä ovat kaikki UEFI-spesifin vakio-ominaisuuksia; laiteohjelmiston kirjoittajat voivat tarjota vielä enemmän vaihtoehtoja, jos he haluavat.
  • Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *