Система сборки находится здесь
Сборка основана на Buildroot и выполняется в Docker-контейнере.
Сборочный target выбирает не конкретную плату, а семейство/версию ядра. Поддержка конкретных плат добавляется через DTS/DTB, которые включаются в образ.
Итоговый образ содержит:
Image, DTB и extlinux.conf;Актуальный список target можно посмотреть командой:
make
На текущий момент доступны:
make atb_arm64_mainline_linux_6_1
make atb_arm64_mainline_linux_6_18
make atb_arm64_vendor_linux_6_1
make atb_arm64_vendor_linux_5_10_190_alt
| Target | Ядро |
|---|---|
atb_arm64_mainline_linux_6_1 |
mainline Linux 6.1 |
atb_arm64_mainline_linux_6_18 |
mainline Linux 6.18 |
atb_arm64_vendor_linux_6_1 |
vendor Linux 6.1 |
atb_arm64_vendor_linux_5_10_190_alt |
vendor Linux 5.10.190 |
Конкретная плата выбирается не отдельным Buildroot target, а через DTB/DTS.
DTS и board-specific скрипты находятся в дереве:
atb_tree/board/<soc>/<board>/<kernel>/
Общие Buildroot defconfig находятся здесь:
atb_tree/configs/
Общие kernel config и patches находятся здесь:
atb_tree/board/common/kernel_config/
atb_tree/board/common/kernel_patch/
DTS добавляются в kernel source через ATB Linux extension hooks. Скрипты подключения называются:
add.sh
Рекомендуется использовать системы на базе Debian:
В теории подойдёт любая Linux-система с установленными:
gitgit-lfsmakewget -O get-docker.sh https://get.docker.com
sudo sh get-docker.sh
sudo usermod -aG docker ${USER}
newgrp docker
sudo apt update
sudo apt -y install git git-lfs make
Для сборки необходимо стабильное интернет-соединение.
git clone https://git.atb-e.ru/cpu_soft/atb-buildroot.git
cd atb-buildroot
make
Например, для сборки ARM64-образа с vendor Linux 6.1:
make atb_arm64_vendor_linux_6_1
После этой команды будет подготовлен Buildroot, собран Docker-образ и запущен Docker-контейнер. Внутри контейнера автоматически применяется соответствующий Buildroot defconfig.
Консоль контейнера выглядит примерно так:
root@atb-buildroot:/build/output#
make
Сборка загрузит необходимые исходники и соберёт систему. Процесс может занять несколько часов.
При успешном завершении появится сообщение:
################################
# BUILD COMPLETED SUCCESSFULLY #
################################
exit
После сборки образ находится в директории:
output/<TARGET>/images/sd_emmc_<TARGET>.img
Например:
output/atb_arm64_vendor_linux_6_1/images/sd_emmc_atb_arm64_vendor_linux_6_1.img
Чтобы записать SD карту необходимо выйти из контейнера!
Для записи SD карты подготовлена специальная команда:
make burn_sd_card
После запуска скрипт покажет список доступных target:
Image list:
1: atb_arm64_mainline_linux_6_1
2: atb_arm64_mainline_linux_6_18
3: atb_arm64_vendor_linux_6_1
4: atb_arm64_vendor_linux_5_10_190_alt
Select image (number):
Нужно выбрать номер target, который был собран ранее.
После этого скрипт покажет список подключённых hotplug-накопителей:
Storage list:
1: /dev/sdb usb 59.7G SD Card Reader
Нужно выбрать номер накопителя для записи.
Затем скрипт покажет выбранный образ и накопитель:
Image: atb_arm64_vendor_linux_6_1
Storage: /dev/sdb
Do you want to continue? [y/N]
Для продолжения нужно ввести: y
После подтверждения будет выполнена запись образа: output/<TARGET>/images/sd_emmc_<TARGET>.img, на выбранный накопитель.
Например, для target atb_arm64_vendor_linux_6_1 будет записан файл: output/atb_arm64_vendor_linux_6_1/images/sd_emmc_atb_arm64_vendor_linux_6_1.img
ВНИМАНИЕ: запись полностью перезапишет выбранный накопитель. Перед подтверждением обязательно проверьте, что выбран правильный /dev/sdX.
Записать файл "sd_emmc_<TARGET>.img" на sd карту можно с помощью графической утилиты.
Например balenaEtcher
EMMC память напаяна на плату с процессором, поэтому запись EMMC осуществляется с целевого устройства.
mount /dev/<sdX> /mnt
Где:
<path_to_sd_emmc.img> - путь к собранному образу системы
<sdX> - идентификатор диска (USB накопителя)
sudo dd if=mnt/sd_emmc_<TARGET>.img of=/dev/mmcblk0; sync
В GIT репозитории включена автоматическая сборка.
Чтобы скачать образ необходимо перейти по данной ссылке


Образы упакованы в zip архив.
Перед запистью архив необходимо распаковать!!!