FANDOM


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łaEdytuj

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ówEdytuj

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

Narzędzie konfigurująceEdytuj

Tryb graficzny - xconfigEdytuj

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

$ make xconfig

Tryb tekstowy - menuconfigEdytuj

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

$ make menuconfig

KonfiguracjaEdytuj

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.

BudowanieEdytuj

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.

InstalacjaEdytuj

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ńczenieEdytuj

Pozostaje tylko restart:

# init 6

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

BibliografiaEdytuj

Debian-Kernel-Compile-Howto autorstwa Falko Timme

Zobacz teżEdytuj