Das Problem der Bereitstellung
Nachdem Sie Ihr Image erstellt haben, muss jedes neue Board personalisiert werden - mit Einstellungen wie Hostname, SSH-Schlüssel, Konfiguration oder Backend-Registrierung.
Dies manuell für Dutzende oder gar Hunderte von Raspberry Pi Compute Module 5 (CM5) Einheiten ist einfach nicht praktikabel.
Und genau hier kommt rpi-sb-provisioner ins Spiel - ein flexibles First-Boot-Automatisierungs-Framework für Raspberry Pi Geräte.
Wie funktioniert rpi-sb-provisioner Funktioniert
Beim ersten Booten startet das System automatisch rpi-sb-provisioner, das:
- Liest eine Konfigurationsdatei für die Bereitstellung
- Skripte ausführt, um die Systemeinstellungen anzuwenden
- Schreibt Daten zur Geräteidentität (Seriennummern, Anmeldedaten, Zertifikate usw.)
- den Provisioning-Prozess als abgeschlossen markiert
So wird sichergestellt, dass jedes Gerät eindeutig konfiguriert und einsatzbereit ist - ohne manuelles Eingreifen.
Installation
Folgen Sie der offiziellen Installationsanleitung unter: https://github.com/raspberrypi/rpi-sb-provisioner
Konfiguration
rpi-sb-provisioner enthält eine einfache browserbasierte Konfigurations-GUI.
Um sie zu öffnen, führen Sie den folgenden Befehl in einem Terminal aus:
xdg-open http://localhost:3142Von hier aus:
- öffnen Sie das Menü Bilder und laden Sie Ihre .img-Datei (erstellt mit rpi-image-gen).
- öffnen Sie das Menü Optionen, um die Parameter für die Bereitstellung zu konfigurieren, z.B. die Zielgerätefamilie oder das zu verwendende Basis-Image.
- die resultierende Konfiguration wird gespeichert in /etc/rpi-sb-provisioner/config gespeichert und kann wie folgt aussehen:
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=Verwendung
- wenn Sie zum Beispiel ein offizielles Raspberry Pi Compute Module 5verwenden, setzen Sie den J2-Jumper, um den eMMC-Boot zu deaktivieren.
- schließen Sie den CM5 über USB an den Provisioning-Host an. Der Bereitstellungsprozess wird automatisch gestartet.
3 Sobald die Bereitstellung abgeschlossen ist, entfernen Sie den Jumper und schließen ein Netzteil an - das Gerät bootet nun von eMMC.
Vorteile
- Vollständig automatisiertes Onboarding von Geräten
- Konsistente Konfiguration für alle Geräte
- Einfache Integration mit Fertigungssystemen oder Backend-APIs
- Reproduzierbar - keine manuellen Anpassungen oder Inkonsistenzen zwischen den Geräten
Ausweitung des Prozesses
Der Bereitstellungsworkflow kann um folgende Punkte erweitert werden:
- API-Aufrufe zur Registrierung von Geräten bei Backend-Diensten
- Zertifikatsgenerierung für sicheres Booten oder Verschlüsselung
- Hardware-Validierung oder Funktionstests vor der Aktivierung
Mit rpi-sb-provisionerwird die Bereitstellung zu einem integrierten Schritt in Ihrer Build- und Deployment-Pipeline - und nicht ein nachträglicher Gedanke.
Artikel in dieser Serie
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Vom Stock OS zur Produktionsplattform
- Customizing Raspberry Pi OS with rpi-image-gen
- Systemrobustheit - Entwurf eines A/B-Root-Dateisystem-Layouts
- Bereitstellung - Automatisieren des ersten Starts mit rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Quellen
- 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