Международная конференция разработчиков
и пользователей свободного программного обеспечения

Buildroot: опыт создания прошивок архитектуры ARM для мониторинга

Алексей Лукьянчук, Москва, Russian Federation

LVEE 2019

Using the buildroot build system allows you to create customized solutions that can be operated by personnel with minimal knowledge of the Linux operating systems. This system is friendly to beginners, but at the same time gives ample opportunities for customization for an experienced developer. It is perfect for solving the problem of inexpensive, but full-featured monitoring of it infrastructure, minimally demanding to the training of its operating personnel.

Небольшие по размеру фирмы с одной стороны, нуждаются в качественном мониторинге своей инфраструктуры (особенно в свете повсеместной виртуализации), с другой стороны, для них финансово тяжело закупать новое оборудование под мониторинг и содержать достаточно квалифицированный ИТ-персонал.

Как правило, в таких организациях работает 1 системный администратор, знающий ОС семейства Windows и слабо знакомый с zabbix, Linux.

Для решения данной задачи подходит связка buildroot + одноплатный компьютер архитектуры ARM + zabbix.

Прежде всего, не следует путать систему сборки и дистрибутив. Buildroot может собрать систему из набора пакетов, которые ему предложили. Buildroot построен на make-файлах и поэтому имеет огромные возможности по кастомизации.

Первоначальное конфигурирование системы можно провести через KConfig. Выбрать целевую архитектуру, настроить загрузчик, добавить нужные пакеты. Отдельно сконфигурировать ядро. Для многих плат, а так же qemu с эмуляцией разных архитектур, уже есть defconfig’и конфигураций. Собираем настроенную систему и получаем работающий дистрибутив.

Buildroot хорош своей кастомизацией. В данном случае я портирую пакет zabbix для сборки из исходников. Кроме того, описание пакета, настройки системы в целом, а также дополнительные файлы будут храниться в отдельном оверлее, который легко передавать другим разработчикам. Для этого используется механизм External-tree.
Для портирование пакета нужно всего 2 файлы + добавить указание на эти файлы в сам buildroot(ещё 1 файл). Config.in – файл для KConfig, для настройки пакета и добавления его в сборку/ zabbix.mk – файл инструкций по сборке и установке пакета в систему.
Для дополнительной настройки можно использовать скрипты на разных этапах сборки: после сборки rootfs до упаковки в образы и после упаковки в образы.

Использование systemd вносит свои нюансы- мне потребовалось создать дополнительные target’ы для подготовки системы к старту. И написать несколько несложных сервисов, в т.ч. с таймерами.

В результате будет получена прошивка, упакованная в один файл sdcard.img. Достаточно утилиты dd, что бы залить её на носитель.
Во время загрузки прошивки происходит расширение раздела данных на весь носитель, восстановление конфигурационных файлов, загрузка сервисов. В результате при лёгком администрировании и минимальных навыках настройки пакетов в linux можно получить программно-аппаратный комплекс мониторинга, который можно портировать на нужную архитектуру.

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад