update-grub vs. grub-install? (Română)

Unele exemple găsite online spun că update-grub ar trebui să fie rulat DUPĂ grub-install. Alții inversează ordinea. Care este corect?

Dacă am două instalări Linux (una pe sda și una pe sdb), dacă rulez update-grub pe instalarea sda, va plasa instalarea sda în partea de sus a boot-ului meniul. Dacă rulez update-grub pe instalarea sdb, va plasa instalarea sdb în partea de sus a meniului.

Presupunând DEFAULT = 0, acest lucru ar trebui, teoretic, să îmi permită să îmi selectez sistemul de operare selectând dispozitiv de boot în BIOS. Modifică „grub-install / dev / sda” meniul de pornire sda pentru a corespunde ultimului „update-grub”, indiferent dacă a fost rulat din versiunea sda sau sdb a Linux?

Răspuns

update-grub, cel puțin în Debian și în rudele sale precum Ubuntu, este practic doar un înveliș în jurul grub-mkconfig. Deci creează / actualizează / regenerează GRUB configurația , nu bootloader-ul propriu-zis.

Ceea ce face grub-install depinde de care versiunea GRUB pe care o executați: BIOS GRUB tradițional sau UEFI GRUB?

Cu tradiționalul BIOS GRUB, grub-install va (re) scrie partea GRUB încorporată în Master Boot Record și va codifica în el blocul de disc fizic numere de unde să citiți următoarea parte a GRUB. De asemenea, va determina din ce partiție va fi citit fișierul de configurare GRUB (/boot/grub/grub.cfg). Un factor important aici este fișierul /boot/grub/device.map, care spune GRUB cum numerotarea dispozitivelor BIOS (și, prin urmare, GRUB) se mapează pe dispozitivele disc Linux.

Cu UEFI GRUB, partea principală a încărcătorului de încărcare GRUB va fi localizat ca fișier în partiția de sistem EFI, de obicei ca /boot/efi/EFI/<name of distribution>/grubx64.efi sau similar. Acest nume de cale de încărcare este stocat în NVRAM de sistem (= locul unde sunt stocate setările BIOS) în variabilele de încărcare UEFI. Partea principală a GRUB poate fi complet autonomă (și trebuie să fie în cazul utilizării Secure Boot!) Sau poate încărca funcționalități suplimentare ca module GRUB, de obicei din directorul /boot/grub al distribuția Linux din care face parte.

Variabilele de încărcare UEFI vor identifica discul pe care sistemul ar trebui să îl folosească pentru a căuta partiția de sistem EFI și fișierul de încărcare din interior. Puteți vizualiza aceste variabile singur, folosind Comanda efibootmgr -v. Comanda grub-install va actualiza acele variabile, cu excepția cazului în care utilizați opțiunea --no-nvram pentru a specifica altfel.

Ca rezultat, atât cu BIOS-ul tradițional, cât și cu UEFI, rularea grub-install vă poate actualiza încărcătorul de boot pentru a citi un fișier de configurare GRUB complet diferit pe un disc diferit – deși detaliile acestui proces vor fi complet diferite.

Cu UEFI, puteți modifica de fapt selecția dispozitivului de boot din sistemul de operare, fie efibootmgr sau grub-install. Dar grub-install este o exagerare masivă pentru asta: dacă ambele instalații sunt UEFI și au propriile lor partiții ESP separate, vor avea propriile variabile de boot UEFI și selectarea dintre ele se poate face cu ușurință cu efibootmgr, sau într-adevăr în setările UEFI BIOS.

Cu BIOS-ul tradițional, este „puțin mai neplăcut: veți dori să vă asigurați că fiecare instalare” /boot/grub/device.map identifică discul instalației respective ca hd0, iar celălalt ca hd1 . Apoi folosiți grub-install pentru a scrie bootloaderul doar pe discul fiecărei instalații; niciodată pe discul „opus”. În acest fel, ambele discuri vor fi complet autonome și bootabile chiar dacă celălalt disc este complet eliminat. Puteți adăuga un element de meniu în fișierele de configurare ale fiecărui GRUB care vă va permite să porniți instalarea „opusă”, dacă doriți. Sau puteți utiliza pur și simplu BIOS-ul pentru a selecta discul de la care să porniți.

Lucrul pe care trebuie să știți că selectorul ordinii de încărcare a BIOS-urilor tradiționale va funcționa, de obicei, făcând discul selectat pentru pornirea „primului” disc. pentru funcțiile BIOS și astfel GRUB „s hd0 se va referi întotdeauna la” discul care este selectat în prezent pentru bootarea în BIOS „.

Deci, dacă sunteți în prezent se pornește de la /dev/sda (astfel BIOS spune sda este hd0) și doriți un Element de meniu GRUB de pe acel disc pentru a comuta la meniul de pornire /dev/sdb „, ar fi să folosiți ceva de genul:

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 } 

… și la fel și în configurația GRUB / dev / sdb.

Comentarii

  • deci rulați update-grub înainte de grub-install (nu că ar trebui să facă diferența, ci pentru UEFI) sau opusul?
  • grub-install instalează părțile binare ale GRUB, update-grub produce doar fișierul de configurare. Dacă trebuie să reinstalați complet GRUB-ul dvs., ' spun mai întâi rulați grub-install. Poate rula de fapt update-grub pentru dvs. ca parte a lucrării – dacă nu ' t, îl puteți rula singur după aceea.
  • " variabilă de boot UEFI proprie s " – > Deci, dacă am înțeles corect într-o configurare UEFI, VAR-urile de încărcare UEFI în NVRAM sunt ca o matrice care specifică discul de încărcare? Ce se întâmplă dacă un disc eșuează; se poate specifica o rezervă / valori multiple ale acestei matrice? Mai mult, dacă am înțeles, utilizatorul poate ocoli oricând UEFI boot var prin specificarea manuală a discului de boot (efectiv ce face UEFI boot var)? Vă mulțumim.
  • @ninjagecko Înțelegerea dvs. este corectă, dar poate incompletă. Variabilele de încărcare UEFI specifică nu numai partiția UUID de la care se va porni, ci și calea fișierului de încărcare, un nume care poate fi citit de om și un câmp de parametri opțional. Și da, puteți specifica mai multe (seturi de) valori, puteți specifica ordinea în care să le încercați și chiar să spuneți sistemului să pornească o anumită opțiune din ordinea normală doar o singură dată, apoi să reluați folosind ordinea normală. Acestea sunt toate caracteristicile standard ale specificațiilor UEFI; autorii firmware-ului pot oferi și mai multe opțiuni, dacă doresc.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *