update-grub czy grub-install?

Niektóre przykłady znalezione w Internecie mówią, że update-grub powinien być uruchamiany PO instalacji grub. Inni odwracają kolejność. Która jest poprawna?

Jeśli mam dwie instalacje Linuksa (jedną na sda i jedną na sdb), jeśli uruchomię update-grub na instalacji sda, instalacja sda zostanie umieszczona na górze bootowania menu. Jeśli uruchomię update-grub na instalacji sdb, instalacja sdb zostanie umieszczona na górze menu.

Zakładając DEFAULT = 0, teoretycznie powinno to pozwolić mi wybrać mój system operacyjny poprzez wybranie urządzenie rozruchowe w systemie BIOS. Czy „grub-install / dev / sda” zmienia menu startowe sda tak, aby odpowiadało ostatniemu „update-grub”, niezależnie od tego, czy zostało uruchomione z wersji Linuksa sda czy sdb?

Odpowiedź

update-grub, przynajmniej w Debianie i jego krewnych, takich jak Ubuntu, jest po prostu opakowaniem wokół grub-mkconfig. Więc tworzy / aktualizuje / regeneruje konfigurację GRUB-a, a nie sam program ładujący.

To, co faktycznie robi grub-install, zależy od tego wersja GRUB, której używasz: tradycyjny BIOS GRUB czy UEFI GRUB?

W tradycyjnym BIOS-ie GRUB, grub-install zapisze (ponownie) część GRUB-a osadzoną w głównym rekordzie rozruchowym i zakoduje do niego fizyczny blok dysku numery skąd czytać następną część GRUB. Określa również, z której partycji zostanie odczytany rzeczywisty plik konfiguracyjny GRUB (/boot/grub/grub.cfg). Ważnym czynnikiem jest tutaj plik /boot/grub/device.map, który informuje GRUB o tym, w jaki sposób numeracja urządzeń w systemie BIOS (a tym samym i GRUBie) jest mapowana na urządzenia dyskowe Linuksa.

Z UEFI GRUB, główna część programu ładującego GRUB zostanie umieszczona jako plik na partycji systemowej EFI, zwykle jako /boot/efi/EFI/<name of distribution>/grubx64.efi lub podobnie. Ta nazwa ścieżki programu ładującego jest przechowywana w systemowej pamięci NVRAM (= miejsce, w którym przechowywane są ustawienia systemu BIOS) w zmiennych rozruchowych UEFI. Główna część GRUB-a może być całkowicie niezależna (i musi być, jeśli używany jest Bezpieczny rozruch!) Lub może ładować dodatkowe funkcje jako moduły GRUB, zazwyczaj z katalogu /boot/grub w dystrybucja Linuksa, której jest częścią.

Zmienne rozruchowe UEFI zidentyfikują dysk, którego system powinien użyć do wyszukania partycji systemowej EFI i znajdującego się w niej pliku bootloadera. Możesz wyświetlić te zmienne samodzielnie, używając Polecenie efibootmgr -v. Polecenie grub-install zaktualizuje te zmienne, chyba że użyjesz opcji --no-nvram aby określić inaczej.

W rezultacie, zarówno w przypadku tradycyjnego systemu BIOS, jak i UEFI, uruchomienie grub-install może zaktualizować program ładujący, aby odczytywał zupełnie inny plik konfiguracyjny GRUB na całkowicie inny dysk – chociaż szczegóły tego procesu będą zupełnie inne.

Dzięki UEFI możesz w rzeczywistości zmienić wybór urządzenia rozruchowego z poziomu systemu operacyjnego, efibootmgr lub grub-install. Ale grub-install to ogromna przesada: jeśli obie Twoje instalacje są w systemie UEFI i mają własne oddzielne partycje ESP, będą miały własne zmienne rozruchowe UEFI i można łatwo dokonać wyboru między nimi z efibootmgr, a nawet w ustawieniach systemu UEFI BIOS.

Z tradycyjnym BIOS-em jest to trochę bardziej skomplikowane: będziesz chciał mieć pewność, że każda instalacja /boot/grub/device.map określa dysk tej konkretnej instalacji jako hd0, a drugi jako hd1 . Następnie użyj grub-install, aby zapisać program ładujący tylko na własnym dysku każdej instalacji; nigdy na „przeciwny” dysk. W ten sposób oba dyski będą całkowicie samodzielne i rozruchowe, nawet jeśli drugi dysk zostanie całkowicie usunięty. Możesz dodać pozycję menu do plików konfiguracyjnych każdego GRUB-a, która pozwoli ci uruchomić „przeciwną” instalację, jeśli chcesz. Lub możesz po prostu użyć BIOS-u, aby wybrać dysk do rozruchu.

Rzecz, którą musisz wiedzieć, że selektor kolejności rozruchu tradycyjnych BIOS-ów będzie zwykle działał, wybierając dysk wybrany do uruchomienia „pierwszego” dysku dla funkcji BIOS-u, a więc hd0 GRUB zawsze będzie odnosić się do „dysku, który jest aktualnie wybrany do startu w BIOSie”.

Jeśli więc obecnie uruchamiam z /dev/sda (więc BIOS mówi, że sda to hd0), a chcesz Element menu GRUB na tym dysku, aby przełączyć się na menu startowe /dev/sdb „, użyłbyś czegoś takiego jak:

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 podobnie w konfiguracji GRUB / dev / sdb „.

Komentarze

  • więc uruchom update-grub przed grub-install (nie żeby to miało znaczenie, ale dla UEFI) czy odwrotnie?
  • grub-install instaluje binarne części GRUB-a, update-grub tworzy tylko plik konfiguracyjny. Jeśli chcesz całkowicie ponownie zainstalować GRUB, ' powiem, że najpierw uruchom grub-install. W rzeczywistości może on działać update-grub jako część zadania – jeśli nie ' t, możesz później uruchomić go samodzielnie.
  • " własna zmienna rozruchowa UEFI s " – > Więc jeśli dobrze zrozumiałem w konfiguracji UEFI, zmienne rozruchowe UEFI w NVRAM są jak tablica, która określa dysk rozruchowy? Co się stanie, jeśli jeden dysk ulegnie awarii; czy można określić rezerwową / wiele wartości tej tablicy? Co więcej, jeśli zrozumiałem, użytkownik zawsze może ominąć boot var UEFI, po prostu ręcznie określając dysk startowy (właściwie to, co robi boot var UEFI)? Dziękuję.
  • @ninjagecko Twoje rozumienie jest poprawne, ale być może niekompletne. Zmienne rozruchowe UEFI określają nie tylko identyfikator UUID partycji, z której ma zostać przeprowadzony rozruch, ale także ścieżkę do pliku programu ładującego, nazwę czytelną dla człowieka i opcjonalne pole parametru. I tak, możesz określić wiele (zestawów) wartości, określić kolejność ich wprowadzania, a nawet powiedzieć systemowi, aby tylko raz uruchomił określoną opcję z normalnej kolejności, a następnie wznowić w normalnej kolejności. To są wszystkie standardowe funkcje specyfikacji UEFI; autorzy oprogramowania mogą, jeśli chcą, zapewnić jeszcze więcej opcji.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *