Kompilacja kernela dla Raspberry Pi

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 :)

Dołącz do rozmowy

Witaj na moim blogu, gdzie elektronika i oprogramowanie to główne tematy. Jako osoba za sterami tego miejsca, dążę do dostarczania wartościowych treści. Twoje komentarze stanowią dla mnie napęd do ciągłego doskonalenia. Ciekawią mnie Twoje myśli, pytania i osobiste doświadczenia związane z tym fascynującym światem. Przeglądając wpisy, na pewno masz wiele pomysłów i opinii. Nie krępuj się, podziel się nimi poniżej. Każdy komentarz to nie tylko opinia zwrotna, ale także początek inspirującej dyskusji.