Проблема обеспечения
После создания образа каждая новая плата должна быть персонализирована - с такими параметрами, как имя хоста, ключи SSH, конфигурация или регистрация бэкэнда.
Делать это вручную для десятков или даже сотен Raspberry Pi Compute Module 5 (CM5) устройств просто нецелесообразно.
Именно здесь rpi-sb-provisioner приходит на помощь гибкий фреймворк автоматизации первой загрузки для Raspberry Pi устройств.
Как rpi-sb-provisioner Работает
При первой загрузке система автоматически запускает rpi-sb-provisioner, который:
- Считывает файл конфигурации обеспечения
- Выполняет сценарии для применения системных настроек
- Записывает идентификационные данные устройства (серийные номера, учетные данные, сертификаты и т.д.)
- Отмечает завершение процесса инициализации
Это гарантирует, что каждое устройство будет уникально настроено и готово к развертыванию - без ручного вмешательства.
Установка
Следуйте официальному руководству по установке на сайте: https://github.com/raspberrypi/rpi-sb-provisioner
Конфигурация
rpi-sb-provisioner включает в себя простой графический интерфейс конфигурации на основе браузера.
Чтобы открыть его, выполните следующую команду в терминале:
xdg-open http://localhost:3142Отсюда:
- Откройте меню Images и загрузите Ваш файл .img (созданный с помощью rpi-image-gen).
- Откройте меню Options, чтобы настроить параметры инициализации, например, семейство целевых устройств или используемый базовый образ.
- Полученная конфигурация сохраняется в /etc/rpi-sb-provisioner/config и может выглядеть следующим образом:
CUSTOMER_KEY_FILE_PEM=
CUSTOMER_KEY_PKCS11_NAME=
GOLD_MASTER_OS_FILE=/srv/rpi-sb-provisioner/images/deb12-arm64-ix-base.img
PROVISIONING_STYLE=naked
RPI_DEVICE_BOOTLOADER_CONFIG_FILE=/srv/rpi-sb-provisioner/bootloader_config_files/bootloader-gpio17.naked
RPI_DEVICE_EEPROM_WP_SET=
RPI_DEVICE_FAMILY=5
RPI_DEVICE_FIRMWARE_FILE=/lib/firmware/raspberrypi/bootloader-2712/latest/pieeprom-2025-10-17.bin
RPI_DEVICE_LOCK_JTAG=
RPI_DEVICE_RETRIEVE_KEYPAIR=
RPI_DEVICE_STORAGE_CIPHER=aes-xts-plain64
RPI_DEVICE_STORAGE_TYPE=emmc
RPI_SB_PROVISIONER_MANUFACTURING_DB=/srv/rpi-sb-provisioner/manufacturing.db
RPI_SB_WORKDIR=Использование
- Например, при использовании официального Raspberry Pi Compute Module 5установите перемычку J2, чтобы отключить загрузку eMMC.
- Подключите CM5 к узлу инициализации через USB. Процесс инициализации начнется автоматически.
- По завершении инициализации снимите перемычку и подключите питание - теперь устройство будет загружаться с eMMC.
Преимущества
- Полностью автоматизированное включение устройств
- Согласованная конфигурация для всех устройств
- Простая интеграция с производственными системами или внутренними API
- Воспроизводимость - никаких ручных настроек или несоответствий между устройствами
Расширение процесса
Рабочий процесс инициализации может быть расширен и включать в себя:
- Вызовы API для регистрации устройств с внутренними службами
- Генерация сертификата для безопасной загрузки или шифрования
- Проверка оборудования или функциональные тесты перед активацией
С rpi-sb-provisioner, инициализация становится интегрированным шагом в конвейере сборки и развертывания, а не просто задней мыслью.
Статьи из этой серии
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- От стоковой ОС к производственной платформе
- Customizing Raspberry Pi OS with rpi-image-gen
- Устойчивость системы - проектирование компоновки корневой файловой системы A/B
- Провизионирование - автоматизация первой загрузки с помощью rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Источники
- rpi-image-gen: https://github.com/raspberrypi/rpi-image-gen
- rpi-sb-provisioner: https://github.com/raspberrypi/rpi-sb-provisioner
- SWUpdate: https://github.com/sbabic/swupdate
- swugenerator: https://github.com/sbabic/swugenerator