Kompilacja jądra dla Raspberry Pi daje nam możliwość dostosowania systemu do naszego sprzętu. Dzięki tej operacji możemy dostosować konkretne ustawienia a co za tym idzie możemy dodawać nowe funkcje oraz usunąć niepotrzebne uzyskując optymalny system. Po takiej operacji uzyskamy lepszą wydajność systemu. Wszystkich zainteresowanych do wykonania takiej czynności zapraszam do skorzystania z opisu.
Poniższy poradnik przedstawia kompilacje jądra w systemie Debian squeeze. Tak skompilowane jądro działa z obrazami Debiana oraz Arch Linux dla Raspberry Pi.
Przygotowanie systemu
Instalujemy klucze publiczne do repozytorium.
apt-get install emdebian-archive-keyring
Dodajemy poniższy wpis do repozytorium Debiana ( /etc/apt/sources.list ).
deb http://www.emdebian.org/debian squeeze main
Instalujemy wymagane pakiety oraz biblioteki.
apt-get install git-core g++-4.4-arm-linux-gnueabi xapt
Tworzymy katalog oraz ściągamy źródła i narzędzia z repozytorium git.
mkdir raspberrypi
cd raspberrypi
git clone https://github.com/raspberrypi/tools.git
git clone https://github.com/raspberrypi/linux.git
cd linux
Kompilacja jądra
Generujemy podstawowy plik konfiguracyjny jądra (.config).
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- bcmrpi_cutdown_defconfig
Jeżeli chcemy wprowadzić swoje ustawienia w jądrze, wykonujemy polecenie:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig
Po dokonaniu odpowiednich zmian zapisujemy i wychodzimy z menu konfiguracyjnego. Teraz możemy rozpocząć budowę jądra. Aby przyspieszyć proces kompilacji, możemy użyć flagi J. Zalecana wartość to ilość rdzeni + 1 (np. wartość 5 jeśli masz procesor czterordzeniowy).
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j5
Po pomyślnej kompilacji jądra musimy jeszcze zbudować moduły. Tworzymy katalog dla modułów.
mkdir ../modules
Następnie kompilujemy oraz „instalujemy” moduły do uprzednio utworzonego katalogu.
make modules_install ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-INSTALL_MOD_PATH=../modules/
Instalacja skompilowanego jądra
Narzędziem imagetool-uncompressed.py przygotowujemy jądro dla Raspberry Pi.
cd ../tools/mkimage/
./ImageTool-uncompressed.py ../../linux/arch/arm/boot/Image
W przypadku gdy dostaniemy poniższy komunikat instalujemy paczkę python2.6 oraz linkujemy go.
/usr/bin/env: python2: Nie ma takiego pliku ani katalogu
sudo ln -s /usr/bin/python2.6 /usr/bin/python2
Usuwamy stare jądro na karcie SD i przenosimy nowe.
sudo rm /media/boot-partition-uuid/kernel.img
sudo mv kernel.img /media/boot-partition-uuid/
Usuwamy katalogi modules, firmware z całą ich zawartością. Znajdują się one na partycji systemowej Raspberry Pi.
sudo rm -rf /media/rootfs-partition-uuid/lib/modules/
sudo rm -rf /media/rootfs-partition-uuid/lib/firmware/
Kopiujemy nowe katalogi modules, firmware z całą ich zawartością w miejsce starych. Robimy zapis na karcie.
cd ../../modules/
sudo cp -a lib/modules/ /media/rootfs-partition-uuid/lib/
sudo cp -a lib/firmware/ /media/rootfs-partition-uuid/lib/
sync
Teraz mamy już gotowy system z nowym jądrem dla Raspberry Pi. Możemy uruchomić malinę i zobaczyć owoc naszej pracy :)