GRUB (Polski)

From ArchWiki
Translation Status: This article is a localized version of GRUB. Last translation date: 2024-05-05. You can help to synchronize the translation, if there were changes in the English version.

GRUB (GRand Unified Bootloader) to boot loader. Obecny GRUB jest również określany jako GRUB 2. Oryginalny GRUB, lub GRUB Legacy, odpowiada wersji 0.9x. Ta strona opisuje wyłącznie GRUB 2.

Note: W całym artykule esp oznacza punkt montowania partycji systemowej EFI aka ESP.

Obsługiwane systemy plików

GRUB posiada własne wsparcie dla wielu systemów plików, w szczególności FAT32, ext4, Btrfs lub XFS. Zobacz #Nieobsługiwane systemy plików dla niektórych zastrzeżeń.

Warning: Systemy plików mogą uzyskać nowe funkcje, które nie są jeszcze obsługiwane przez GRUB, czyniąc je nieodpowiednimi dla /boot, chyba że wyłączone zostaną niekompatybilne funkcje. Zazwyczaj można tego uniknąć, używając oddzielnej partycji rozruchowej /boot z powszechnie obsługiwanym systemem plików, takim jak FAT32.

Systemy UEFI

Note:
  • Zaleca się przeczytanie i zrozumienie stron Unified Extensible Firmware Interface, Partitioning#GUID Partition Table i Arch boot process#Under UEFI.
  • Podczas instalacji w celu użycia UEFI ważne jest, aby uruchomić nośnik instalacyjny w trybie UEFI, w przeciwnym razie efibootmgr nie będzie w stanie dodać wpisu rozruchowego GRUB UEFI. Instalacja na awaryjnej ścieżce rozruchowej będzie nadal działać nawet w trybie BIOS, ponieważ nie dotyka pamięci NVRAM.
  • Aby uruchomić komputer z dysku przy użyciu UEFI, wymagana jest partycja systemowa EFI. Postępuj zgodnie z EFI system partition#Check for an existing partition, aby dowiedzieć się, czy już ją masz, w przeciwnym razie musisz ją utworzyć.
  • Cały ten artykuł zakłada, że wstawianie dodatkowych modułów GRUB2 poprzez insmod jest możliwe. Jak omówiono w #Shim-lock, nie jest tak w przypadku systemów UEFI z włączonym Secure Boot. Jeśli chcesz użyć jakiegokolwiek dodatkowego modułu GRUB, który nie jest zawarty w standardowym pliku GRUB EFI grubx64.efi w systemie z włączonym Secure Boot, musisz ponownie wygenerować GRUB EFI grubx64.efi za pomocą grub-mkstandalone lub ponownie zainstalować GRUB za pomocą grub-install z dołączonymi dodatkowymi modułami GRUB.

Instalacja

Note:
  • Oprogramowanie UEFI nie jest implementowane w sposób spójny przez różnych producentów. Procedura opisana poniżej ma działać na szerokiej gamie systemów UEFI, ale osoby doświadczające problemów pomimo zastosowania tej metody są zachęcane do dzielenia się szczegółowymi informacjami i, jeśli to możliwe, znalezionymi obejściami dla konkretnego przypadku sprzętowego. Dla takich przypadków przygotowano artykuł GRUB/EFI examples.
  • Sekcja zakłada instalację GRUB-a dla x64 (64-bitowego) UEFI. W przypadku IA32 (32-bitowego) UEFI (nie mylić z 32-bitowymi procesorami), zastąp x86_64-efi przez i386-efi tam, gdzie jest to właściwe. Postępuj zgodnie z instrukcjami w Unified Extensible Firmware Interface#Checking the firmware bitness, aby określić bitowość UEFI.

Najpierw zainstaluj pakiety grub i efibootmgr: GRUB jest programem ładującym, podczas gdy efibootmgr jest używany przez skrypt instalacyjny GRUB-a do zapisywania wpisów rozruchowych w pamięci NVRAM.

Następnie wykonaj poniższe kroki, aby zainstalować GRUB na dysku:

  1. Zamontuj partycję systemową EFI i w pozostałej części tej sekcji zastąp esp jej punktem montowania.
  2. Wybierz identyfikator programu ładującego, tutaj o nazwie GRUB. Katalog o tej nazwie zostanie utworzony w esp/EFI/ w celu przechowywania pliku binarnego EFI i jest to nazwa, która pojawi się w menu rozruchowym UEFI w celu identyfikacji wpisu rozruchowego GRUB.
  3. Wykonaj poniższe polecenie, aby zainstalować aplikację GRUB EFI grubx64.efi do esp/EFI/GRUB/ i zainstalować jej moduły do /boot/grub/x86_64-efi/.
Note:
  • Upewnij się, że instalujesz pakiety i uruchamiasz polecenie grub-install z systemu, w którym GRUB będzie zainstalowany jako bootloader. Oznacza to, że jeśli uruchamiasz system ze środowiska instalacji, musisz znajdować się w chroot podczas uruchamiania grub-install. Jeśli z jakiegoś powodu konieczne jest uruchomienie grub-install spoza zainstalowanego systemu, należy dołączyć opcję --boot-directory= ze ścieżką do zamontowanego katalogu /boot, np --boot-directory=/mnt/boot.
  • Niektóre płyty główne nie obsługują bootloader-id ze spacjami
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB

Po zakończeniu powyższej instalacji, główny katalog GRUB znajduje się w /boot/grub/. Przeczytaj GRUB/Tips and tricks#Alternative install method, aby dowiedzieć się jak wskazać alternatywną lokalizację. Zauważ, że grub-install próbuje również utworzyć wpis w menedżerze rozruchu oprogramowania układowego, nazwany GRUB w powyższym przykładzie - to jednak nie powiedzie się, jeśli wpisy rozruchowe są pełne; użyj efibootmgr, aby usunąć niepotrzebne wpisy.

Pamiętaj o wygenerowaniu głównego pliku konfiguracyjnego po sfinalizowaniu konfiguracji.

Tip: Jeśli użyjesz opcji --removable, GRUB zostanie zainstalowany w esp/EFI/BOOT/BOOTX64.EFI (lub esp/EFI/BOOTIA32.EFI dla i386-efi. (lub esp/EFI/BOOT/BOOTIA32.EFI dla celu i386-efi) i będziesz miał dodatkową możliwość rozruchu z dysku w przypadku zresetowania zmiennych EFI lub przeniesienia dysku do innego komputera. Zwykle można to zrobić, wybierając sam dysk, podobnie jak w BIOS-ie. W przypadku podwójnego rozruchu z systemem Windows należy pamiętać, że system Windows zwykle umieszcza tam plik wykonywalny EFI, ale jego jedynym celem jest odtworzenie wpisu rozruchowego UEFI dla systemu Windows. Jeśli instalujesz GRUB na Mac, będziesz musiał użyć tej opcji. Jeśli wykonasz aktualizację UEFI, aktualizacja ta może usunąć istniejące wpisy rozruchowe UEFI. W związku z tym jest to potencjalna strategia awaryjna, aby mieć włączony „wymienny” wpis rozruchowy

.

Note:
  • --efi-directory i --bootloader-id są specyficzne dla GRUB UEFI, --efi-directory zastępuje --root-directory, który jest przestarzały.
  • Można zauważyć brak opcji device_path (np.: /dev/sda) w poleceniu grub-install. W rzeczywistości każda podana opcja device_path zostanie zignorowana przez skrypt instalacyjny GRUB UEFI. W rzeczywistości programy ładujące UEFI w ogóle nie używają kodu rozruchowego MBR ani sektora rozruchowego partycji.

Zobacz Rozwiązywanie problemów z UEFI w przypadku problemów. Dodatkowo zobacz GRUB/Tips and tricks#UEFI further reading.

Obsługa Secure Boot

GRUB w pełni obsługuje bezpieczny rozruch przy użyciu kluczy CA lub shim, jednak polecenie instalacji różni się w zależności od tego, którego zamierzasz użyć.

Warning:
  • Nieprawidłowe skonfigurowanie Secure Boot może uniemożliwić uruchomienie systemu. Jeśli z jakiegokolwiek powodu nie możesz uruchomić systemu po włączeniu bezpiecznego rozruchu, powinieneś wyłączyć go w oprogramowaniu układowym i ponownie uruchomić system.
  • Ładowanie niepotrzebnych modułów w bootloaderze może potencjalnie stanowić zagrożenie dla bezpieczeństwa, używaj tych poleceń tylko wtedy, gdy ich potrzebujesz.

Klucze CA

Aby skorzystać z kluczy CA, polecenie jest następujące:

# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB --modules=„tpm” --disable-shim-lock

Shim-lock

Note: Przed przystąpieniem do tej sekcji powinieneś upewnić się, że postępowałeś zgodnie z instrukcjami w Secure Boot#shim i masz sbsigntools skonfigurowane i gotowe do odbierania kluczy

Podczas korzystania z Shim-lock, GRUB może zostać pomyślnie uruchomiony w trybie Secure Boot tylko wtedy, gdy jego plik binarny EFI zawiera wszystkie moduły niezbędne do odczytu systemu plików zawierającego obrazy vmlinuz i initramfs.

Od wersji GRUB 2.06.r261.g2f4430cc0, ładowanie modułów w trybie bezpiecznego rozruchu poprzez insmod nie jest już dozwolone, ponieważ naruszałoby to oczekiwanie, aby nie ładować dowolnego kodu. Jeśli moduły GRUB-a nie są osadzone w pliku binarnym EFI, a GRUB spróbuje załadować je sideloadem/insmodem, GRUB nie uruchomi się z komunikatem:

error: prohibited by secure boot policy
błąd: zabronione przez politykę bezpiecznego rozruchu

Ubuntu, zgodnie z oficjalnym skryptem kompilacji, osadza następujące moduły GRUB w podpisanym pliku binarnym GRUB EFI grubx64.efi:

  • „podstawowe” moduły, niezbędne do uruchomienia systemu z płyty CD lub dysku z prostą partycją: all_video, boot, btrfs, cat, chain, configfile, echo, efifwsetup, efinet, ext2, fat, font, gettext, gfxmenu, gfxterm, gfxterm_background, gzio, halt, help, hfsplus, iso9660, jpeg, keystatus, loadenv, loopback, linux, ls, lsefi, lsefimmap, lsefisystab, lssal, memdisk, minicmd, normal, ntfs, part_apple, part_msdos, part_gpt, password_pbkdf2, png, probe, reboot, regexp, search, search_fs_uuid, search_fs_file, search_label, sleep, smbios, squash4, test, true, video, xfs, zfs, zfscrypt, zfsinfo
  • moduły „specyficzne dla platformy” dla architektury x86_64-efi, niezbędne dla np.:
    • play: aby odtwarzać dźwięki podczas uruchamiania
    • cpuid: do procesora podczas uruchamiania
    • tpm: do obsługi Measured Boot / Trusted Platform Modules
  • moduły „zaawansowane”, składający się z modułów:
    • cryptodisk: uruchamianie z szyfrowanych w trybie zwykłym dysków.
    • gcry_algorithm: do obsługi określonych algorytmów haszujących i szyfrujących
    • luks: do uruchamiania z dysków szyfrowanych za pomocą LUKS:
    • lvm: uruchamianie z dysków woluminów logicznych LVM
    • mdraid09, mdraid1x, raid5rec, raid6rec: do uruchamiania z wirtualnych dysków RAID.

Musisz skonstruować listę modułów GRUB w postaci zmiennej powłoki, którą oznaczamy jako GRUB_MODULES. Możesz użyć najnowszego skryptu Ubuntu jako punktu startowego i usunąć moduły, które nie są potrzebne w twoim systemie. Pominięcie modułów sprawi, że proces uruchamiania będzie stosunkowo szybszy i zaoszczędzi trochę miejsca na partycji ESP.

Potrzebny jest również plik/sekcja Secure Boot Advanced Targeting (SBAT) zawarty w pliku binarnym EFI, aby poprawić bezpieczeństwo; jeśli GRUB jest uruchamiany z programu ładującego UEFI shim. Ten plik/sekcja SBAT zawiera metadane o pliku binarnym GRUB (wersja, opiekun, deweloper, adres URL upstream) i ułatwia shimowi blokowanie niektórych wersji GRUB-a przed załadowaniem, jeśli mają luki w zabezpieczeniach[1][2], jak wyjaśniono w dokumencie UEFI shim bootloader secure boot life-cycle improvements od shim.

Shim bootloadera UEFI pierwszego stopnia nie uruchomi grubx64.efi, jeśli brakuje sekcji SBAT z grubx64.efi!

Jeśli GRUB jest zainstalowany, przykładowy plik SBAT .csv znajduje się pod /usr/share/grub/sbat.csv.

Ponownie zainstaluj GRUB używając dostarczonego pliku /usr/share/grub/sbat.csv i wszystkich potrzebnych GRUB_MODULES i podpisz go:

# grub-install --target=x86_64-efi --efi-directory=esp --modules=${GRUB_MODULES} --sbat /usr/share/grub/sbat.csv
# sbsign --key MOK.key --cert MOK.crt --output esp/EFI/GRUB/grubx64.efi esp/EFI/GRUB/grubx64.efi
# cp esp/EFI/GRUB/grubx64.efi esp/EFI/BOOT/grubx64.efi

Uruchom ponownie komputer, wybierz klucz w MokManager, a Secure Boot powinien działać.

Korzystanie z Secure Boot

Po instalacji zobacz Secure Boot#Implementing Secure Boot, aby uzyskać instrukcje dotyczące jego włączenia.

Jeśli używasz metody kluczy CA, zarządzanie kluczami, rejestracja i podpisywanie plików może być zautomatyzowane za pomocą sbctl, zobacz Secure Boot#Assisted process with sbctl po szczegóły.

Systemy BIOS

Instrukcje specyficzne dla tablicy partycji GUID (GPT)

W konfiguracji BIOS/GPT wymagana jest partycja rozruchowa BIOS. GRUB osadza swój core.img na tej partycji.

Note:
  • Przed wypróbowaniem tej metody należy pamiętać, że nie wszystkie systemy będą w stanie obsłużyć ten schemat partycjonowania. Przeczytaj więcej na Partitioning#GUID Partition Table.
  • Partycja rozruchowa BIOS-u jest potrzebna GRUB-owi tylko w konfiguracji BIOS/GPT. W konfiguracji BIOS/MBR, GRUB używa luki post-MBR do osadzenia core.img. W przypadku GPT nie ma jednak gwarantowanego niewykorzystanego miejsca przed pierwszą partycją.
  • W przypadku systemów UEFI ta dodatkowa partycja nie jest wymagana, ponieważ w tym przypadku nie odbywa się osadzanie sektorów rozruchowych. Jednak systemy UEFI nadal wymagają partycji systemowej EFI.

Utwórz partycję mebibajtową (+1M z fdisk lub gdisk) na dysku bez systemu plików i z typem partycji GUID 21686148-6449-6E6F-744E-656564454649.

  • Wybierz typ partycji BIOS boot dla fdisk.
  • Wybierz kod typu partycji ef02 dla gdisk.
  • Dla parted ustaw/aktywuj flagę bios_grub na partycji.

Ta partycja może być w dowolnej kolejności, ale musi znajdować się na pierwszych 2 TiB dysku. Partycja ta musi zostać utworzona przed instalacją GRUB-a. Gdy partycja będzie gotowa, zainstaluj bootloader zgodnie z poniższymi instrukcjami.

Przestrzeń przed pierwszą partycją może być również użyta jako partycja rozruchowa BIOS-u, choć będzie poza specyfikacją wyrównania GPT. Ponieważ partycja nie będzie regularnie używana, można pominąć kwestie wydajności, chociaż niektóre narzędzia dyskowe będą wyświetlać ostrzeżenie o tym. W fdisk lub gdisk utwórz nową partycję zaczynającą się od sektora 34 i rozciągającą się do 2047 i ustaw jej typ. Aby widoczne partycje zaczynały się od podstawy, rozważ dodanie tej partycji jako ostatniej.

Instrukcje dotyczące głównego rekordu rozruchowego (MBR)

Zwykle odstęp post-MBR (po 512-bajtowym regionie MBR i przed początkiem pierwszej partycji) w wielu systemach partycjonowanych MBR wynosi 31 KiB, gdy kwestie wyrównania cylindra zgodności z DOS są spełnione w tablicy partycji. Zaleca się jednak, aby odstęp po MBR wynosił około 1 do 2 MB, aby zapewnić wystarczającą ilość miejsca na osadzenie GRUB-a core.img (FS#24103). Zaleca się użycie narzędzia do partycjonowania, które obsługuje 1 MiB wyrównywanie partycji, aby uzyskać tę przestrzeń, a także aby spełnić inne kwestie niezwiązane z 512-bajtowymi sektorami (które nie są związane z osadzaniem core.img).

Instalacja

Zainstaluj pakiet grub. (Zastąpi on grub-legacyAUR, jeśli jest już zainstalowany):

# grub-install --target=i386-pc /dev/sdX

gdzie i386-pc jest celowo używane niezależnie od rzeczywistej architektury, a /dev/sdX jest dyskiem (nie partycją), na którym ma zostać zainstalowany GRUB. Na przykład /dev/sda lub /dev/nvme0n1, lub /dev/mmcblk0. Zobacz Device file#Block device names by zapoznać się ze schematem nazewnictwa urządzeń blokowych.

Teraz należy wygenerować główny plik konfiguracyjny.

Jeśli używasz LVM dla swojego /boot, możesz zainstalować GRUB na wielu dyskach fizycznych.

Tip: Inne sposoby instalacji GRUBa (np. instlacja na pamięci USB) opisano w GRUB/Tips and tricks#Alternative installation methods

Zobacz grub-install(8) i GRUB Manual po więcej szczegółów na temat polecenia grub-install.

Konfiguracja

W zainstalowanym systemie GRUB ładuje plik konfiguracyjny /boot/grub/grub.cfg przy każdym uruchomieniu systemu. Możesz postępować zgodnie z #Generowany grub.cfg, aby użyć narzędzia, lub #Własny grub.cfg, aby utworzyć go ręcznie.

Generowany grub.cfg

Ta sekcja obejmuje tylko edycję pliku konfiguracyjnego /etc/default/grub. Więcej informacji można znaleźć w GRUB/Tips and tricks.

Note: Pamiętaj, aby zawsze regenerować główny plik konfiguracyjny po dokonaniu zmian w /etc/default/grub i/lub plikach w /etc/grub.d/.
Warning: Zaktualizuj/zreinstaluj bootloader (zobacz #Systemy UEFI albo #Systemy BIOS) jeśli nowa wersja GRUB-a zmieni składnię pliku konfiguracyjnego: niedopasowana konfiguracja może skutkować niemożliwym do uruchomienia systemem. Na przykład, nowa konfiguracja może wykorzystywać funkcję nieznaną istniejącemu plikowi binarnemu GRUB-a, powodując nieoczekiwane zachowanie.

Generowanie głównego pliku konfiguracyjnego

Po instalacji należy wygenerować główny plik konfiguracyjnego /boot/grub/grub.cfg. Na proces generowania mogą wpływać różne opcje w /etc/default/grub i skrypty w /etc/grub.d/. Lista opcji w /etc/default/grub i zwięzły opis każdej z nich znajduje się na stronie dokumentacji GNU.

Jeśli nie wykonałeś dodatkowej konfiguracji, automatyczne generowanie określi główny system plików systemu do uruchomienia dla pliku konfiguracyjnego. Aby to się powiodło, ważne jest, aby system był uruchomiony lub chrootowany.

Note:
  • Domyślną ścieżką pliku jest /boot/grub/grub.cfg, a nie /boot/grub/i386-pc/grub.cfg.
  • Jeśli próbujesz uruchomić grub-mkconfig w kontenerze chroot lub systemd-nspawn, możesz zauważyć, że nie działa: grub-probe: error: failed to get canonical path of /dev/sdaX. W takim przypadku spróbuj użyć arch-chroot, jak opisano w poście BBS.

Użyj narzędzia grub-mkconfig do wygenerowania /boot/grub/grub.cfg:

# grub-mkconfig -o /boot/grub/grub.cfg

Domyślnie skrypty generujące automatycznie dodają wpisy menu dla wszystkich zainstalowanych jąder Arch Linux do wygenerowanej konfiguracji.

Tip:

Aby automatycznie dodać wpisy dla innych zainstalowanych systemów operacyjnych, zobacz #Wykrywanie innych systemów operacyjnych.

Dodatkowe niestandardowe pozycje menu można dodać edytując /etc/grub.d/40_custom i ponownie generując /boot/grub/grub.cfg. Możesz też utworzyć /boot/grub/custom.cfg i dodać je tam. Zmiany w /boot/grub/custom.cfg nie wymagają ponownego uruchomienia grub-mkconfig, ponieważ /etc/grub.d/41_custom dodaje niezbędną instrukcję source do wygenerowanego pliku konfiguracyjnego.

Tip: /etc/grub.d/40_custom może być użyty jakoszablon do utworzenia /etc/grub.d/nn_custom, gdzie nn definiuje pierwszeństwo, wskazując kolejność wykonywania skryptu. Kolejność wykonywania skryptów określa ich umiejscowienie w menu rozruchowym GRUB-a. nn powinno być większe niż 06, aby zapewnić, że niezbędne skrypty są wykonywane jako pierwsze.

Zobacz #Przykłady wpisów w menu startowym, aby zapoznać się z przykładami niestandardowych wpisów w menu.

Wykrywanie innych systemów operacyjnych

Aby grub-mkconfig wyszukiwał inne zainstalowane systemy i automatycznie dodawał je do menu, zainstaluj pakiet os-prober i zamontuj partycje, z których uruchamiane są inne systemy. Następnie ponownie uruchom grub-mkconfig. Jeśli otrzymasz następujące dane wyjściowe: Warning: os-prober will not be executed to detect other bootable partitions, edytuj /etc/default/grub i dodaj/usuń komentarz:

GRUB_DISABLE_OS_PROBER=false

Następnie spróbuj ponownie.

Note:
  • Dokładny punkt montowania nie ma znaczenia, os-prober odczytuje mtab w celu zidentyfikowania miejsc do wyszukiwania wpisów startowych.
  • Pamiętaj, aby montować partycje za każdym razem, gdy uruchamiasz grub-mkconfig, aby za każdym razem uwzględnić inne systemy operacyjne.
  • os-prober może nie działać poprawnie po uruchomieniu w chroot. Spróbuj ponownie po ponownym uruchomieniu systemu, jeśli tego doświadczysz.
Tip: Możesz również chcieć, aby GRUB zapamiętał ostatnio wybrany wpis rozruchowy, zobacz GRUB/Tips and tricks#Recall previous entry.
Windows

W przypadku systemu Windows zainstalowanego w trybie UEFI należy upewnić się, że partycja systemowa EFI zawierająca Menedżera rozruchu systemu Windows (bootmgfw.efi) jest zamontowana. Uruchom os-prober jako root, aby wykryć i wygenerować dla niego wpis.

W przypadku systemu Windows zainstalowanego w trybie BIOS, zamontuj partycję systemową Windows (jej etykieta systemu plików powinna być System Reserved lub SYSTEM). Uruchom os-prober jako root, aby wykryć i wygenerować dla niego wpis.

Note: W przypadku systemu Windows zainstalowanego w trybie BIOS:
  • Partycje NTFS mogą nie zawsze być wykrywane po zamontowaniu ich przy użyciu domyślnych sterowników Linuksa. Jeśli GRUB ich nie wykrywa, spróbuj zainstalować NTFS-3G i ponownie zamontować.

This article or section is out of date.

Reason: Od Windows 7, bootmgr jest umieszczany w partycji systemowej, która nie jest szyfrowana. (Discuss in Talk:GRUB (Polski))
  • Zaszyfrowane partycje Windows mogą wymagać odszyfrowania przed zamontowaniem. W przypadku BitLockera można to zrobić za pomocą cryptsetup lub dislockerAUR. To powinno wystarczyć, aby os-prober dodał prawidłowy wpis.

Dodatkowe argumenty

Aby przekazać niestandardowe dodatkowe argumenty do obrazu Linuksa, można ustawić zmienne GRUB_CMDLINE_LINUX + GRUB_CMDLINE_LINUX_DEFAULT. + GRUB_CMDLINE_LINUX_DEFAULT w /etc/default/grub. Te dwie zmienne są dołączane do siebie i przekazywane do jądra podczas generowania zwykłych wpisów rozruchowych. Dla wpisu rozruchowego recovery, tylko GRUB_CMDLINE_LINUX jest używane podczas generowania.

Użycie obu nie jest konieczne, ale może być przydatne. Na przykład, można użyć GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=uuid-of-swap-partitio quiet" gdzie uuid-partycji-wymiany jest UUID partycji wymiany, aby włączyć wznawianie po hibernacja. Spowoduje to wygenerowanie wpisu rozruchu odzyskiwania bez wznowienia i bez quiet tłumienia komunikatów jądra podczas rozruchu z tego wpisu menu. Chociaż inne (zwykłe) pozycje menu miałyby je jako opcje.

Domyślnie grub-mkconfig określa UUID głównego systemu plików dla konfiguracji. Aby to wyłączyć, należy odkomentować GRUB_DISABLE_LINUX_UUID=true.

Aby wygenerować wpis odzyskiwania GRUB-a należy upewnić się, że GRUB_DISABLE_RECOVERY nie jest ustawiony na true w /etc/default/grub.

Więcej informacji można znaleźć w artykule na temat parametrów jądra.

Ustawianie pozycji menu najwyższego poziomu

Domyślnie grub-mkconfig sortuje dołączone jądra za pomocą sort -V i używa pierwszego jądra na tej liście jako wpisu najwyższego poziomu. Oznacza to, że na przykład, ponieważ /boot/vmlinuz-linux-lts jest sortowane przed /boot/vmlinuz-linux, jeśli masz zainstalowane zarówno linux-lts, jak i linux, jądro LTS będzie wpisem menu najwyższego poziomu, co może nie być pożądane. Można to zmienić podając GRUB_TOP_LEVEL=sciezka_do_jadra w /etc/default/grub. Na przykład, aby zwykłe jądro było pozycją menu najwyższego poziomu, można użyć GRUB_TOP_LEVEL=„/boot/vmlinuz-linux”.

LVM

This article or section is a candidate for merging with #Installation.

Notes: grub-mkconfig jest w stanie wykryć, że potrzebuje modułu lvm, podawanie go w GRUB_PRELOAD_MODULES nie jest wymagane. Przenieś ostrzeżenie do #Installation & #Installation_2 lub utwórz sekcję znanych problemów i udokumentuj je tam. (Discuss in Talk:GRUB (Polski))
Warning: GRUB nie obsługuje woluminów logicznych thin-provisioned

Jeśli korzystasz z LVM dla partycji głównej /boot lub /, upewnij się, że moduł lvm jest wstępnie załadowany:

/etc/default/grub
GRUB_PRELOAD_MODULES="... lvm"

RAID

This article or section is a candidate for merging with #Installation.

Notes: grub-mkconfig jest w stanie wykryć, że potrzebuje modułów mdraid09 i/lub mdraid1x, podawanie ich w GRUB_PRELOAD_MODULES nie jest wymagane. Podsumuj podwójną instalację grub w notatce i przenieś ją do #Instalacja; przenieś set root rzeczy do #Własny grub.cfg. (Discuss in Talk:GRUB (Polski))

GRUB zapewnia wygodną obsługę woluminów RAID. Należy załadować moduły GRUB mdraid09 lub mdraid1x, aby umożliwić natywne adresowanie woluminu:

/etc/default/grub
GRUB_PRELOAD_MODULES="... mdraid09 mdraid1x"

Na przykład /dev/md0 staje się:

set root=(md/0)

podczas gdy partycjonowany wolumin RAID (np. /dev/md0p1) staje się:

set root=(md/0,1)

Aby zainstalować gruba przy użyciu RAID1 jako partycji /boot (lub przy użyciu /boot umieszczonego na partycji głównej RAID1), w systemach BIOS wystarczy uruchomić grub-install na obu dyskach, np:

# grub-install --target=i386-pc --debug /dev/sda
# grub-install --target=i386-pc --debug /dev/sdb

Gdzie macierz RAID 1 zawierająca /boot znajduje się na /dev/sda i /dev/sdb.

Note: GRUB obsługuje bootowanie z Btrfs. RAID 0/1/10, ale nie RAID 5/6. Możesz użyć mdadm dla RAID 5/6, który jest obsługiwany przez GRUB.

Zaszyfrowane /boot

GRUB posiada również specjalne wsparcie dla uruchamiania z zaszyfrowanym /boot. Odbywa się to poprzez odblokowanie LUKS blockdevice w celu odczytania jego konfiguracji i załadowania z niego initramfs i kernel. Opcja ta próbuje rozwiązać problem posiadania niezaszyfrowanej partycji rozruchowej.

Tip: /boot nie musi znajdować się na oddzielnej partycji; może również pozostać w głównym drzewie katalogów / systemu
Warning: GRUB 2.12rc1 ma ograniczoną obsługę LUKS2. Szczegółowe informacje znajdują się w sekcji #LUKS2 poniżej.

Aby włączyć tę funkcję, należy zaszyfrować partycję z /boot znajdującą się na niej przy użyciu LUKS w normalny sposób. Następnie dodaj następującą opcję do /etc/default/grub:

/etc/default/grub
GRUB_ENABLE_CRYPTODISK=y

Ta opcja jest używana przez grub-install do generowania grub core.img.

Zainstaluj GRUB po zmodyfikowaniu tej opcji lub zaszyfrowaniu partycji.

Bez dalszych zmian zostaniesz dwukrotnie poproszony o podanie hasła: pierwsze dla GRUB-a w celu odblokowania punktu montowania /boot we wczesnym rozruchu, drugie w celu odblokowania samego głównego systemu plików zaimplementowanego przez initramfs. Aby tego uniknąć, można użyć pliku klucza.

Warning:
  • Jeśli chcesz generować główny plik konfiguracyjny, upewnij się, że /boot jest zamontowany.
  • Aby wykonać aktualizacje systemu obejmujące punkt montowania /boot, należy upewnić się, że zaszyfrowany /boot jest odblokowany i zamontowany przed wykonaniem aktualizacji. W przypadku oddzielnej partycji /boot, można to osiągnąć automatycznie podczas rozruchu, używając crypttab z plikiem klucza.
Note:
  • Jeśli używasz specjalnej mapy klawiszy, domyślna instalacja GRUB-a nie będzie jej znała. Jest to istotne dla sposobu wprowadzania hasła w celu odblokowania urządzenia blokującego LUKS. Zobacz GRUB/Tips and tricks#Manual configuration of core image for early boot.
  • Jeśli wystąpią problemy z wyświetleniem monitu o hasło (błędy dotyczące cryptouuid, cryptodisk lub „nie znaleziono urządzenia”), spróbuj ponownie zainstalować GRUB i dodać --modules=„part_gpt part_msdos” na końcu polecenia grub-install.
Tip: Możesz użyć hooków pacmana do automatycznego zamontowania /boot gdy aktualizacje potrzebują dostępu do powiązanych plików.
LUKS2

Użyj grub-install jak opisano w sekcji #Instalacja, aby utworzyć bootowalny obraz GRUB z obsługą LUKS. Należy pamiętać o następujących zastrzeżeniach:

  • Początkowa obsługa LUKS2 została dodana do GRUB 2.06, ale z kilkoma ograniczeniami, które zostały tylko częściowo rozwiązane w GRUB 2.12rc1. Zobacz GRUB bug #55093.
  • Od wersji GRUB 2.12rc1, grub-install może utworzyć obraz rdzenia w celu odblokowania LUKS2. Jednak obsługuje on tylko PBKDF2, a nie Argon2.
  • Argon2id (domyślny tryb cryptsetup) i Argon2i PBKDF nie są obsługiwane (GRUB bug #59409), tylko PBKDF2 jest.
Tip: Możesz użyć grub-improved-luks2-gitAUR, który został załatany dla LUKS2 jak również obsługi Argon. Należy pamiętać, że obsługa Argon w pakiecie wymaga systemu UEFI.[3]
Note: Przed GRUB 2.12rc1, trzeba było ręcznie utworzyć plik binarny EFI używając grub-mkimage z niestandardowym plikiem konfiguracyjnym GRUB. Na przykład /boot/grub/grub-pre.cfg, z wywołaniami cryptomount, insmod normal i normal. Nie jest to już potrzebne, grub-install jest wystarczające. Jednakże, może być konieczne uruchomienie grub-mkconfig -o /boot/grub/grub.cfg przynajmniej raz po aktualizacji z 2.06.

Jeśli wprowadzisz nieprawidłowe hasło podczas rozruchu i skończysz w powłoce ratunkowej GRUB, spróbuj cryptomount -a, aby zamontować wszystkie (miejmy nadzieję, że tylko jedną) zaszyfrowane partycje lub użyj cryptomount -u $crypto_uuid, aby zamontować konkretną. Następnie wykonaj insmod normal i normal jak zwykle.

Jeśli wprowadzisz poprawne hasło, ale natychmiast zostanie zwrócony błąd Invalid passphrase, upewnij się, że podano właściwe moduły kryptograficzne. Użyj cryptsetup luksDump /dev/nvme0n1p2 i sprawdź, czy funkcja skrótu (SHA-256, SHA-512) jest zgodna z zainstalowanymi modułami (gcry_sha256, gcry_sha512), a algorytm PBKDF to pbkdf2. Algorytmy hash i PBDKDF można zmienić dla istniejących kluczy za pomocą cryptsetup luksConvertKey --hash sha256 --pbkdf pbkdf2 /dev/nvme0n1p2. W normalnych okolicznościach przetworzenie hasła powinno zająć kilka sekund.

Własny grub.cfg

This article or section needs expansion.

Reason: Dodać instrukcje jak napisać niestandardowy plik /boot/grub/grub.cfg. Zobacz User:Eschwartz/Grub dla proponowanego projektu. (Discuss in Talk:GRUB (Polski)#Manually generate grub.cfg)

Ta sekcja opisuje ręczne tworzenie wpisów rozruchowych GRUB-a w /boot/grub/grub.cfg zamiast polegania na grub-mkconfig.

Podstawowy plik konfiguracyjny GRUB-a wykorzystuje następujące opcje:

  • (hdX,Y) jest partycją Y na dysku X, numery partycji zaczynają się od 1, numery dysków zaczynają się od 0
  • set default=N to domyślny wpis rozruchowy, który jest wybierany po upływie limitu czasu dla akcji użytkownika
  • set timeout=M to czas M oczekiwania w sekundach na wybór użytkownika przed uruchomieniem domyślnej opcji
  • menuentry „title” {opcje wpisu} to wpis startowy zatytułowany title.
  • set root=(hdX,Y) ustawia partycję rozruchową, na której przechowywane jest jądro i moduły GRUB (partycja rozruchowa nie musi być oddzielną partycją i może być po prostu katalogiem pod partycją „root”) (/)

LoaderDevicePartUUID

Aby GRUB ustawił zmienną LoaderDevicePartUUID UEFI wymaganą przez systemd-gpt-auto-generator(8) dla Automatyczne montowanie partycji GPT, załaduj moduł bli w grub.cfg:

if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi

Przykłady wpisów w menu startowym

Tip: Te wpisy rozruchowe mogą być również używane podczas korzystania z /boot/grub/grub.cfg wygenerowanego przez grub-mkconfig. Dodaj je do /etc/grub.d/40_custom i zregeneruj główny plik konfiguracyjny lub dodaj je do /boot/grub/custom.cfg.

Wskazówki dotyczące zarządzania wieloma wpisami GRUB-a, na przykład podczas korzystania z jąder linux i linux-lts, można znaleźć w GRUB/Tips and tricks#Multiple entries.

Pozycje menu rozruchowego Archiso i Archboot znajdują się w sekcji Multiboot USB drive#Boot entries.

Polecenia GRUB
Pozycja menu „Shutdown” (Zamknij)
menuentry "Wyłączenie systemu" {
	echo "Wyłącznie systemu..."
	halt
}
Pozycja menu „Ponowne uruchomienie systemu”
menuentry "Ponowne uruchomienie systemu" {
	echo "Ponowne uruchamianie systemu..."
	reboot
}
Pozycja menu „Ustawienia oprogramowania sprzętowego UEFI”
if [ ${grub_platform} == "efi" ]; then
	menuentry 'Ustawienia oprogramowania sprzętowego UEFI' --id 'uefi-firmware' {
		fwsetup
	}
fi
Pliki binarne EFI

Po uruchomieniu w trybie UEFI, GRUB może łańcuchowo ładować inne pliki binarne EFI.

Tip: Aby wyświetlić te pozycje menu tylko wtedy, gdy GRUB jest uruchomiony w trybie UEFI, dołącz je do następującej instrukcji if:
if [ ${grub_platform} == "efi" ]; then
	umieść tutaj wpisy menu tylko dla UEFI
fi
Powłoka UEFI

Można uruchomić Powłokę UEFI, umieszczając ją w katalogu głównym partycji systemowej EFI i dodając ten wpis do menu:

menuentry "Powłoka UEFI" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --file /shellx64.efi
	chainloader /shellx64.efi
}
gdisk

Pobierz gdisk EFI i skopiuj gdisk_x64.efi do esp/EFI/tools/.

menuentry "gdisk" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --file /EFI/tools/gdisk_x64.efi
	chainloader /EFI/tools/gdisk_x64.efi
}
Ładowanie łańcuchowe zunifikowanego obrazu jądra

Jeśli posiadasz zunifikowany obraz jądra wygenerowany w wyniku Secure Boot lub w inny sposób, możesz dodać go do menu rozruchowego. Na przykład:

menuentry "Arch Linux" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --fs-uuid FILESYSTEM_UUID
	chainloader /EFI/Linux/arch-linux.efi
}
Dual-booting
GNU/Linux

Zakładając, że druga dystrybucja znajduje się na partycji sda2:

menuentry "Inny Linux" {
	set root=(hd0,2)
	linux /boot/vmlinuz (dodaj inne opcje zgodnie z potrzebami)
	initrd /boot/initrd.img (jeśli inne jądro go używa/potrzebuje)
}

Alternatywnie, GRUB może wyszukać właściwą partycję według identyfikatora UUID lub etykiety systemu plików:

menuentry "Inny Linux" {
        # zakładając, że UUID to 763A-9CB6
	search --no-floppy --set=root --fs-uuid 763A-9CB6

        # wyszukiwanie według etykiety INNY_LINUX (upewnij się, że etykieta partycji jest jednoznaczna)
        #search --no-floppy --set=root --label INNY_LINUX

	linux /boot/vmlinuz (dodaj tutaj inne opcje zgodnie z potrzebami, na przykład: root=UUID=763A-9CB6)
	initrd /boot/initrd.img (jeśli inne jądro go używa/potrzebuje)
}

Jeśli inna dystrybucja ma już prawidłowy folder /boot z zainstalowanym GRUB-em, grub.cfg, jądrem i initramfs, GRUB może zostać poinstruowany, aby załadować te inne pliki grub.cfg w locie podczas rozruchu. Na przykład dla hd0 i czwartej partycji GPT:

menuentry "configfile hd0,gpt4"  {
        insmod part_gpt
        insmod btrfs
        insmod ext2
        set root='hd0,gpt4'
        configfile /boot/grub/grub.cfg
}

Po wybraniu tej pozycji GRUB ładuje plik grub.cfg z drugiego woluminu i wyświetla to menu. Wszelkie zmiany zmiennych środowiskowych dokonane za pomocą poleceń w pliku nie zostaną zachowane po zakończeniu configfile. Naciśnij Esc, aby powrócić do pierwszego menu GRUB-a.

Windows zainstalowany w trybie UEFI/GPT

Ten tryb określa, gdzie znajduje się program ładujący systemu Windows i ładuje go łańcuchowo po GRUB-ie po wybraniu pozycji menu. Głównym zadaniem jest znalezienie partycji systemowej EFI i uruchomienie z niej programu ładującego.

Note: Ta pozycja menu będzie działać tylko w trybie rozruchowym UEFI i tylko wtedy, gdy bitowość systemu Windows jest zgodna z bitowością UEFI. Nie będzie działać w GRUB-ie zainstalowanym w BIOS-ie. Zobacz Dual boot with Windows#Windows UEFI vs BIOS limitations i Dual boot with Windows#Bootloader UEFI vs BIOS limitations aby uzyskać więcej informacji.
if [ "${grub_platform}" == "efi" ]; then
	menuentry "Microsoft Windows Vista/7/8/8.1 UEFI/GPT" {
		insmod part_gpt
		insmod fat
		insmod chain
		search --no-floppy --fs-uuid --set=root $hints_string $fs_uuid
		chainloader /EFI/Microsoft/Boot/bootmgfw.efi
	}
fi

gdzie $hints_string i $fs_uuid są uzyskiwane za pomocą następujących dwóch poleceń.

Polecenie $fs_uuid określa identyfikator UUID partycji systemowej EFI:

# grub-probe --target=fs_uuid esp/EFI/Microsoft/Boot/bootmgfw.efi
1ce5-7f28

Alternatywnie można uruchomić lsblk --fs i odczytać UUID partycji systemowej EFI.

Polecenie $hints_string określi lokalizację partycji systemowej EFI, w tym przypadku dysku twardego 0:

# grub-probe --target=hints_string esp/EFI/Microsoft/Boot/bootmgfw.efi
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

Te dwa polecenia zakładają, że ESP używany przez Windows jest zamontowany pod adresem esp. Mogą istnieć różnice w ścieżce do pliku EFI systemu Windows, ponieważ jest to system Windows i tak dalej.

Windows zainstalowany w trybie BIOS/MBR
Note: GRUB obsługuje uruchamianie bootmgr bezpośrednio i chainloading sektora rozruchowego partycji nie jest już wymagane do uruchomienia systemu Windows w konfiguracji BIOS/MBR.
Warning: Jest to partycja systemowa, która ma /bootmgr, a nie "prawdziwa" partycja Windows (zwykle C:).Etykieta systemu plików partycji systemowej to System Reserved lub SYSTEM, a jej rozmiar wynosi od 100 do 549 MB. Więcej informacji można znaleźć w Wikipedia:Partycja systemowa i partycja rozruchowa.

W całej tej sekcji zakłada się, że partycja Windows to /dev/sda1. Inna partycja zmieni każde wystąpienie hd0,msdos1.

Note: Te pozycje menu będą działać tylko w trybie rozruchu BIOS. Nie będą działać w GRUB zainstalowanym w UEFI. Zobacz Dual boot with Windows#Windows UEFI vs BIOS limitations i Dual boot with Windows#Bootloader UEFI vs BIOS limitations.

W obu przykładach XXXX-XXXX to UUID systemu plików, który można znaleźć za pomocą polecenia lsblk --fs.

Dla Windows Vista/7/8/8.1/10:

if [ "${grub_platform}" == "pc" ]; then
	menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS/MBR" {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXX-XXXX
		ntldr /bootmgr
	}
fi

Dla Windows XP:

if [ "${grub_platform}" == "pc" ]; then
	menuentry "Microsoft Windows XP" {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXX-XXXX
		ntldr /ntldr
	}
fi
Note: W niektórych przypadkach GRUB może zostać zainstalowany bez czystego systemu Windows 8, w którym to przypadku nie można uruchomić systemu Windows bez wystąpienia błędu \boot\bcd (kod błędu 0xc000000f). (kod błędu 0xc000000f). Możesz to naprawić, przechodząc do Konsoli odzyskiwania systemu Windows (cmd.exe z dysku instalacyjnego) i wykonując:
X:\> bootrec.exe /fixboot
X:\> bootrec.exe /RebuildBcd

Nie używaj bootrec.exe /Fixmbr, ponieważ wyczyści to GRUB. Możesz też użyć funkcji Boot Repair w menu Troubleshooting - nie wymaże ona GRUB-a, ale naprawi większość błędów. Ponadto lepiej jest mieć podłączony zarówno docelowy dysk twardy, jak i TYLKO urządzenie rozruchowe. Windows zazwyczaj nie naprawia informacji rozruchowych, jeśli podłączone są inne urządzenia.

Korzystanie z etykiet

Możliwe jest użycie etykiet systemu plików, czytelnych dla człowieka ciągów znaków dołączonych do systemów plików, poprzez użycie opcji --label w komendzie search. Po pierwsze, upewnij się, że system plików ma etykietę.

Następnie dodaj wpis przy użyciu etykiet. Przykład:

menuentry "Arch Linux, session texte" {
  search --label --set=root archroot
  linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro
  initrd /boot/initramfs-linux.img
}

Używanie powłoki poleceń

Ponieważ MBR jest zbyt mały, aby przechowywać wszystkie moduły GRUB-a, znajduje się tam tylko menu i kilka podstawowych poleceń. Większość funkcjonalności GRUB-a pozostaje w modułach w /boot/grub/, które są wstawiane w razie potrzeby. W warunkach błędu (np. jeśli zmieni się układ partycji) GRUB może nie uruchomić się. W takim przypadku może pojawić się powłoka poleceń.

GRUB oferuje wiele powłok/promptów. Jeśli wystąpi problem z odczytaniem menu, ale bootloader jest w stanie znaleźć dysk, prawdopodobnie zostaniesz przeniesiony do "normalnej" powłoki:

grub>

W przypadku poważniejszego problemu (np. gdy GRUB nie może znaleźć wymaganych plików), użytkownik może zostać przeniesiony do powłoki "ratunkowej":

grub rescue>

Powłoka ratunkowa jest ograniczonym podzbiorem normalnej powłoki, oferującym znacznie mniej funkcji. Jeśli zostaniesz przeniesiony do powłoki ratunkowej, najpierw spróbuj wstawić "normalny" moduł, a następnie uruchom "normalną" powłokę:

grub rescue> set prefix=(hdX,Y)/boot/grub
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod
rescue:grub> normal

Obsługa pagera

GRUB obsługuje pager do odczytywania poleceń, które dostarczają długich danych wyjściowych (takich jak polecenie help). Działa to tylko w normalnym trybie powłoki, a nie w trybie ratunkowym. Aby włączyć pager, w powłoce poleceń GRUB wpisz:

sh:grub> set pager=1

Używanie środowiska powłoki poleceń do uruchamiania systemów operacyjnych

grub>

Środowisko powłoki poleceń GRUB-a może być używane do uruchamiania systemów operacyjnych. Powszechnym scenariuszem może być uruchamianie systemu Windows / Linux przechowywanego na dysku / partycji poprzez ładowanie łańcuchowe.

Ładowanie łańcuchowe oznacza ładowanie innego boot-loadera z bieżącego, tj. ładowanie łańcuchowe.

Inny program ładujący może być osadzony na początku dysku partycjonowanego (MBR), na początku partycji lub dysku bez partycji (VBR) lub jako plik binarny EFI w przypadku UEFI.

Łańcuchowe ładowanie VBR partycji

set root=(hdX,Y)
chainloader +1
boot

X=0,1,2... Y=1,2,3...

Na przykład do łańcuchowego ładowania systemu Windows zapisanego na pierwszej partycji pierwszego dysku twardego,

set root=(hd0,1)
chainloader +1
boot

Podobnie GRUB zainstalowany na partycji może być ładowany łańcuchowo.

Łańcuchowe ładowanie MBR dysku lub VBR dysku bez partycji

set root=hdX
chainloader +1
boot

Ładowanie łańcuchowe systemu Windows/Linux zainstalowanego w trybie UEFI

insmod fat
set root=(hd0,gpt4)
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
boot

insmod fat służy do ładowania modułu systemu plików FAT w celu uzyskania dostępu do programu ładującego Windows na partycji systemowej EFI. (hd0,gpt4) lub /dev/sda4 jest partycją systemową EFI w tym przykładzie. Wpis w linii chainloader określa ścieżkę do pliku .efi, który ma zostać załadowany łańcuchowo.

Normalne ładowanie

Zobacz przykłady w #Korzystanie z konsoli ratunkowej

Korzystanie z konsoli ratunkowej

Najpierw zobacz #Używanie powłoki poleceń. Jeśli nie można aktywować standardowej powłoki, jednym z możliwych rozwiązań jest uruchomienie systemu przy użyciu Live CD lub innego dysku ratunkowego, aby poprawić błędy konfiguracji i ponownie zainstalować GRUB. Jednak taki dysk rozruchowy nie zawsze jest dostępny (ani konieczny); konsola ratunkowa jest zaskakująco solidna.

Dostępne polecenia w GRUB rescue obejmują insmod, ls, set i unset. W tym przykładzie użyto set i insmod. set modyfikuje zmienne, a insmod wstawia nowe moduły w celu dodania funkcjonalności.

Przed uruchomieniem użytkownik musi znać lokalizację swojej partycji /boot (może to być oddzielna partycja lub podkatalog w katalogu głównym):

grub rescue> set prefix=(hdX,Y)/boot/grub

gdzie X to numer dysku fizycznego, a Y to numer partycji.

Note: W przypadku oddzielnej partycji rozruchowej pomiń /boot ze ścieżki (tj. wpisz set prefix=(hdX,Y)/grub).

Aby rozszerzyć możliwości konsoli, należy dodać moduł linux:

grub rescue> insmod i386-pc/linux.mod

lub po prostu

grub rescue> insmod linux

Wprowadza to polecenia linux i initrd, które powinny być znane.

Przykładem może być uruchomienie Arch Linux:

set root=(hd0,5)
linux /boot/vmlinuz-linux root=/dev/sda5
initrd /boot/initramfs-linux.img
boot

W przypadku oddzielnej partycji rozruchowej (np. podczas korzystania z UEFI), ponownie zmień odpowiednio linie:

Note: Ponieważ partycja rozruchowa jest oddzielną partycją i nie jest częścią partycji głównej, należy ręcznie zaadresować partycję rozruchową w taki sam sposób, jak w przypadku zmiennej prefiksu.
set root=(hd0,5)
linux (hdX,Y)/vmlinuz-linux root=/dev/sda6
initrd (hdX,Y)/initramfs-linux.img
boot
Note: Jeśli doświadczyłeś error: premature end of file /YOUR_KERNEL_NAME podczas wykonywania polecenia linux, można zamiast tego spróbować linux16.

Po pomyślnym uruchomieniu instalacji Arch Linux, użytkownicy mogą poprawić grub.cfg w razie potrzeby, a następnie ponownie zainstalować GRUB.

Aby ponownie zainstalować GRUB i całkowicie naprawić problem, zmieniając /dev/sda w razie potrzeby. Zobacz #Instalacja po szczegóły.

Usuwanie GRUB-a

Systemy UEFI

Przed usunięciem grub upewnij się, że jakiś inny bootloader jest zainstalowany i skonfigurowany do przejęcia.

$ efibootmgr
BootOrder: 0003,0001,0000,0002
Boot0000* Windows Boot Manager  HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0001* GRUB  HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\GRUB\grubx64.efi)
Boot0002* Linux-Firmware-Updater        HD(2,GPT,5dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\arch\fwupdx64.efi)
Boot0003* Linux Boot Manager    HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\systemd\systemd-bootx64.efi)

Jeśli BootOrder ma grub jako pierwszy wpis, zainstaluj inny bootloader, aby umieścić go z przodu, taki jak systemd-boot powyżej. grub można następnie usunąć używając jego bootnum.

# efibootmgr --delete-bootnum -b 1

Usuń także katalogi esp/EFI/grub i /boot/grub.

Systemy BIOS

Aby zastąpić grub dowolnym innym programem ładującym BIOS, wystarczy go zainstalować, co spowoduje nadpisanie kodu rozruchowego MBR.

grub-install tworzy katalog /boot/grub, który musi zostać usunięty ręcznie. Chociaż niektórzy użytkownicy będą chcieli go zachować, jeśli będą chcieli ponownie zainstalować grub.

Po migracji do UEFI/GPT można chcieć usunąć kod rozruchowy MBR za pomocą dd.

Rozwiązywanie problemów

Nieobsługiwane systemy plików

W przypadku, gdy GRUB nie obsługuje głównego systemu plików, należy utworzyć alternatywną partycję /boot z obsługiwanym systemem plików. W niektórych przypadkach wersja rozwojowa GRUB-a grub-gitAUR może mieć natywną obsługę systemu plików.

Jeśli GRUB jest używany z nieobsługiwanym systemem plików, nie jest w stanie wyodrębnić UUID dysku, więc zamiast tego używa klasycznych nietrwałych nazw /dev/sdXx. W takim przypadku może być konieczna ręczna edycja /boot/grub/grub.cfg i zastąpienie root=/dev/sdXx root=UUUID=XXXXXXXX-XXXX-XXXX-XXXXXXXXXX. Możesz użyć polecenia blkid, aby uzyskać identyfikator UUID urządzenia, zobacz Persistent block device naming.

Podczas gdy GRUB obsługuje F2FS od wersji 2.0.4, nie może poprawnie odczytać plików rozruchowych z partycji F2FS, która została utworzona z włączoną flagą extra_attr.

Włączanie komunikatów debugowania

Note: Ta zmiana jest nadpisywana podczas generowania głównego pliku konfiguracyjnego.

Dodaj:

set pager=1
set debug=all

do grub.cfg.

Komunikat o błędzie w stylu msdos

grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
            However, blocklists are UNRELIABLE and its use is discouraged.
grub-setup: error: If you really want blocklists, use --force.

Ten błąd może wystąpić podczas próby instalacji GRUB w kontenerze VMware. Więcej informacji na ten temat tutaj. Dzieje się tak, gdy pierwsza partycja zaczyna się tuż po MBR (blok 63), bez zwykłej przestrzeni 1 MiB (2048 bloków) przed pierwszą partycją. Przeczytaj #Instrukcje specyficzne dla tablicy partycji GUID (GPT)

UEFI

Typowe błędy instalacji

  • Błąd, który może wystąpić na niektórych urządzeniach UEFI to Could not prepare Boot variable: Read-only file system Należy ponownie zamontować /sys/firmware/efi/efivars z włączoną opcją odczytu i zapisu.
    # mount -o remount,rw,nosuid,nodev,noexec --types efivarfs efivarfs /sys/firmware/efi/efivars
    . Zobacz Gentoo Wiki na temat instalacji bootloadera.
  • Jeśli masz problem z uruchomieniem grub-install z sysfs lub procfs i jest napisane, że musisz uruchomić modprobe efivarfs spróbuj mounting the efivarfs z powyższym poleceniem.
  • Bez opcji --target lub --directory, grub-install nie może określić, który firmware zainstalować. W takich przypadkach grub-install wypisze source_dir does not exist. Please specify --target or --directory.
  • Jeśli po uruchomieniu grub-install pojawi się error: esp doesn't look like an EFI partition, to najprawdopodobniej partycja nie jest sformatowana w FAT32.

Tworzenie wpisu GRUB w menedżerze rozruchu oprogramowania układowego

grub-install automatycznie próbuje utworzyć pozycję menu w menedżerze rozruchu. Jeśli tak się nie stanie, zobacz UEFI#efibootmgr, aby uzyskać instrukcje dotyczące użycia efibootmgr do utworzenia wpisu menu. Problemem może być jednak to, że nie uruchomiłeś płyty CD/USB w trybie UEFI, jak w UEFI#Create UEFI bootable USB from ISO.

Jako kolejny przykład tworzenia wpisu GRUB w menedżerze rozruchu oprogramowania układowego, rozważ efibootmgr -c. Zakłada on, że /dev/sda1 jest partycją systemową EFI i jest zamontowany w /boot/efi. Które są domyślnym zachowaniem efibootmgr. Tworzy nową opcję rozruchu o nazwie „Linux” i umieszcza ją na początku listy kolejności rozruchu. Opcje mogą być przekazywane w celu modyfikacji domyślnego zachowania. Domyślnym programem ładującym system operacyjny jest \EFI\arch\grub.efi.

Zrzut do powłoki ratunkowej

Jeśli GRUB ładuje się, ale spada do powłoki ratunkowej bez żadnych błędów, może to być spowodowane jednym z tych dwóch powodów:

  • Może to być spowodowane brakiem lub błędem grub.cfg. Stanie się tak, jeśli GRUB UEFI został zainstalowany z --boot-directory i brakuje grub.cfg,
  • Zdarza się to również, jeśli partycja rozruchowa, która jest zakodowana w pliku grubx64.efi, uległa zmianie.

GRUB UEFI nie został załadowany

Przykład działającego UEFI:

# efibootmgr -u
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001,0002
Boot0000* GRUB HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EFI\GRUB\grubx64.efi)
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\shellx64.efi)
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI

Jeśli ekran jest czarny tylko przez sekundę, a następnie próbowana jest następna opcja rozruchu, zgodnie z tym postem, przeniesienie GRUB-a do katalogu głównego partycji może pomóc. Opcja rozruchu musi zostać usunięta, a następnie ponownie utworzona. Wpis dla GRUB powinien wyglądać następująco:

Boot0000* GRUB HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grubx64.efi)

Domyślna/zastępcza ścieżka rozruchowa

Niektóre oprogramowania sprzętowe UEFI wymagają pliku rozruchowego w znanej lokalizacji, zanim pokażą wpisy rozruchowe UEFI NVRAM. W takim przypadku grub-install będzie twierdzić, że efibootmgr dodał wpis do rozruchu GRUB-a, jednak wpis ten nie pojawi się w selektorze kolejności rozruchu VisualBIOS. Rozwiązaniem jest zainstalowanie GRUB-a na domyślnej/zastępczej ścieżce rozruchowej:

# grub-install --target=x86_64-efi --efi-directory=esp --removable

Alternatywnie można przenieść już zainstalowany plik wykonywalny GRUB EFI do ścieżki domyślnej/zwrotnej:

# mv esp/EFI/grub esp/EFI/BOOT
# mv esp/EFI/BOOT/grubx64.efi esp/EFI/BOOT/BOOTX64.EFI

Nieprawidłowa sygnatura

Jeśli próba uruchomienia systemu Windows powoduje błąd „nieprawidłowego podpisu”, np. po zmianie konfiguracji partycji lub dodaniu dodatkowych dysków twardych, należy (ponownie) przenieść konfigurację urządzenia GRUB i pozwolić mu na ponowną konfigurację:

# mv /boot/grub/device.map /boot/grub/device.map-old
# grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig powinno teraz wymieniać wszystkie znalezione opcje rozruchu, w tym Windows. Jeśli to działa, usuń /boot/grub/device.map-old.

Rozruch zawiesza się

Jeśli uruchamianie utknie bez żadnego komunikatu o błędzie po załadowaniu jądra i początkowego ramdysku przez GRUB, spróbuj usunąć parametr jądra add_efi_memmap.

Arch nie znaleziony w innym systemie operacyjnym

Niektórzy donoszą, że inne dystrybucje mogą mieć problemy z automatycznym znalezieniem Arch Linuksa za pomocą os-prober. Jeśli ten problem wystąpi, donoszono, że wykrywanie może być poprawione dzięki obecności /etc/lsb-release. Ten plik i narzędzie aktualizujące jest dostępne z pakietem lsb-release.

Ostrzeżenie podczas instalacji w chroot

Podczas instalacji GRUB-a na systemie LVM w środowisku chroot (np. podczas instalacji systemu) mogą pojawić się ostrzeżenia takie jak

/run/lvm/lvmetad.socket: connect failed: No such file or directory

lub

WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.

Dzieje się tak, ponieważ /run nie jest dostępny wewnątrz chroot. Ostrzeżenia te nie uniemożliwią uruchomienia systemu, pod warunkiem, że wszystko zostało wykonane poprawnie, więc można kontynuować instalację.

GRUB ładuje się powoli

GRUB can take a long time to load when disk space is low. Check if you have sufficient free disk space on your /boot or / partition when you are having problems.

error: unknown filesystem

GRUB może wyświetlić error: unknown filesystem i odmówić uruchomienia z kilku powodów. Jeśli jesteś pewien, że wszystkie UUID są poprawne, a wszystkie systemy plików są prawidłowe i obsługiwane, może to być spowodowane tym, że BIOS Boot Partition znajduje się poza pierwszymi 2 TiB dysku [4]. Użyj wybranego narzędzia do partycjonowania, aby upewnić się, że ta partycja znajduje się w całości w pierwszych 2 TiB, a następnie ponownie zainstaluj i skonfiguruj GRUB.

Błąd ten może być również spowodowany przez system plików ext4 z nieobsługiwanym zestawem funkcji:

  • large_dir - nieobsługiwany.
  • metadata_csum_seed - będzie obsługiwany w GRUB 2.11 (commit).
Warning: Upewnij się, że sprawdziłeś wsparcie GRUB-a dla nowych funkcji systemu plików przed włączeniem ich w systemie plików /boot.

grub-reboot nie resetuje się

GRUB wydaje się nie być w stanie zapisywać na partycjach root Btrfs [5]. Jeśli użyjesz grub-reboot do uruchomienia innego wpisu, nie będzie on w stanie zaktualizować swojego środowiska na dysku. Uruchom grub-reboot z innego wpisu (na przykład podczas przełączania się między różnymi dystrybucjami) lub rozważ inny system plików. Możesz zresetować „lepki” wpis, wykonując grub-editenv create i ustawiając GRUB_DEFAULT=0 w /etc/default/grub (nie zapomnij o grub-mkconfig -o /boot/grub/grub.cfg).

Stary Btrfs uniemożliwia instalację

Jeśli dysk zostanie sformatowany za pomocą Btrfs bez tworzenia tablicy partycji (np. /dev/sdx), a następnie zostanie zapisana tablica partycji, niektóre części formatu BTRFS pozostaną. Większość narzędzi i systemów operacyjnych tego nie widzi, ale GRUB odmówi instalacji, nawet z --force

# grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
# grub-install: error: filesystem `btrfs' does not support blocklists.

Możesz wyzerować dysk, ale najprostszym rozwiązaniem, które pozostawia dane w spokoju, jest wymazanie superbloku Btrfs za pomocą wipefs -o 0x10040 /dev/sdx.

Nie znaleziono systemu Windows 8/10

Ustawienie w Windows 8/10 o nazwie „Hiberboot”, „Hybrid Boot” lub „Fast Boot” może uniemożliwić zamontowanie partycji Windows, więc grub-mkconfig nie znajdzie instalacji Windows. Wyłączenie Hiberboot w Windows pozwoli na dodanie go do menu GRUB.

GRUB Rescue i zaszyfrowany /boot

Podczas korzystania z zaszyfrowanego /boot, jeśli nie wprowadzisz poprawnego hasła, zostaniesz przeniesiony do powłoki grub-rescue.

Ten monit grub-rescue ma ograniczone możliwości. Użyj następujących poleceń, aby ukończyć rozruch:

grub rescue> cryptomount <partition>
grub rescue> insmod normal
grub rescue> normal

Zobacz ten post na blogu[dead link 2023-04-23 ⓘ] dla lepszego opisu.

GRUB jest zainstalowany, ale menu nie jest wyświetlane przy starcie systemu

Sprawdź /etc/default/grub czy GRUB_TIMEOUT jest ustawiony na 0, w takim przypadku ustaw go na liczbę dodatnią: ustawia on liczbę sekund przed załadowaniem domyślnego wpisu GRUB. Sprawdź również, czy GRUB_TIMEOUT_STYLE jest ustawiony na hidden i ustaw go na menu, aby menu było wyświetlane domyślnie. Następnie regeneruj główny plik konfiguracyjny i uruchom ponownie komputer, aby sprawdzić, czy wszystko działa.

Jeśli to nie zadziała, mogą występować problemy z niekompatybilnością terminala graficznego. Ustaw GRUB_TERMINAL_OUTPUT na console w /etc/default/grub, aby wyłączyć terminal graficzny GRUB-a.

Zobacz także