Buildroot для ELTAY RM88S
Общая информация
Для платы ELTAY RM88S доступна сборка Buildroot в виде SDK в репозитории на gitflic. SDK содержит внешний слой для плат ELTAY (buildroot-external-eltay), а основной репозиторий Buildroot подключен как подмодуль (используется версия 2025.02.6).
Поскольку ELTAY RM88S является вычислительным модулем, конфигурация операционной системы определяется не только самим модулем, но и используемой базовой платой. В SDK каждая конфигурация сборки соответствует конкретной комбинации ELTAY RM88S + базовая плата и включает необходимые Device Tree, настройки ядра и программные компоненты для работы с периферией выбранной платы.
В основной ветке репозитория main предоставляются следующие конфигурационные файлы:
| Конфигурация плат | Конфигурация Buildroot | Описание |
|---|---|---|
| ELTAY RM88S + Orange Pi CM5 Base Board | eltay_rm88s_op_baseboard_defconfig | Описание сборки |
| ELTAY RM88S + Orange Pi CM5 Tablet Base Board | eltay_rm88s_op_tablet_defconfig | Описание сборки |
Процесс сборки одинаков для каждой конфигурации.
Сборка
Подготовка
Для сборки необходимы:
- Linux host;
- Git;
- Docker.
Пакеты, необходимые самому Buildroot, вручную на хост устанавливать не требуется — они устанавливаются внутри Docker-образа.
Клонировать SDK необходимо вместе с подмодулями:
git clone --recurse-submodules https://gitflic.ru/project/elron-tech/buildroot-eltay.git
cd buildroot-eltay
Если репозиторий был склонирован без --recurse-submodules, Buildroot можно загрузить отдельно:
git submodule update --init --depth 1
Перед первой сборкой необходимо создать Docker-образ:
make docker-image
Основные команды
Все команды выполняются из корня репозитория buildroot-eltay.
- Показать справку:
make
- Показать доступные конфигурации плат:
make list-configs
- Собрать Docker-образ окружения:
make docker-image
- Применить
defconfig:make docker-defconfig CONFIG=eltay_rm88s_op_baseboard_defconfig - Запустить сборку после применения defconfig:
make docker-build
- Открыть
menuconfigдля текущей сборки:make docker-menuconfig - Сохранить текущую конфигурацию Buildroot обратно в defconfig платы:
make docker-save-config CONFIG=eltay_rm88s_op_baseboard_defconfig
- Очистить конкретный пакет:
make docker-package-dirclean PACKAGE=linux
- Открыть shell внутри сборочного Docker-контейнера:
make docker-shell
Переменные сборки
Makefile поддерживает следующие переменные:
| Переменная | Назначение | Значение по умолчанию |
|---|---|---|
CONFIG | defconfig из buildroot-external-eltay/configs/ | не задано |
OUT | отдельный каталог сборки Buildroot | не задано, используется buildroot/output |
PACKAGE | пакет Buildroot для docker-package-dirclean | не задано |
DL_DIR | общий каталог скачанных исходников | dl |
JOBS | количество параллельных задач сборки | $(nproc) |
IMAGE | имя Docker-образа сборочного окружения | buildroot-eltay:ubuntu24.04 |
OUT должен быть относительным путём внутри репозитория.
Последовательность сборки
При сборке можно использовать штатный каталог или отдельный каталог сборки.
Сборка в штатный каталог buildroot/output:
make docker-defconfig CONFIG=eltay_rm88s_op_baseboard_defconfig
make docker-build
Результаты сборки находятся в buildroot/output/images/. Основной образ для записи на microSD - buildroot/output/images/sdcard.img.
Использование отдельного OUT удобно, если необходимо хранить несколько сборок одновременно или экспериментировать с конфигурацией, не затрагивая другую сборку.
Сборка в отдельный каталог:
OUT=buildroot_build/eltay_rm88s_op_baseboard
make docker-defconfig CONFIG=eltay_rm88s_op_baseboard_defconfig OUT="$OUT"
make docker-build OUT="$OUT"
Артефакты располагаются в $OUT/images/. Основной образ - $OUT/images/sdcard.img.
Для всех последующих команд необходимо использовать тот же OUT.
Настройка Buildroot
Для изменения набора пакетов и опций Buildroot используется menuconfig.
Штатный каталог buildroot/output
Сначала применить конфигурацию нужной платы:
make docker-defconfig CONFIG=eltay_rm88s_op_baseboard_defconfig
Открыть меню:
make docker-menuconfig
После внесения изменений сохранить минимальный defconfig непосредственно в buildroot-external-eltay/configs/:
make docker-save-config CONFIG=eltay_rm88s_op_baseboard_defconfig
Отдельный каталог сборки
Необходимо указывать тот же OUT, который использовался при применении make docker-defconfig и сборке:
OUT=buildroot_build/eltay_rm88s_op_baseboard
make docker-defconfig CONFIG=eltay_rm88s_op_baseboard_defconfig OUT="$OUT"
make docker-menuconfig OUT="$OUT"
После выхода из menuconfig сохранить изменения:
make docker-save-config CONFIG=eltay_rm88s_op_baseboard_defconfig OUT="$OUT"
Файл eltay_rm88s_op_baseboard_defconfig в buildroot-external-eltay/configs/ будет обновлён автоматически.
Запись образа на microSD
Linux
Перед записью необходимо определить устройство карты памяти:
lsblk
Записывать необходимо на весь диск, например /dev/sdb, а не на раздел /dev/sdb1.
sudo dd if=path/to/image.img of=/dev/sdX bs=4M conv=fsync status=progress
Здесь в аргументе if необходимо указать путь до собранного образа, а в аргументе of - реальное устройство microSD.
Windows
Для записи можно использовать BalenaEtcher:
- Нажать
Flash from file. - Выбрать
sdcard.img. - Выбрать microSD-карту.
- Нажать
Flash!.
Запуск
Вставьте microSD-карту в используемую плату и подайте питание.
Консоль подключена к 3-контактному разъёму TTL Debug UART, который чаще всего выведен отдельно на базовой плате. Параметры подключения:
1500000 8N1
Данные для входа по умолчанию:
user: root
password: eltay