Buildroot: опыт создания прошивок архитектуры ARM для мониторинга
LVEE 2019
Небольшие по размеру фирмы с одной стороны, нуждаются в качественном мониторинге своей инфраструктуры (особенно в свете повсеместной виртуализации), с другой стороны, для них финансово тяжело закупать новое оборудование под мониторинг и содержать достаточно квалифицированный ИТ-персонал.
Как правило, в таких организациях работает 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
Back