Skompilowanie jądra systemu daje nam wiele możliwości. Dzięki tej operacji możemy dostosować główny element systemu pod nasz sprzęt, architekturę oraz konkretne ustawienia. Przygotowując własny Kernel możemy wybrać, które jego elementy mają być dostępne, a które nie. W tym artykule pokażemy jak skompilować jądro dla Raspberry Pi pod systemem Raspbian.

Przed rozpoczęciem samej kompilacji, będziemy musieli przygotować sobie środowisko do pracy. Jeżeli właśnie co wgraliśmy na kartę SD system Raspbian, należy powiększyć rozmiar partycji tak aby wypełniał całą dostępną przestrzeń. Źródła jądra oraz skompilowane moduły zajmują sporo miejsca (około 1.5 GB).

Przygotowania do kompilacji

Na samym początku pobieramy odpowiednie narzędzia, które posłużą do kompilacji jądra Linux. Wydajemy polecenie:

apt-get -y install git gcc make screen libncurses5-dev

Programy te pozwolą nam na pobranie źródeł jądra z Gita, kompilację oraz konfigurację jądra systemu.

Raspberry Pi Firmware

Kompilując jądro możemy również zaktualizować firmware do najnowszej wersji. Gotowe pliki są dostępne do pobrania z Gita. Po skopiowaniu ich w odpowiednie miejsce kasujemy klon repozytorium, aby zaoszczędzić miejsce na urządzeniu.

cd /usr/src
git clone --depth 1 git://github.com/raspberrypi/firmware.git
cd firmware/boot
cp arm128_start.elf arm192_start.elf arm224_start.elf bootcode.bin loader.bin start.elf /boot/
cd /usr/src
rm -rf firmware

Kompilacja jądra

Również i tutaj musimy pobrać pliki z Gita. Operacja ta może potrwać zdecydowanie dłużej w związku z ilością plików do pobrania. Posłużą nam do tego celu polecenia:

cd /usr/src
git clone --depth 1 git://github.com/raspberrypi/linux.git
cd linux

Obecne ustawienia jądra możemy skopiować za pomocą polecenia:

zcat /proc/config.gz > .config

a następnie dopasować jądro do własnych potrzeb wydając polecenie:

make menuconfig

Uruchomi nam się wtedy menu, w którym będziemy mogli wybrać konkretne elementy jądra systemu Linux, włączać i wyłączać je lub ustawić jako moduły.

make menuconfig

Następnie uruchamiamy nowy terminal w screenie, aby uruchomić kompilację. Potrwać może ona od 9 do 12 godzin w zależności od tego jakie elementy wybraliśmy.

screen
nice make;
nice make modules;
[CTRL]+[A],[D]

Dla przykładu to samo jądro kompilowane na serwerze wyposażonym w procesor Intel Core i7 920 zajęło jedynie 206 sekund.

Kompilacja jądra Linux 3.2.27

Ostatnim krokiem będzie skopiowanie i zainstalowanie skompilowago jądra w systemie, usunięcie źródeł oraz ponowne uruchomienie dystrybucji.

cp arch/arm/boot/Image /boot/kernel.img
make ARCH=arm modules_install INSTALL_MOD_PATH=/
cd /usr/src
rm -rf linux
shutdown -r now

Jeżeli wszystko się udało, a powinno, po uruchomieniu systemu będziemy cieszyć się z nowej wersji jądra.

# PRZED KOMPILACJĄ
root@raspberrypi:/usr/src/linux# uname -a
Linux raspberrypi 3.1.9+ #272 PREEMPT Tue Aug 7 22:51:44 BST 2012 armv6l GNU/Linux

# PO KOMPILACJI
root@raspberrypi:/usr/src/linux# uname -a
Linux raspberrypi 3.2.27+ #1 PREEMPT Thu Sep 20 14:26:51 UTC 2012 armv6l GNU/Linux