Присоединяйтесь!
Авторизация

Компиляция ядра для Raspberry Pi и Raspberry Pi2

12 March 2015 - Автор Martyn

Приветствую уважаемое русскоязычное сообщество Raspberry Pi

Сегодня я расскажу вам про технику компиляции ядра для Raspberry Pi и Raspberry Pi2

Зачем нам может потребоваться компиляция собственного ядра? Ну например, чтобы добавить устройства, которые не поддерживаются в дефолтной сборке.

Итак, приступим. Собирать будем методом кросс-компиляции на мощной x86 машине. Можно конечно компилировать ядро прямо на Raspberry - но это безумие, т.к процесс займёт несколько дней. Я пользуюсь кросс-компилятором, который предоставляет BSQuask (о том что это такое написано в этой статье http://raspberrypi.ru/blog/readblog/149.html)

1. Вытягиваем свежую версию с ядра с репозитория

git clone https://github.com/raspberrypi/linux.git

Настоятельно рекомендую скачивать таким образом, а не тянуть готовый zip архив с гитхаба, т.к архив генерируется немного битым и потом возникают проблемы при компиляции

2. Вытягиваем инструментарий, который подготовит скомпилированное ядро для Raspberry Pi git

clone https://github.com/raspberrypi/tools.git

Если компилируете ядро для Raspberry Pi2, то этот инструментарий не нужен.

Заходим в папку со скаченными исходниками ядра

cd linux

и приступаем к кросс-компиляции ядра:

В первую очередь нам нужно создать файл .config, в котором содержатся параметры, с которыми будет скомпилировано ядро.

Мы будем строить нашу новую конфигурацию на основе стандартного для Raspberry Pi конфига bcmrpi_defconfig (bcm2709_defconfig для Raspberry Pi 2):

для Raspberry Pi:

make ARCH=arm CROSS_COMPILE=/opt/bsquask/host/usr/bin/arm-raspberrypi-linux-gnueabi- bcmrpi_defconfig

для Raspberry Pi 2:

make ARCH=arm CROSS_COMPILE=/opt/bsquask/host/usr/bin/arm-raspberrypi-linux-gnueabi- bcm2709_defconfig

Теперь когда конфиг создан, нам нужно внести в него требуемые нам изменения (например включить в ядро поддержку новых устройств)

Для этого выполняем команду

make ARCH=arm CROSS_COMPILE=/opt/bsquask/host/usr/bin/arm-raspberrypi-linux-gnueabi- menuconfig

Появляется диалоговое окно, в котором отмечаем требуемые опции и нажимаем кнопку Save, после чего приступаем непосредственно к компиляции:

make ARCH=arm CROSS_COMPILE=/opt/bsquask/host/usr/bin/arm-raspberrypi-linux-gnueabi- -k -j3

Опция -j позволяет распараллелить сборку ядра. Её значение рекомендуется устанавливать по формуле j=число ядер процессора+1

После этой команды начинается сборка ядра, у меня этот процесс занимает около 15 минут

После сборки ядра необходимо установить модули в отдельную папку:

mkdir ../modules
make modules_install ARCH=arm CROSS_COMPILE=/opt/bsquask/host/usr/bin/arm-raspberrypi-linux-gnueabi- INSTALL_MOD_PATH=../modules/

Меняем папку /lib/modules/ на SD карте на только что сгенерированную /modules/lib/modules

Теперь нужно подготовить ядро для Raspberry Pi при помощи скрипта imagetool-uncompressed.py из инструментария, который скачивался в начале этой статьи:

cd ../tools/mkimage/
python ./imagetool-uncompressed.py ../../linux/arch/arm/boot/Image

После этого в текущей директории появится файл kernel.img, который нужно скопировать на карту памяти в /boot/

ВНИМАНИЕ! Это важно и об этом мало где пишут. Для Raspberry Pi2 данная процедура не требуется. /linux/arch/arm/boot/Image - уже пригодное к использованию на Raspberry Pi 2 ядро, просто скопируйте его на карту памяти в /boot/kernel7.img

P.S небольшой хинт - чтобы получить конфиг, с которым было собрано ядро, в загруженной операционной системе выполняем команду

cat /proc/config.gz | gunzip

Надеюсь, статья окажется полезной. Если есть вопросы, то можете задавать в комментариях к статье

12 March 2015
Martyn
автор статьи

Комментариев: 1

  1. rasplinux

    09 December 2018 - Ответить

    это не сборка ядра,  ребята

Отправить комментарий

Авторизуйтесь для отправки комментария

Присоединяйтесь
Новые сообщения
  • Raspberry pi 4 не включается
    27 June, 2020
    @antonabsatarov#6188 что ты имеешь введу под "правильным" форматированием флешки? Все же исправно работало, а в один момент...…
  • Raspberry pi 4 не включается
    27 June, 2020
    @x6vital#6185 я сам столкнулся со схожей проблемой. Решил правильным форматированием флэшки (криво устанавливалась ОС), а...…
  • Как запустить X без монитора?
    22 June, 2020
    Как вы поняли, что они не запускаются? …
  • Как запустить X без монитора?
    22 June, 2020
    Добрый день, поставил на малину расбери ос с рабочим столом, если она загружается без монитора то не стартуют приложения...…
  • Raspberry pi 4 не включается
    19 June, 2020
    @mojo#6171 дело в том что она вообще неадекватно себя как то ведёт. Просто в один момент перестала включаться. Пробую...…
  • Troyka Cap
    19 June, 2020
    Всем спасибо вопрос больше не актуален …
  • Troyka Cap
    19 June, 2020
    @mojo#6178 спасибо скорее всего я уже нашёл ответ: Подключение Платформа устанавливается сверху на одноплатник Raspberry...…
  • rap os без Х + twinkle + service чо происходит
    18 June, 2020
    Добрый день, подскажите пожалуйста, установил настроил twinkle на малину(rasp os linux 10), запускаю через терминал twinkle...…
  • Troyka Cap
    18 June, 2020
    @mojo#6178 держу в курсе) я гулять пошёл и по этому от меня связи не будет до след дня надеюсь что Вы сможете помочь …
  • Troyka Cap
    18 June, 2020
    @mojo#6178 да и как могут быть проблемы с пинами Pi если вентелятор работает от тройка кэп просто от других пинов вопрос...…
  • Troyka Cap
    18 June, 2020
    @mojo#6175 дело не в разбери пинах так как я пробовал ставить вентилятор на саму разбери и он работал и на тройке он...…
  • Troyka Cap
    18 June, 2020
    нет. проблема врядли в токе. Там 1 светодиод, ему вполне хватит питания от RasPi …
  • Troyka Cap
    18 June, 2020
    @mojo#6176 просто в видео у амперки где обзор на тройку обзор там доп блок питания может просто не хватает тока? …
  • Troyka Cap
    18 June, 2020
    В самом Cap'е врядли могут быть проблемы. Там почти нет ничего такого, что может не работать. …
  • Troyka Cap
    18 June, 2020
    На схеме есть соответствие пинам Cap'а пинам на Raspberry Pi Попробуй модуль со светодиодом подключить напрямую к RasPi...…
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6167 какие подробности я не сказал? Никаких. Я в принципе не понимаю, как ПИН может не работать....…
  • Troyka Cap
    18 June, 2020
    @mojo#6170 возможно что я не втыкаю в тройку кэп доп зарядник и мне не хватает мощности? …
  • Troyka Cap
    18 June, 2020
    @mojo#6170 http://wiki.amperka.ru/продукты:raspberry-troyka-cap пролистни чуть ниже проект маячок дана схема и код …
  • Raspberry pi 4 не включается
    18 June, 2020
    так и должно быть. Без SD карты горят все светодиоды Скорее всего не тот образ записал на карту …
  • Troyka Cap
    18 June, 2020
    Скидывай код и схему к какому пину Troyka Cap и что ты подключаешь …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 не работают пины на troyka cap беру пример кода с амперки делаю всё по схеме но результата нет …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 скажи что тебе ещё сказать? …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 какие подробности я не сказал? я то знаю почему пины не работают да? …
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6165 Troyka Cap не хочет работать И? А можно - хоть какие-то подробности? Или Вы предполагаете, что...…
  • Troyka Cap
    18 June, 2020
    Добрый день, подскажите пожалуйста в чём проблема. У меня заказана Troyka Cap с amperka.ru и Raspberry Pi 4b . Проблема в...…