Problem z zaopatrzeniem
Po utworzeniu obrazu każda nowa tablica musi zostać spersonalizowana - z ustawieniami takimi jak nazwa hosta, klucze SSH, konfiguracja lub rejestracja backendu.
Robienie tego ręcznie dla dziesiątek lub nawet setek urządzeń Raspberry Pi Compute Module 5 (CM5) jest po prostu niepraktyczne.
Tutaj właśnie rpi-sb-provisioner elastyczny framework do automatyzacji pierwszego uruchomienia dla Raspberry Pi urządzeń.
Jak rpi-sb-provisioner Działa
Przy pierwszym uruchomieniu system automatycznie uruchamia się rpi-sb-provisionerktóry:
- odczytuje plik konfiguracyjny provisioningu
- Wykonuje skrypty w celu zastosowania ustawień systemowych
- zapisuje dane identyfikacyjne urządzenia (numery seryjne, poświadczenia, certyfikaty itp.)
- Oznacza proces aprowizacji jako zakończony
Zapewnia to, że każde urządzenie jest unikalnie skonfigurowane i gotowe do wdrożenia - bez ręcznej interwencji.
Instalacja
Proszę postępować zgodnie z oficjalną instrukcją instalacji na stronie: https://github.com/raspberrypi/rpi-sb-provisioner
Konfiguracja
rpi-sb-provisioner zawiera prosty graficzny interfejs użytkownika oparty na przeglądarce.
Aby go otworzyć, proszę uruchomić następujące polecenie w terminalu:
xdg-open http://localhost:3142Stąd:
- proszę otworzyć menu Obrazy i załadować plik .img (utworzony przy użyciu funkcji rpi-image-gen).
- Proszę otworzyć menu Options, aby skonfigurować parametry provisioningu, takie jak rodzina urządzeń docelowych lub obraz bazowy.
- Wynikowa konfiguracja jest przechowywana w /etc/rpi-sb-provisioner/config i może wyglądać następująco:
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=Zastosowanie
- na przykład, w przypadku korzystania z oficjalnego Raspberry Pi Compute Module 5proszę ustawić zworkę J2, aby wyłączyć rozruch eMMC.
- Proszę podłączyć CM5 do hosta przez USB. Proces provisioningu rozpocznie się automatycznie.
- Po zakończeniu provisioningu, proszę usunąć zworkę i podłączyć zasilanie - urządzenie uruchomi się teraz z eMMC.
Korzyści
- W pełni zautomatyzowane wdrażanie urządzeń
- Spójna konfiguracja we wszystkich jednostkach
- Łatwa integracja z systemami produkcyjnymi lub backendowymi interfejsami API
- Powtarzalność - brak ręcznych poprawek lub niespójności między urządzeniami
Rozszerzenie procesu
Przepływ pracy provisioningu można rozszerzyć o:
- wywołania API w celu rejestracji urządzeń w usługach zaplecza
- Generowanie certyfikatów dla bezpiecznego rozruchu lub szyfrowania
- Walidację sprzętu lub testy funkcjonalne przed aktywacją
Dzięki rpi-sb-provisionerprovisioning staje się zintegrowanym krokiem w potoku kompilacji i wdrażania - a nie refleksją.
Artykuły z tej serii
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Od standardowego systemu operacyjnego do platformy produkcyjnej
- Customizing Raspberry Pi OS with rpi-image-gen
- Wytrzymałość systemu - projektowanie układu głównego systemu plików A/B
- Provisioning - Automatyzacja pierwszego uruchomienia z rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Źródła
- 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