Сборка ядра для Raspberry Pi

В этой статье посмотрим как кроcскомпилировать ядро для raspberry pi (у меня b+).
Я буду производить махинации в Fedora, но суть идентична для всех дистрибутивов.
Для сборки нам понадобиться компилятор. Его можно собрать самому, скачать из репозиториев Вашей ОС или же с git raspberry.

Поставим из малинового гита.

git clone git://github.com/raspberrypi/tools
sudo mv tools /opt/
export PATH=/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:$PATH

Теперь качаем нужную версия ядра. Для этого стягиваем исходники указав нужную ветвь.

git clone git://github.com/raspberrypi/linux -b rpi-4.4.y

Конфигурируем стандартным конфигом.

cd linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig

Для raspberry pi 2 так:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

Если нужно что-то править (нужно поставить ncurses):

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

Теперь можно пробовать собирать.

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

Тут упомяну, что раньше для малины в стандартном расбиане не поддерживали дерево устройств. Современный дистрибутив поддерживает dts и еще кучу всего (что можно выпилить).
Опционально указываем флаг -j N для компиляции в несколько потоков.

По окончании операции создаем папки и монтируем флешку с расбианом на борту. На ней должно быть два раздела.

mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/mmcblk0p1 mnt/fat32
sudo mount /dev/mmcblk0p2 mnt/ext4

Создаем резервную копию старого ядра.

sudo cp mnt/fat32/kernel.img mnt/fat32/kernel-backup.img

Для RPi 2:

sudo cp mnt/fat32/kernel7.img mnt/fat32/kernel7-backup.img

Теперь копируем собранное ядро на карту памяти.
Устанавливаем модули.

sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install

Копируем ядро:

sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/kernel.img

Для RPi 2

sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/kernel7.img

Копируем дерево устройств.

sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/

Отмонтируем флешку.

sudo umount mnt/fat32
sudo umount mnt/ext4

Пускаем raspberry в полет.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий