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.
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țigrub-install
. Poate rula de faptupdate-grub
pentru dvs. ca parte a lucrării – dacă nu ' t, îl puteți rula singur după aceea.