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 o make 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!