Инструменты пользователя

Инструменты сайта


wiki:u3b-kernel

Компиляция Ядра Linux

Инструкции взяты и переведены из статьи: https://hackmd.io/@ericlinsechs/How-to-Build-Linux-kernel-for-BeagleBone-Black

Это руководство описывает процесс сборки ядра Linux для BeagleBone Black (BBB) из исходного кода на хосте под управлением Ubuntu 20.04. Скомпилированное ядро будет загружено на BBB с помощью TFTP и NFS.

Компилятор (Toolchain)

Создайте рабочую пространство для размещения инструментов и компонентов системы.

cd ~
mkdir beaglebone_workspace
cd beaglebone_workspace

Установите необходимые инструменты:

sudo apt update
sudo apt install git build-essential flex bison libssl-dev libncurses-dev u-boot-tools lzop tftpd-hpa nfs-kernel-server

GCC Cross Compiler

sudo apt-get install gcc-arm-linux-gnueabihf

Библиотека GCC libc

mkdir arm-toolchain
cd arm-toolchain
wget -c https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

Partition Manager

sudo apt-get install gparted

Загрузчик u-boot

Скачайте загрузчик u-boot версии 2023.10

wget -c https://github.com/u-boot/u-boot/archive/refs/tags/v2023.10.tar.gz

Настройте исходники u-boot для компиляции для платформы BeagleBone Black (она же Mentorel BeagleBone uSomIQ)

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

Команда для компиляции. Здесь параметр -j4 определяет количество ядер процессора на ПК, где установлен Linux Ubintu. Чем больше ядер - тем быстрее выполняется компиляция

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

После компиляции загрузчика выполните команду `ls`, чтобы убедиться, что у вас есть исполняемые файлы MLO и u-boot.img. Файл MLO — это загрузчик первого этапа, а u-boot.img — это загрузчик второго этапа, который выполняет загрузку ядра Linux и запуск операционной системы.

Компиляция ядра Linux

Скачайте исходники ядра Linux для процессорного модуля Mentorel BeagleBone uSomIQ

wget -c https://github.com/beagleboard/linux/archive/refs/tags/5.10.168-ti-r76.tar.gz
tar -xvf 5.10.168-ti-r76.tar.gz

Настройте исходники ядра для компиляции для платформы BeagleBone Black (она же Mentorel BeagleBone uSomIQ)

sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig

Команда компиляции ядра:

sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage dtbs LOADADDR=0x80008000 -j4

Компилируем модули ядра

sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 modules

Результат:

Подготовка карты MicroSD

На карте создаем два раздела: один для загрузки ядра и второй для файловой системы.
Можно использовать разные утилиты, здесь пример с gparted.
Создайте новый раздел на 50МБ и измените тип файловой системы на fat32, также обязательно отметить этот раздел как загрузочный!
Добавьте второй раздел на оставшееся место на карточке SD. Для ускорения загрузки этот раздел можно ограничить по размеру, но не критично. Файловая система - тип ext4!

Файловая система

Скачайте BusyBox

cd ~/beaglebone_workspace
wget -c https://github.com/mirror/busybox/archive/refs/tags/1_36_0.tar.gz
tar -xvf 1_36_0.tar.gz

Настроим BusyBox

cd busybox-1_36_0
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

После загрузки меню конфигурации выберите опцию 'Build static binary (no shared libs)'

Установите Busybox в корневой раздел вашей SD-карты.

Сборка автоматически создаёт файл «busybox.links», который используется командой 'make install' для создания символических ссылок на исполняемый файл BusyBox для всех скомпилированных команд. Для указания места установки используется переменная среды CONFIG_PREFIX, которая устанавливает жёсткие или символические ссылки в зависимости от настроек конфигурации. (Вы также можете запустить скрипт установки вручную по адресу «applets/install.sh»).

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_PREFIX=/media/<username>/rootfs/ install
wiki/u3b-kernel.txt · Последнее изменение: 2026/02/11 19:35 — maxx