Jak skompilować własne jądro Linux - Kompletny przewodnik
Dlaczego warto kompilować własne jądro?
Większość użytkowników Linuksa korzysta z gotowych jąder dostarczanych przez dystrybucję. Jest to wygodne i w zupełności wystarczające. Jednak kompilacja własnego jądra otwiera świat nowych możliwości i jest fundamentalną umiejętnością dla każdego, kto chce dogłębnie zrozumieć działanie systemu.
Główne powody, dla których warto to zrobić:
- Optymalizacja: Możesz usunąć niepotrzebne sterowniki i funkcje, tworząc jądro idealnie dopasowane do Twojego sprzętu, co może (choć nie musi) przełożyć się na lepszą wydajność i szybszy start systemu.
- Najnowsze funkcje: Dostęp do najnowszych funkcji, sterowników i poprawek bezpieczeństwa, zanim trafią one do oficjalnych repozytoriów Twojej dystrybucji.
- Nauka: To najlepszy sposób, aby zobaczyć “od kuchni”, jak zbudowany jest system operacyjny.
- Wsparcie dla sprzętu: Czasami jedyny sposób, aby uruchomić bardzo nowy lub nietypowy sprzęt, to włączenie eksperymentalnych sterowników w jądrze.
Ten przewodnik przeprowadzi Cię przez cały proces, krok po kroku.
Krok 1: Przygotowanie środowiska
Do kompilacji jądra potrzebujemy kilku niezbędnych narzędzi.
- Dla systemów bazujących na Debianie (Ubuntu, Mint):
sudo apt-get update sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev - Dla systemów bazujących na Red Hat (Fedora, CentOS):
sudo dnf groupinstall "Development Tools" sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
Krok 2: Pobranie źródeł jądra
Najnowsze wersje jądra zawsze znajdziesz na oficjalnej stronie kernel.org. Pobierz archiwum z najnowszą stabilną wersją (mainline), a następnie rozpakuj je.
# Wejdź do katalogu, gdzie chcesz trzymać źródła
cd /usr/src/
# Pobierz źródła (zastąp numer wersji aktualną)
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.5.3.tar.xz
# Rozpakuj archiwum
tar -xf linux-6.5.3.tar.xz
# Wejdź do katalogu ze źródłami
cd linux-6.5.3/
Krok 3: Konfiguracja jądra
To najważniejszy etap. Musimy stworzyć plik .config, który mówi kompilatorowi, jakie funkcje, sterowniki i opcje ma włączyć.
Najbezpieczniejszym podejściem jest skopiowanie konfiguracji obecnego jądra i zmodyfikowanie jej.
# Kopiuje konfigurację aktualnie działającego jądra
cp /boot/config-$(uname -r) .config
Teraz mamy kilka sposobów na edycję tej konfiguracji:
make oldconfig: System zapyta Cię tylko o nowe opcje, które pojawiły się w nowszej wersji jądra w stosunku do Twojej starej konfiguracji. To najszybsza metoda. (Więcej w naszym artykule omake oldconfig!)make menuconfig: Uruchamia tekstowy interfejs graficzny, który pozwala na wygodne przeglądanie i modyfikowanie wszystkich opcji. To najbardziej polecana metoda.
Uruchommy menuconfig:
make menuconfig
Poruszaj się po menu strzałkami, włączaj (Y), wyłączaj (N) lub ustawiaj jako moduł (M) interesujące Cię opcje. Po zakończeniu zapisz zmiany.
Krok 4: Kompilacja
Gdy plik .config jest gotowy, możemy rozpocząć kompilację. To proces, który może potrwać od kilkunastu minut do kilku godzin, w zależności od mocy Twojego procesora.
# Uruchom kompilację, używając wszystkich dostępnych rdzeni procesora (-j `nproc`)
make -j $(nproc)
Rola Initrd/Initramfs
Zanim przejdziemy do instalacji, warto wspomnieć o initrd (initial RAM disk) lub initramfs (initial RAM filesystem). Jest to mały system plików, który jest ładowany do pamięci przed właściwym jądrem i służy do jego przygotowania. Zawiera on podstawowe moduły (np. sterowniki do kontrolera dysków, systemu plików), narzędzia do wykrywania sprzętu i montowania katalogu głównego systemu (root filesystem).
W nowoczesnych systemach Linux, initramfs jest kluczowy, ponieważ jądro samo w sobie jest bardzo modularne i często potrzebuje specyficznych sterowników, aby w ogóle móc uzyskać dostęp do dysku, na którym znajduje się reszta systemu. Polecenie make install zazwyczaj automatycznie generuje odpowiedni plik initramfs dla Twojego nowego jądra, używając narzędzi takich jak dracut (Red Hat) czy update-initramfs (Debian/Ubuntu).
Krok 5: Instalacja modułów i jądra
Po zakończeniu kompilacji, musimy zainstalować skompilowane moduły i sam obraz jądra.
# Zainstaluj moduły
sudo make modules_install
# Zainstaluj obraz jądra
sudo make install
Polecenie make install automatycznie skopiuje vmlinuz do /boot, utworzy initrd i, na większości systemów, samodzielnie zaktualizuje konfigurację bootloadera GRUB.
WAŻNE: Po instalacji i aktualizacji GRUB-a, wymagany jest restart systemu, aby zmiany zostały aktywowane.
Krok 6: Restart i weryfikacja
Wszystko gotowe! Teraz wystarczy zrestartować komputer.
sudo reboot
Podczas startu systemu, w menu GRUB, powinieneś zobaczyć nową pozycję z Twoim świeżo skompilowanym jądrem. Wybierz ją.
Po zalogowaniu, możesz zweryfikować, czy nowy kernel jest aktywny, poleceniem uname -r. Powinno ono wyświetlić wersję jądra, którą kompilowałeś.
uname -r
Podsumowanie
Udało się! Skompilowałeś i uruchomiłeś własne jądro Linuksa. Choć proces na początku może wydawać się skomplikowany, daje ogromną satysfakcję i kontrolę nad systemem. To brama do głębszego zrozumienia Linuksa i świata open source. Nie bój się eksperymentować z opcjami konfiguracyjnymi!