Buildroot

Тема дорожной карты · Embedded / Систем­ный программист

Buildroot — система сборки минимального Linux-дистрибутива для embedded-устройств. Из единого make-команды получается компактный root filesystem (rootfs), ядро Linux и bootloader, оптимизированные под целевую плату. По сравнению с Yocto — проще для старта, конфигурация через привычный menuconfig, меньше уровней абстракции. Лучший выбор для устройств с фиксированной конфигурацией: датчики, gateways, edge-IoT, медицинская аппаратура.

Как это работает

В корне Buildroot — Makefile и набор package/* директорий, каждая описывает один компонент (BusyBox, OpenSSH, конкретная библиотека). Конфигурация хранится в .config файле, генерируется через make menuconfig — иерархическое меню с архитектурой, ядром, bootloader-ом и пакетами. Сборка make тащит исходники, кросс-компилирует через указанный toolchain (внутренний или внешний), собирает rootfs нужного формата (cpio, ext4, squashfs, ubifs). Результат — output/images/ с готовыми артефактами для прошивки. Per-board defconfigs (configs/raspberrypi5_defconfig) дают стартовую точку для популярных плат — модификация поверх в один-два пакета.

Когда применять

Buildroot подходит, когда: устройство имеет фиксированную аппаратную и программную начинку (не нужны пакетные менеджеры в рантайме), нужен минимальный размер rootfs (5-20 МБ — реально), команда хочет понимать каждую строку конфига, рантайм-обновления решаются через A/B partition swap а не apt. Yocto предпочтительнее, когда устройство будет жить годами с обновлениями кастомных пакетов или есть свои layer-ы от вендоров.

Типичные ошибки

Игнорирование BR2_EXTERNAL для проектных пакетов — все правки попадают в дерево Buildroot и теряются при обновлении. Использование make без -j$(nproc) — сборка длится в разы дольше на современных многоядерных машинах. Изменение .config руками без make savedefconfig — конфиг разбухает, теряется минимальный defconfig. Сборка под root без BR2_REPRODUCIBLE — артефакты невоспроизводимы между машинами и не подходят для supply-chain верификации. Кэширование dl/ (downloaded sources) обязательно для CI — без него каждая сборка тащит сотни МБ исходников из интернета.

Связанные понятия

Полезные ресурсы