Linux Wiki
Advertisement

Ten poradnik ma na celu wyjaśnienie, jak samodzielnie skompilować kernela. Będę posługiwał się nieistniejącą (jeszcze?) wersją 31.3.37. Przystosowane pod Debiana lub Ubuntu, ale po zmianie sposobu budowania powinno działać na każdym systemie.

Ściągamy źródła[]

Najnowszą wersję możemy ściągnąć ze strony http://kernel.org/ . Po ściągnięciu kopiujemy ją do katalogu /usr/src (albo innego) i rozpakowujemy poleceniem:

$ tar -xjf linux-31.3.37.tar.bz2

Następnie przechodzimy do katalogu wypakowanego kernela:

$ cd linux-31.3.37

Instalacja pakietów[]

Teraz musimy zainstalować pakiety o nazwach kernel-package i fakeroot.

Narzędzie konfigurujące[]

Tryb graficzny - xconfig[]

Do użycia tego trybu będzie potrzebny pakiet libqt3-headers. Uruchamiamy go wpisując polecenie:

$ make xconfig

Tryb tekstowy - menuconfig[]

Do użycia tego trybu będzie potrzebny pakiet ncurses-dev. Uruchamiamy go wpisując polecenie:

$ make menuconfig

Konfiguracja[]

Teraz czas na najtrudniejszą część zadania. Korzystając z wybranego narzędzia konfigurującego, dokonujemy wyboru modułów, które mają zostać zainstalowane. Na początek warto wczytać aktualną konfigurację, w przypadku xconfig'a dokonujemy tego poleceniem File -> Load. Wybieramy plik /boot/config-aktualna.wersja.kernela.

Teraz przeglądamy wszystkie interesujące nas kategorie i wyłączamy niepotrzebne naszemu sprzętowi moduły. Aby dowiedzieć się, jakie są potrzebne, możemy skorzystać z okienkowego menedżera urządzeń (gnome-device-manager) lub wydać następujące polecenie:

$ find /sys/bus -type d -exec ls -ld {} \; | perl -ne "m/(module|drivers)\/([^ \/]+)/; print \$2.\"\\n\"" | sort -u

Uwaga! Jeśli nie jesteś pewien, czy wyłączyć jakiś moduł, zostaw włączony!

Warto zajrzeć również do następujących opcji:

  • General setup -> Optimize for size (wyłączyć)
  • Processor type and features -> Processor family (wybrać odpowiedni - czasem informacje można zdobyć z /proc/cpuinfo)
  • File systems (wyłączyć bardzo niepopularne i nieużywane systemy plików)

Po odpowiednim skonfigurowaniu zapisujemy konfigurację w domyślnym miejscu (dla xconfig'a - naciskamy Ctrl+S) i zamykamy konfiguratora.

Budowanie[]

Wydajemy polecenia:

make dep
make-kpkg clean
fakeroot make-kpkg --revision=custom.1.0 kernel_image

Budowanie powinno przebiegać bez błędów (mogą być ostrzeżenia). Jeśli występują błędy to znaczy, że albo mamy rozwalony/przestarzały GCC, albo wybraliśmy jakieś podejrzane moduły. W takim przypadku piszemy:

$ make clean

a następnie znowu uruchamiamy konfiguratora (np. make xconfig) i wywalamy to co powoduje błędy.

Instalacja[]

Przechodzimy do katalogu nadrzędnego, w którym znalazł się pakiet, i wydajemy polecenie:

# dpkg -i kernel-image-31.3.37_custom.1.0_i386.deb

Musimy jeszcze stworzyć initrd. W tym celu wydajemy polecenie:

# mkinitramfs -o /boot/initrd.img-31.3.37 -v 31.3.37

Ważne jest, aby wybrać nową wersję kernela, a nie aktualną. Do tego służy przełącznik -v.

Teraz kompilujemy plik konfiguracyjny GRUB-a:

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

Zakończenie[]

Pozostaje tylko restart:

# init 6

W przypadku błędów przy uruchamianiu resetujemy i wybieramy starsze jądro - zawsze jest taka możliwość.

Bibliografia[]

Debian-Kernel-Compile-Howto autorstwa Falko Timme

Zobacz też[]

Advertisement