Содержание
Компиляция Ядра 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
