Kompilacja jądra, w systemie Debian GNU/Linux.

Czym jest jądro?

Jądro jest najważniejszą częścią systemu operacyjnego, jego „mózgiem”, ale samo nie jest systemem operacyjnym. Zadaniem jądra jest obsługa systemu plików, zarządzanie pamięcią, przydzielanie programom czasu procesora i urządzeń zewnętrznych. Obecnie Debian korzysta z jądra Linuxa (stąd nazwa Debian GNU/Linux). 1

Po co mam zajmować się kompilacją jądra?

Jeśli nie znasz odpowiedzi na powyższe pytanie i Twój system działa zgodnie z Twoimi oczekiwaniami, to kompilacja jądra nie jest Ci potrzebna.

W moim przypadku, za kompilacją przemówiły 2 czynniki:

  1. Chciałem się czegoś nowego nauczyć,
  2. System nie obsługiwał w pełni mojej pamięci ram.

Mając w systemie 1,5 GB pamięci ram, Debian pokazywał mi przy użyciu polecenia: top

Mem: 906792 total, 290544 used, 616248 free

Gdzie podziało się 630 MB pamięci ram? Nie miałem wkompilowanej w jądro obsługi pamięci większej niż 1 GB. Przejdźmy do sedna sprawy.

Kompilacja jądra

Uruchamiamy terminal, w konsoli wydajemy następujące polecenie:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2

Tym sposobem, pobraliśmy najnowszą (obecnie) wersję jądra, tj.

linux-2.6.22.tar.bz2

Następnie rozpakowujemy archiwum:

tar xvjf linux-2.6.22.tar.bz2

Kolejno kopiujemy wypakowany katalog, do /usr/src wydając polecenie, jako root:

mv linux-2.6.22 /usr/src/

Jak skonfigurować jądro?

Ja preferuję 2 sposoby:

  1. make menuconfig
  2. make xconfig

Jeśli wybierzesz pierwszy, pamiętaj o doinstalowaniu libncurses5-dev.

Drugi sposób jest wygodniejszy, działa tylko pod systemem X Window, do jego zastosowania też chciałbym Cię czytelniku zachęcić. Będziesz musiał doinstalować:

aptitude install libqt3-mt-devel libqt4-devel libqt3-headers libqt3-mt-dev

Następnie, uruchamisz konfigurator opcją:

make xconfig

Jeżeli przywita Cię radosny komunikat …

qconf: cannot connect to X server :0.0
make[1]: *** [xconfig] Błąd 1
make: *** [xconfig] Błąd 2

Należy jako zwykły użytkownik w konsoli wydać polecenie:

xhost +

oraz ponownie jako root:

make xconfig

Naszym oczom, ukaże się graficzny konfigurator, w którym wszystkie opcje są ładnie opisane, więc czytasz i konfigurujesz.
Ja sam, zaznaczyłem między innymi, w Processor type and features -> High Memory Support -> 4GB, po to abym mógł korzystać w pełni z pamięci ram.

Kompilacja jądra

Po skonfigurowaniu jądra, możemy przystąpić do jego kompilacji. W tym celu wydajemy komendy:

make bzImage
make modules
make modules_install

Kopiujemy bzImage do /boot/ wydając polecenie:

cp bzImage /boot/vmlinuz-2.6.22

Następnie kopiujemy System.map:

cp System.map /boot/System.map-2.6.22

Aby móc stworzyć initrd, piszemy w terminalu:

aptitude install initrd-tools

Teraz możemy poczytać: man mkinitrd

Jak i wykonać następne polecenie:

mkinitrd -o /boot/initrd.img-2.6.22 /lib/modules/2.6.22

Initrd został utworzyony w /boot.

Teraz dodajemy wpisy do gruba, sprawdzamy czy działa system. Jeśli nie działa, uruchamiamy go na starym jądrze.
Tylko pamiętajcie żeby nie usunąć aktualnych modułów i aktualnego jądra!

Na koniec, pokaże jaki rezultat przyniosła kompilacja jądra:

top

Mem: 1556928k total, 368364k used, 1188564k free

Podziękowania dla Minusa, za pomoc.

Przy pisaniu tego howto, korzystałem z:
[1] Debian users, Kompilacja jądra Linux