Czym jest GRUB: Kompletny przewodnik po menedżerze rozruchu GNU

Ostatnia aktualizacja: 14 października 2025
  • GRUB to menedżer rozruchu GNU, który wybiera i ładuje system operacyjny, obsługujący BIOS/UEFI i Multiboot.
  • GRUB 2 dodaje moduły, ulepszoną obsługę systemu plików, wyszukiwanie UUID i graficzne menu/terminal.
  • Konfiguracją zarządza się poprzez /etc/default/grub i 40_custom, a jej ponowną generację wykonuje się za pomocą update-grub lub grub2-mkconfig.
  • Bezpieczeństwo: chroń GRUB-a hasłem, korzystaj z szyfrowania LUKS i stosuj silną politykę haseł.

Ogólna ilustracja dotycząca GRUB-a

Jeśli zainstalowałeś na swoim komputerze system GNU/Linux lub korzystasz z wielu systemów operacyjnych, prawdopodobnie słyszałeś o GRUB-ie. To ten mały, ale potężny program, który widzisz tuż przed uruchomieniem systemu, pozwalający wybrać, co załadować. Choć często pozostaje niezauważony, jego rola jest kluczowa dla uruchomienia systemu operacyjnego i płynnego przekazania kontroli jądru.

W świecie rozruchu komputerów PC, GRUB stał się de facto standardem ze względu na swoją moc i elastyczność. Powstały w ramach projektu GNU, jest obecnie najpopularniejszym menedżerem rozruchu w GNU/Linux , kompatybilnym z szeroką gamą architektur i systemów plików, przyjaznym dla początkujących, a jednocześnie scyzorykiem szwajcarskim dla tych, którzy dopracowują każdy szczegół procesu rozruchu.

Czym jest GNU GRUB i do czego służy?

GNU GRUB (GNU GRand Unified Bootloader) to menedżer wielokrotnego rozruchu: oprogramowanie, które oprogramowanie układowe (BIOS lub UEFI) uruchamia po włączeniu komputera, aby wybrać i załadować system operacyjny. Umożliwia użytkownikom wybieranie pozycji menu, przekazywanie parametrów do jądra, rozruch z sieci, a nawet interakcję z konsolą w celu rozwiązywania określonych problemów.

Jest on używany głównie w dystrybucjach GNU/Linux, choć był również używany w innych systemach, takich jak Solaris na architekturze x86. W nowoczesnych systemach UEFI oprogramowanie układowe bezpośrednio ładuje plik wykonywalny GRUB znajdujący się na partycji systemowej EFI (ESP) , pod warunkiem, że jest on zarejestrowany w pamięci NVRAM; w BIOS-ie/MBR GRUB zajmuje początkowe sektory dysku i kontynuuje działanie od tego miejsca.

Poza typowym menu, GRUB jest zgodny ze specyfikacją Multiboot, co oznacza, że ​​może bezproblemowo uruchamiać kompatybilne jądra . A gdy jądro znajdzie się w pamięci, GRUB przekazuje kontrolę i jego zadanie jest wykonane, co nie jest łatwym zadaniem.

Ekran opcji rozruchu GRUB

Karta techniczna i dane projektu

GRUB jest częścią ekosystemu GNU i jest dystrybuowany jako wolne oprogramowanie na licencji GNU GPL v3 lub nowszej . Jego rozwój jest otwarty, z oficjalnym repozytorium, systemem śledzenia błędów, stroną internetową i bardzo aktywną społecznością.

Został napisany głównie w języku C i assemblerze i działa na kilku platformach: IA-32, x86-64 i PowerPC, między innymi. Obecna gałąź to GRUB 2 (reimplementacja historycznego „GRUB Legacy”). Najnowsza wydana stabilna wersja to 2.12 (20 grudnia 2023 r.). Aby sprawdzić wersję lokalną, możesz uruchomić: grub-install --version i zobaczysz odpowiadający mu łańcuch.

Trochę historii i ewolucji

GRUB powstał z inicjatywy Ericha Stefana Boleyna w kontekście GNU Hurd i mikrojądra Mach. Aby rozwiązać problem rozbieżności w metodach rozruchu, stworzono specyfikację Multiboot, która umożliwiła programom ładującym i jądrom „mówienie tym samym językiem”. W 1999 roku Gordon Matzigkeit i Yoshinori Okuji zainicjowali jego przyjęcie jako oficjalnego pakietu projektu GNU.

Około 2002 roku grupa japońskich badaczy rozpoczęła prace nad projektem PUPA (Preliminary Universal Programming Architecture), którego celem było przepisanie GRUB-a, aby uczynić go bardziej niezawodnym i modułowym. Efektem tych starań był GRUB 2 , podczas gdy poprzednia wersja stała się znana jako „GRUB Legacy” (ostatnia aktualizacja 0.97 miała miejsce w 2005 roku). Od 2007 roku kilka dystrybucji przeszło na GRUB 2, a do końca 2009 roku zdecydowana większość z nich domyślnie go zawierała.

Schemat procesu rozruchu GRUB

Jak uruchomić komputer za pomocą GRUB (BIOS i UEFI)

Po włączeniu komputera oprogramowanie układowe przeprowadza kontrolę (pamięć RAM, zegar, urządzenia, kolejność rozruchu) i poszukuje bootloadera. W systemach z BIOS-em/MBR sterowanie jest przekazywane do Główny rekord rozruchowy (MBR), początkowe 512 bajtów dyskuGRUB został podzielony na etapy: Etap 1 (minimalny kod w MBR), Etap 1.5 (w późniejszych sektorach, mostkowanie w celu zrozumienia systemów plików) oraz Etap 2 (menu i funkcje zaawansowane). W GRUB 2 to „1.5” już nie istnieje; teraz istnieją konkretne obrazy, takie jak boot.img, core.img i modułów (*.mod), które są łączone zgodnie z instalacją.

  Różnice między systemami Windows Pro i Enterprise a innymi edycjami

W UEFI proces jest bardziej bezpośredni: oprogramowanie układowe uruchamia plik binarny GRUB EFI z partycji EFI , pod warunkiem, że jest ona poprawnie zainstalowana i zarejestrowana. W obu przypadkach GRUB wyświetla menu lub konsolę, ładuje wybrane jądro, a następnie przekazuje do niego wykonywanie.

Specyfikacja i kompatybilność Multiboot

GRUB implementuje funkcję Multiboot, umożliwiającą uruchamianie kompatybilnych jąder bez konieczności stosowania specjalnych „sztuczek”. Co więcej, w przypadku systemów, które jej nie obsługują (takich jak Windows czy DOS ), oferuje ona ładowanie łańcuchowe, czyli uruchamianie pierwszego sektora partycji, na którym znajdują się jej programy ładujące.

Jego zgodność z systemami plików jest szeroka: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS i innymi. Może również odczytywać dane z woluminów LVM i macierzy RAID, co stanowi istotną zaletę w przypadku złożonej struktury pamięci masowej.

Wyróżnione funkcje i funkcje

  • Interfejs menu Konfigurowalny i niezwykle elastyczny interaktywny terminal z automatycznym uzupełnianiem za pomocą klawisza Tab i skrótami w stylu powłoki Bash.
  • Wsparcie LBA (adresowanie bloków logicznych) aby pokonać klasyczne ograniczenia BIOS-u i odczytać dane z obszaru poza 1024 cylindrami.
  • Pojemność dla rozruch sieciowy (PXE/TFTP) i terminale zdalne, przydatne w scenariuszach scentralizowanego zarządzania.
  • Automatyczna dekompresja i rozpoznawanie wielu formatów wykonywalnych.
  • Trwałe przechowywanie zmiennych z zapisz_środowisko/załaduj_środowisko y grub-editenv (jeśli platforma na to pozwala).
  • Wykrywanie całej pamięci RAM, niezależność geometrii dysku i mechanizmy wyszukiwania według etykiet i UUID.
  • Graficzne wsparcie dla menu i tła oraz modułowa konstrukcja, która utrzymuje rdzeń.img małe i ładuje moduły według potrzeb.

Kluczowa terminologia: urządzenia, partycje i ścieżki

GRUB nadaje nazwy dyskom i partycjom na swój własny sposób. Pierwszy dysk to zazwyczaj (HD0), pierwsza partycja (HD0,1) W GRUB 2 (pamiętaj: w GRUB 2 numeracja zaczyna się od 1; w Legacy od 0). Aby odwołać się do całego dysku, pomija się partycję: (hd0).

Aby wskazać pliki, urządzenie jest łączone ze ścieżką: (hd0,1)/ruta/al/archivo. Obsługuje również listy zablokowanych (listy bloków) w przypadku konieczności wskazania dokładnej lokalizacji na dysku pliku, który nie jest widoczny jako taki w systemie plików, np. (hd0,1)+1 dla pierwszego sektora partycji, przydatne w przypadku chainloader +1.

„System plików głównych” w GRUB-ie to nie to samo, co „/” w Linuksie. To po prostu partycja główna, z której GRUB będzie odczytywał swoje pliki ; gdy jądro Linuksa przejmie kontrolę, zdefiniuje swój własny, rzeczywisty system główny, a wszystko inne w GRUB-ie staje się nieistotne.

Interfejsy GRUB

GRUB oferuje trzy główne widoki. Najbardziej znanym jest menu z prekonfigurowanymi wpisami; można nawigować za pomocą klawiszy strzałek, uruchomić system za pomocą Entera, edytować wpis za pomocą „e” lub otworzyć konsolę za pomocą „c”.

Edytor wejściowy pozwala modyfikować wiersze w locie (dodawać za pomocą „o/O”, edytować za pomocą „e”, usuwać za pomocą „d”) i, jeśli wszystko wygląda dobrze, uruchamiać system za pomocą „b”. Idealnie nadaje się do testowania parametrów jądra bez ingerencji w pliki.

Konsola to najpotężniejszy tryb: obsługuje kontekstowe autouzupełnianie, edycję skrótów i wszystkie wewnętrzne polecenia GRUB-a do lokalizowania dysków, ładowania jądra/initrd lub ładowania łańcuchowego. Jeśli plik konfiguracyjny jest brakujący lub uszkodzony, GRUB uruchomi się w tym miejscu, aby można było ręcznie rozwiązać problem.

Typowe komunikaty o błędach

Błędy mogą pojawić się na etapie początkowym (bardziej ograniczonym) lub podczas ładowania menu i modułów (bardziej opisowe). Poniżej znajduje się kompilacja reprezentatywnych kodów, które może wyświetlić GRUB, sparafrazowanych dla jasności :

  • 1: Nieprawidłowa ścieżka lub ścieżka nie jest absolutna; 2: Nieprawidłowy typ pliku (nie jest to zwykły plik); 3–4: Uszkodzone dane/nagłówek podczas dekompresji; 5: uszkodzona tablica partycji lub nieważne.
  • 6: Niezgodność Stage1/Stage2; 7: Ładowanie poniżej 1 MB nie jest obsługiwane; 8: Próba uruchomienia bez ładowania jądra; 9: Nieznany błąd rozruchu.
  • 10: Funkcje Multiboot nie są obsługiwane; 11: Urządzenie nie zostało rozpoznane; 12: Urządzenie jest nieprawidłowe; 13: Nieobsługiwany format pliku wykonywalnego.
  • 14: System plików uniemożliwia odczytanie całego pliku; 15: nie znaleziono pliku; 16: Niespójna struktura systemu plików.
  • 17: Nie można zamontować wybranej partycji; 18: Cylinder poza zakresem obsługiwanym przez BIOS (typowe dla starszych dysków); 19: Initrd przed jądrem.
  • 20: Moduły przed jądrem multiboot; 21: Wybrany dysk nie istnieje; 22: Partycja nie istnieje; 23: Błąd podczas interpretacji liczby.
  • 24: Dostęp do bloku poza partycją; 25: Błąd odczytu dysku; 26: Zbyt wiele łączy symbolicznych; 27: Nieznane polecenie.
  • 28: Element nie mieści się w pamięci; 29: Błąd zapisu na dysku; 30: Nieprawidłowy argument; 31: Plik nie jest wyrównany sektorowo (ReiserFS, użyj bezogonkowy).
  • 32: Wymagane uwierzytelnienie; 33: Urządzenie szeregowe nie zostało skonfigurowane; 34: Brak wolnych sektorów dla etapu 1.5 po MBR (konflikt z EZ-BIOS lub zbyt wczesny start partycji).
  Ulepszenia przeglądarki Firefox 150 na Linuksie i najważniejsze nowe funkcje

Podstawowe polecenia GRUB

W konsoli możesz uruchamiać bardzo przydatne polecenia interaktywne. Na przykład: boot uruchamia ostatnio załadowany (jądro lub ładowacz łańcuchowy) i chainloader <archivo> ładuje sektor lub plik z łańcucha; typowym skrótem dla systemu Windows jest chainloader +1.

displaymem wyświetla zużycie pamięci zgodnie z BIOS-em, co jest przydatne, jeśli nie masz pewności co do wykrytej pamięci RAM. initrd <archivo> określasz początkowy obraz dysku RAM potrzebny jądru.

Aby zainstalować w MBR z konsoli GRUB Legacy, należy użyć install z trasami do etap 1, etap 2 i opcjonalnie do pliku konfiguracyjnego. Dzisiaj w GRUB 2, z poziomu systemu, normalne jest używanie grub-install i zregeneruj menu za pomocą update-grub/grub2-mkconfig.

Polecenie kernel określa plik binarny jądra i jego parametry, na przykład: kernel /vmlinuz root=/dev/sda5Zwykle poprzedza ją root (hdX,Y) o rootnoverify aby ustawić partycję, z której GRUB będzie odczytywał.

Pliki konfiguracyjne i dyrektywy

W GRUB Legacy menu znajdowało się w /boot/grub/menu.lst o grub.confz dyrektywami takimi jak color, default, fallback, hiddenmenu, password, timeout, splashimage i bloki title z zamówieniami dla każdego systemu.

Klasycznym przykładem (parafraza) byłaby sekcja Linuksa z root (hd0,2), kernel z jego parametr główny=/…I boot; i inny dla systemu Windows z rootnoverify (hd0,1) y chainloader +1.

W GRUB 2 automatycznie generowany plik to /boot/grub/grub.cfg. Nie zaleca się edytowania go ręcznie; zamiast tego należy go dostosować /etc/default/grub (wartości takie jak GRUB_TIMEOUT, GRUB_DEFAULTitp.) i dodawane są niestandardowe wpisy /etc/grub.d/40_customNastępnie jest wykonywany update-grub o grub2-mkconfig aby ponownie wygenerować menu.

Kluczowe różnice między GRUB Legacy i GRUB 2

  • Plik konfiguracyjny przeszedł z menu.lst/grub.conf a grub.cfg, z odnowioną składnią i poleceniami oraz automatycznym generowaniem za pomocą grub-mkconfig.
  • Numeracja partycji zaczyna się w 1 roku w GRUB 2 (w Legacy wartość zaczynała się od 0).
  • Trwałość zmiennych z save_env/load_env w niektórych konfiguracjach.
  • Lepsze wykrywanie tras i wyszukiwanie według UUID/tagów; obsługiwanych jest więcej systemów plików.
  • Bezpośredni odczyt z LVM i RAID.
  • Grafiki terminala i menu oraz zreorganizowane obrazy: Etap 1.5 zniknął; boot.img, core.img i moduły dynamiczne (*.mod).

Bezpieczeństwo i wzmacnianie za pomocą GRUB

Słabo zabezpieczony menedżer rozruchu to sito. Jeśli ktoś z dostępem fizycznym może edytować parametry jądra lub uruchomić inny wpis, skutecznie wyłącza to zabezpieczenia . Dlatego zaleca się zabezpieczenie GRUB-a hasłami i wdrożenie najlepszych praktyk.

Ustaw jeden silne hasło aby ograniczyć modyfikacje wpisów lub dostęp do konsoli. W GRUB 2 używaj nazw użytkowników i haseł z grub-mkpasswd-pbkdf2 i skonfiguruj odpowiednie reguły w skryptach /etc/grub.d/.

Zawiera również szyfrowanie dysku za pomocą LUKS , dzięki czemu nawet jeśli ktoś ukradnie komputer, nie będzie mógł odczytać danych. Zapewnia również rygorystyczne zasady dotyczące haseł w systemie, aby ograniczyć ataki siłowe.

Zarządzaj historią logów z rozwagą : historie, które mogą dać wskazówki atakującemu, powinny zostać ograniczone do minimum lub scentralizowane za pomocą kontroli dostępu; historie, które pomagają w audytowaniu złośliwych prób, powinny być agregowane i analizowane w bezpiecznym miejscu.

Aby wykryć inne zainstalowane systemy i automatycznie generować wpisy, zainstaluj os-proberZaoszczędzi Ci to czasu i zapobiegnie błędom podczas ponownego tworzenia menu.

  SAP: Funkcje i korzyści

Instalacja i konserwacja

Jeśli nie zainstalowałeś GRUB-a podczas instalacji dystrybucji, możesz to zrobić później. W GRUB 2, z poziomu systemu, uruchom sudo grub-install /dev/sdX (zamień na swój dysk) a następnie sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgMenu zostanie wyświetlone przy następnym uruchomieniu.

W przypadku konsoli GRUB Legacy klasyczna procedura polega na wskazaniu katalogu głównego i uruchomieniu instalacji: root (hd1,0) następnie setup (hd1,0) dla pierwszej partycji drugiego dysku lub setup (hd1) jeśli wskażesz MBR tego drugiego dysku.

Edytuj bezpośrednio /boot/grub/grub.cfg Nie jest to dobry pomysł w przypadku GRUB 2, nawet jeśli jest to technicznie możliwe. Zalecana trasa to jest zmiana /etc/default/grub, posługiwać się /etc/grub.d/40_custom dla własnej treści i regeneracji.

Praktyczne pytania i przydatne skróty

Jak sprawdzić, która partycja jest partycją rozruchową na /dev/sda? W systemach BIOS/MBR: sudo fdisk -l /dev/sda (zobacz gwiazdkę przy „Boot”). W GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT i poszukaj partycji EFI (FAT32, typ EF00/flags esp). Również sudo efibootmgr -v wyświetla zarejestrowane wpisy rozruchowe.

Jak uzyskać UUID partycji? z blkid o lsblk -f, Por ejemplo: sudo blkid /dev/sda2 zwraca swoje UUID i inne metadane.

Jak sprawić, aby GRUB 2 czekał 10 sekund przed wprowadzeniem domyślnego wpisu? Dostosowuje się /etc/default/grub z GRUB_TIMEOUT=10 (i jeśli ma to zastosowanie, GRUB_TIMEOUT_STYLE=menu) i wykonuje sudo update-grub o grub2-mkconfig.

Jakie polecenia GRUB Legacy należy zainstalować na pierwszej partycji drugiego dysku? Otwórz konsolę i uruchom: root (hd1,0) a następnie setup (hd1,0)Jeśli chcesz MBR, to będzie to setup (hd1).

Jakie kroki należy podjąć, aby zmienić konfigurację GRUB 2? 1) Edytuj /etc/default/grub (np., GRUB_DEFAULT, GRUB_TIMEOUT), 2) dodaj wpisy w /etc/grub.d/40_custom jeśli ich potrzebujesz, 3) zregeneruj się za pomocą update-grub/grub2-mkconfig, 4) uruchom ponownie i przetestuj.

Gdzie umieścić niestandardowe menu w GRUB 2? En /etc/grub.d/40_custom (lub własne pliki w /etc/grub.d/ (z odpowiednimi uprawnieniami). Nigdy nie edytuj ręcznie /boot/grub/grub.cfg z wyjątkiem sytuacji awaryjnych.

Gdzie w starszej wersji GRUB były przechowywane wpisy? En /boot/grub/menu.lst o grub.conf, zgodnie z rozkładem.

Jak uzyskać dostęp do konsoli GRUB z menu? Naciśnij klawisz „c” w GRUB 2 lub Legacy. Aby edytować konkretny wpis, naciśnij „e”. Oba skróty są bardzo przydatne, gdy trzeba zdiagnozować problem na bieżąco.

Przykłady typowych opcji

Domyślny wybór rozruchu: GRUB_DEFAULT=0 rozpoczyna się pierwsza tura; z GRUB_DEFAULT=saved Zapamiętuje ostatnio używaną konfigurację. Po zmianie, wygeneruj konfigurację ponownie.

Czas oczekiwania: GRUB_TIMEOUT=4 dostosowuje opóźnienie menu; z 0 uruchamia się bez zatrzymywania; w niektórych scenariuszach można ukryć menu za pomocą GRUB_TIMEOUT_STYLE=hidden dla czystszego startu.

Aktualizacja menu: w Debianie/Ubuntu i pochodnych, sudo update-grub; w innych, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Upewnij się że masz os-prober zainstalowany, jeśli chcesz automatycznie wykryć inne systemy.

Chociaż GRUB pojawia się również w kontekstach spoza GNU/Linux, pamiętaj, że nie jest to usługa wsparcia. Jeśli Twój problem dotyczy systemu Windows, najpraktyczniej będzie skorzystać z forów poświęconych temu systemowi, aby uzyskać pomoc.

GRUB ewoluował od prostego menu startowego do prawdziwego środowiska przedsystemowego, zdolnego do uruchamiania wielu systemów operacyjnych, zarządzania złożonymi dyskami i pomagającego odzyskać system za pomocą zaledwie kilku poleceń. Dzięki odpowiedniej konfiguracji i odpowiednim zabezpieczeniom (hasła GRUB, szyfrowanie LUKS, dobrze zarządzane zasady kluczy i logi) uzyskasz solidny, elastyczny i, przede wszystkim, kontrolowany proces rozruchu.

Bootkit UEFI
Podobne artykuły:
UEFI Bootkit: Bootkitty na Linuksie i dziedzictwo BlackLotus