Автоматическая сборка прошивки

Автоматическая сборка прошивки

14 октября 2009

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

Разработка системы автоматической сборки дистрибутива на базе Debian. Приложение предназначается для внутреннего использования и позволяет создавать прошивки для устройств на основе ОС Linux: роутеров, точек доступа, встраиваемой техники, серверов. Поддерживаются архитектуры i386 и ARM. В ближайшем будущем планируется портирование под MacOS. Управляющий сайт создан с применением технологии AJAX и представлен простым интерфейсом для получения прошивки в три шага.

В компанию обратился немецкий производитель сетевой техники. В выпускаемом оборудовании (роутере, точке доступа, файерволе, сетевом файловом или медиасервере) есть прошивка, состоящая из:

  • операционной системы;
  • драйверов устройств;
  • стека протоколов TCP/IP;
  • системного и прикладного сетевого ПО;
  • средства удаленного администрирования.

Без прошивки устройство не запускается. Все начинается с загрузки исходных кодов программных пакетов в репозиторий. Версии пакетов ежедневно обновляются, компилируются в фоне и участвуют в сборке прошивок. Затем прошивки готовятся к записи на флэш-память устройства. После прошивки оборудование «оживает», превращаясь из «кирпича» в полезный элемент домашней или офисной инфраструктуры.

Внимания заслуживает и кросс-компиляция, позволяющая собирать выполняемый код для процессора ARM при компиляции на x86. ARM-код не будет запускаться на x86, но кросс-компиляция позволит собрать прошивку. Для корректной компоновки пакетов отслеживаются версии и таблица зависимостей пакетов от других пакетов с учетом минимальной версии. Простой пример: для сборки протокола TCP/IP требуется определенная версия ядра. Для кода маршрутизатора — TCP/IP. Поэтому перед компиляцией маршрутизатора загружаются и подготавливаются (в определенной последовательности и нужных версиях) ядро и протоколы Интернета. Для сборки некоторых пакетов не обязательно используется последняя версия зависимых пакетов. Могут потребоваться и устаревшие библиотеки. Исходный код обновляется раз в сутки. Репозиторий помечается актуальным, выборочно пересобираются измененные пакеты. Производится ежедневная автоматическая компоновка последней версии прошивок для полного списка выпускаемого сетевого оборудования на базе i368 и ARM для дальнейшего тестирования на физических устройствах.

Автоматическая сборка прошивки