GRUB (Polski) - ArchWiki

Jump to content

# GRUB (Polski)

From ArchWiki
Status tłumaczenia: Ten artykuł jest przetłumaczoną wersją GRUB. Data ostatniego tłumaczenia: 2024-05-05. Możesz pomóc zsynchronizować tłumaczenie, jeśli nastąpiły zmiany w wersji angielskiej.

Powiązane artykuły

- Arch boot process
- Master Boot Record
- GUID Partition Table
- Unified Extensible Firmware Interface
- GRUB Legacy
- GRUB/EFI examples
- GRUB/Tips and tricks
- Multiboot USB drive

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.

Uwaga 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ń.

Ostrzeżenie 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

Uwaga

- Zaleca się przeczytanie i zrozumienie stron Unified Extensible Firmware Interface, Partitioning#GUID Partition Table i Arch boot process#UEFI 2.
- 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

Uwaga

- 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/`.

    Uwaga
    - 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.

Wskazówka 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.
Uwaga

- `--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ć.

Ostrzeżenie

- 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

Uwaga 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/`insmod`em, 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.

Uwaga

- 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.

Wskazówka 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.

Uwaga Pamiętaj, aby zawsze regenerować główny plik konfiguracyjny po dokonaniu zmian w `/etc/default/grub` i/lub plikach w `/etc/grub.d/`.
Ostrzeżenie 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.

Uwaga

- 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.

Wskazówka

- Po zainstalowaniu lub usunięciu jądra, wystarczy ponownie uruchomić powyższe polecenie grub-mkconfig.
- Aby uzyskać wskazówki dotyczące zarządzania wieloma wpisami GRUB-a, na przykład podczas korzystania z jąder linux i linux-lts, zobacz GRUB/Tips and tricks#Multiple entries.

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.

Wskazówka `/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.

Uwaga

- 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.

Wskazówka 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.

Uwaga 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ć.
- 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

Ostrzeżenie 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

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`.

Uwaga 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.

Wskazówka `/boot` nie musi znajdować się na oddzielnej partycji; może również pozostać w głównym drzewie katalogów `/` systemu
Ostrzeżenie 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.

Ostrzeżenie

- 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.

Uwaga

- 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`.

Wskazówka 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.

  Wskazówka 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]

Uwaga 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

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

Wskazówka 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.

Wskazówka 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.

Uwaga 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#Boot loader 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

Uwaga GRUB obsługuje uruchamianie `bootmgr` bezpośrednio i chainloading sektora rozruchowego partycji nie jest już wymagane do uruchomienia systemu Windows w konfiguracji BIOS/MBR.
Ostrzeżenie 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`.

Uwaga 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#Boot loader 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

Uwaga 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.

Uwaga 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:

Uwaga 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

Uwaga 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

Uwaga 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 Installation guide (Polski)#Zweryfikuj tryb uruchomionego systemu.

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).

Ostrzeżenie 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 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

- Wikipedia:GNU GRUB
- Oficjalny podręcznik GRUB
- Strona wiki Ubuntu dla GRUB-a
- Strona wiki GRUB opisująca kroki kompilacji dla systemów UEFI
- Wikipedia:BIOS Boot partition
- Jak skonfigurować GRUB-a

Categories:

- Boot loaders (Polski)
- GNU (Polski)

GRUB (Polski)
Add topic