Einleitung.
Der Raspberry Pi 5 (im Folgenden Pi 5) verfügt über einen PCIe-Anschluss an der Haupteinheit, so dass NVMe-verbundene SSD-Laufwerke wie ein Standard-PC verwendet werden können.
Tatsächlich ist die Verwendung von PCIe bereits seit dem Raspberry Pi 4 (im Folgenden Pi 4) möglich, allerdings setzt dies eine Erweiterungs-HAT voraus. Das Compute Module 4 (im Folgenden CM4) ist dem Pi 4 ähnlich.
Dieser Abschnitt zeigt, wie Sie ein NVMe-verbundenes SSD-Laufwerk in den industriellen Raspi PL-R4 einbauen und es als Boot-Laufwerk behandeln.
Vorteile der Aktivierung von SSD-Laufwerken
Für industrielle Raspi, bei denen Robustheit wichtig ist, wird es auch notwendig sein, das Dateisystem in ROM zu konvertieren, um eine Systembeschädigung im Falle einer unerwarteten Stromabschaltung zu vermeiden.
ROM steht für Read Only Memory.
Bei einem typischen Raspberry Pi ist das Betriebssystem grundsätzlich auf einer microSD-Karte untergebracht, was es schwierig macht, es vom Datenbereich zu trennen.
Der für industrielle Anwendungen verwendete CM4 basiert auf eMMC-Boot. Da auch eine unbenutzte microSD-Karte verwendet werden kann, besteht der Vorteil darin, dass die microSD-Karte als separater Datenbereich genutzt werden kann, selbst wenn das Dateisystem in der eMMC in ROM umgewandelt wird.
Auch wenn eMMC schneller ist als eine microSD-Karte, kann es nicht mit einem SSD-Laufwerk mithalten. Wenn Sie eine schnellere Verarbeitung benötigen, können Sie das SSD-Laufwerk anstelle des eMMC-Laufwerks als Boot-Laufwerk verwenden, und Sie können die microSD-Karte auf dieselbe Weise als separaten Bereich nutzen.
Ein weiterer Nachteil ist, dass microSD-Karten auch eher beschädigt werden können. eMMC- und SSD-Laufwerke sind auch in dieser Hinsicht überlegen. Außerdem ist der Vorteil des Bootens auf einem SSD-Laufwerk aufgrund seiner höheren Geschwindigkeit erheblich.
Der verwendete industrielle Raspi PL-R4 ist, so konzipiert, dass ein NVMe-verbundenes SSD-Laufwerk in die Haupteinheit eingebaut werden kann. Der PL-R4 ist so konstruiert, dass ein NVMe-verbundenes SSD-Laufwerk in die Haupteinheit eingebaut werden kann.
Bitte beachten Sie die folgende Anleitung, da sie ein wenig kompliziert ist.
Bearbeiten und Schreiben des Bootloaders zum Booten von SSDs
Der CM4 Bootloader kann nicht eigenständig umgeschrieben werden, wie es beim Pi 4 der Fall ist.
Bereiten Sie einen handelsüblichen Pi 4 vor, getrennt vom Hauptteil des industriellen Raspi „PL-R4“, der den CM4 enthält.
(Es kann auch ein anderes PL-R4-Hauptgerät verwendet werden, aber dieses Mal wird der Pi 4 verwendet. Erstellen und verwenden Sie die Software ‚rpiboot‘ zum Schreiben aus dem Quellcode.
Der zum Schreiben verwendete Pi 4 war so voreingestellt, dass er SSH-Verbindungen und Fernsteuerung über VNC zulässt.
Der andere Grund, warum Sie ein USB-Kabel benötigen, um CM4 zu schreiben, ist, dass Sie ein USB-Kabel verwenden müssen, um den Schreibanschluss mit dem Pi 4 zu verbinden und den Bootloader an den Pi 4 zu senden.
Was Sie brauchen:
- PL-R4 Hauptgerät
- Pi 4 Satz
- USB Typ-C zu Typ-A Kabel
- rpiboot‘ aus dem Quellcode erstellt.
- microHDMI-Kabel
- anzeigen
Beachten Sie, dass das verwendete Kabel etwas speziell ist, da die CM4-Seite eine USB-C-Steckerform hat und der Pi 4 einen USB-A-Stecker hat.
Suchen Sie nach ‚USB-C zu A‘, um das entsprechende Produkt zu finden.


CM4 kann das EEPROM nicht selbständig aktualisieren.
rpi-eeprom-update
Auf einem typischen Pi 4 kann der Befehl verwendet werden.
Auf dem CM4 kann er jedoch nicht ausgeführt werden.
sudo rpi-eeprom-update
rpi-eeprom-update is not enabled by default on CM4.
The recommended method for flashing the EEPROM is rpiboot.
See: https://github.com/raspberrypi/usbboot/blob/master/Readme.md
Run with -h for more information.
Es ist zwar etwas umständlich, aber es macht EEPROM-Fehler weniger wahrscheinlich.
Von diesem Zeitpunkt an wird sie auf der Seite des Pi 4 ausgeführt, die separat vorbereitet wird.
Bearbeiten und Ersetzen des Bootloaders (Bootloader)
sudo rpi-eeprom-config
Wenn Sie auf ein NVMe-verbundenes SSD-Laufwerk umsteigen möchten, können Sie den Befehl für den kommerziellen Pi 5 usw. verwenden. Der CM4 ist im Grunde derselbe, aber Sie müssen den gesamten neu geschriebenen Bootloader ersetzen.
Die Software ‚rpiboot‘ wird verwendet, um Dateien an den CM4 zu senden. Die Dateien werden physisch an den CM4 gesendet, der über ein USB-Kabel angeschlossen ist.
Der Ablauf des Verfahrens ist wie folgt.
Ein separat vorbereiteter Pi 4 wird mit der Option zum Booten vom SSD-Laufwerk für eine bestimmte Version des Bootloaders wieder zusammengesetzt.
Der resultierende Bootloader kann mit der Software „rpiboot“ auf den CM4 geschrieben und ersetzt werden, was dasselbe ist wie das Anhängen der Option.
Bootloader Version
Vor dem Start habe ich die Version auf der PL-R4 Seite überprüft, sie lautet 2023-01-11. Der Dateiname lautet „pieprom-2023-01-11.bin“.
vcgencmd bootloader_version
2023/01/11 17:40:52
version 8ba17717fbcedd4c3b6d4bce7e50c7af4155cba9 (release)
timestamp 1673458852
update-time 0
capabilities 0x0000007f
In diesem Fall wurde die zum Zeitpunkt des Schreibens aktuellste „pieprom-2024-10-21.bin“ verwendet, bei stable und latest war es „pieprom-2024-10-21.bin“. Bitte lesen Sie weiter unten und ersetzen Sie das Jahr, den Monat und das Datum, falls die verwendeten Dateien unterschiedlich sind.
Überprüfen Sie die Update-Historie der einzelnen Firmware-Dateien und wählen Sie die gewünschte Version aus.
rpi-eeprom: h ttps://github.com/raspberrypi/rpi-eeprom/blob/master/releases.md
Verwendung von rpiboot
Das rpiboot wird vorbereitet, indem es aus dem Quellcode erstellt wird, wie von der offiziellen Seite empfohlen.
git clone wie folgt. Arbeitet im Home-Verzeichnis.
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
cd recovery
/usbboot/recovary
Wir werden nun innerhalb von .
Standort der Firmware.
Nachdem Sie den git clone ausgeführt hatten, wurden die Firmware-Dateien in das folgende Verzeichnis auf dem Pi 4 (bookworm) extrahiert.
/lib/firmware/raspberrypi/bootloader-2711/stable
/lib/firmware/raspberrypi/bootloader-2711/latest
/lib/firmware/raspberrypi/bootloader-2711/default
bootloader-2711
bootloader-2712
Offenbar ist die Verzeichnisstruktur seit bookwrom in und aufgeteilt worden. 2712 ist für Pi 5. CM4 ist aus 2711 zu wählen.
/lib/firmware/raspberrypi/bootloader/
*Der Standort ist: in Bullseye.
Extrahieren Sie die conf-Datei aus dem Bootloader und hängen Sie sie an.
Der erste Schritt besteht darin, die Konfigurationsdatei aus dem Bootloader zu extrahieren.
rpi-eeprom-config /lib/firmware/raspberrypi/bootloader-2711/latest/pieeprom-2024-10-21.bin -o boot.conf
Dadurch wird die ursprünglich leere boot.conf im Verzeichnis recovary überschrieben. Bearbeiten Sie dies.
sudo nano boot.conf
BOOT_ORDER=0xf16
Fügen Sie , hinzu, um die Boot-Reihenfolge (Boot Order) festzulegen.
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf16
BOOT_ORDER=0xf461
In Pi 5 wurde dies z.B. eingestellt. Die Reihenfolge der Aktivierung ist im numerischen Teil von rechts nach links priorisiert.
Normalerweise ist 1 eine microSD-Karte, 4 ein über USB angeschlossener Speicher und 6 ein über NMVe angeschlossenes SSD-Laufwerk. BOOT_ORDER=0xf16
Diese Zeit stellt die Boot-Reihenfolge NVMe → microSD-Karte dar.
Weitere Informationen finden Sie in der offiziellen Dokumentation. URL: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#boot_order-fields
256 Export von Hash-Werten.
Verwenden Sie den Befehl sha256sum, um den Hash-Wert von pieprom.bin als .sig-Datei auszugeben.
sha256sum pieeprom.bin | awk '{print $1}' > pieeprom.sig
Um die Konsistenz zu überprüfen.
Exportieren nach pieprom.bin
Schreiben Sie schließlich auf.
Schreiben Sie pieprom-2024-10-21.bin als pieprom.bin aus, einschließlich der boot.conf, die Sie gerade angehängt haben.
rpi-eeprom-config -c boot.conf -o pieeprom.bin /lib/firmware/raspberrypi/bootloader-2711/default/pieeprom-2024-10-21.bin
Damit ist die Zubereitung abgeschlossen.
Führen Sie rpiboot aus, um in das EEPROM zu schreiben
Führen Sie schließlich rpiboot aus, um den Bootloader in das EEPROM zu schreiben.
Legen Sie ein USB-Kabel, eine Pinzette, ein Display und ein HDMI-Kabel bereit.
Bevor Sie den Befehl ausführen, schließen Sie den PL-R4 mit einem HDMI-Kabel an den Bildschirm an. (Der PL-R4 selbst ist nicht eingeschaltet)
cd usbboot/recovary
sudo ../rpiboot -d .
Nach der Ausführung hört das Terminal auf, die folgende Warnung anzuzeigen.
Schließen Sie nun das USB-Kabel an den PL-R4 an, der neu beschrieben werden soll.
Der **PL-R4 benötigt keine Stromversorgung. Schließen Sie ihn einfach mit einem USB-Kabel an den Pi4 an.

sudo ../rpiboot -d .
RPIBOOT: build-date Oct 27 2024 version 20240422~085300 c944557b
Loading: ./bootcode4.bin
Waiting for BCM2835/6/7/2711/2712...
Damit das EEPROM zu diesem Zeitpunkt beschrieben werden kann, schalten Sie den Dip-Schalter mit einer Pinzette oder ähnlichem auf die WRT-Seite (nach rechts).


Wenn das USB-Kabel angeschlossen ist, wird es als externes Medium erkannt und der Schreibvorgang beginnt. (eingehängt in /media/username/).
OK, wenn das folgende Beispiel für ein korrektes Ergebnis richtig ist. Geschrieben in.
sudo ../rpiboot -d .
RPIBOOT: build-date Oct 27 2024 version 20240422~085300 c944557b
Loading: ./bootcode4.bin
Waiting for BCM2835/6/7/2711/2712...
Loading: ./bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes
Waiting for BCM2835/6/7/2711/2712...
Loading: ./bootcode4.bin
Second stage boot server
Loading: ./config.txt
File read: config.txt
Loading: ./pieeprom.bin
Loading: ./pieeprom.bin
Loading: ./pieeprom.sig
File read: pieeprom.sig
Loading: ./pieeprom.bin
File read: pieeprom.bin
Second stage boot server done
Wenn der Schreibvorgang erfolgreich abgeschlossen ist, leuchtet das mit dem PL-R4 verbundene Display grün.
Die Einschreibung wurde nun erfolgreich abgeschlossen.
Dinge, die zu überprüfen sind, wenn etwas schief läuft.
Die beiden Dinge, die nicht gut gelaufen sind und uns in Schwierigkeiten gebracht haben, waren
Zum einen können Sie, anders als noch vor ein paar Jahren, mit git clone bauen, aber wenn Sie nicht auch das Submodul einbinden, erhalten Sie eine Fehlermeldung.
Aktuelle Informationen finden Sie auf der Seite über.
usbboot: https: //github.com/raspberrypi/usbboot
Die andere Sache ist, dass sich seit bookworm der Pfad zur .bin-Datei in /lib/firmware/raspberrypi/bootloader~ geändert hat.
So ist sie jetzt in das Verzeichnis bootloader-2712 für den Pi5 und das Verzeichnis bootloader-2711 für die anderen aufgeteilt.
Das letzte, was Sie überprüfen sollten, ist das USB-Kabel.
Es kann sein, dass es nicht funktioniert, wenn das Kabel von schlechter Qualität ist oder wenn Sie einen Typ-C-zu-Typ-C-Konverterstecker verwenden.
Dies ist selten der Fall, aber wenn der Fehler unvermeidlich ist, überprüfen Sie ihn mit einem anderen Kabel.
Bestätigung des Umschreibens auf der PL-R4 Seite.
Die oben beschriebene Prozedur wurde erfolgreich in das EEPROM zurückgeschrieben.
Trennen Sie das angeschlossene USB-Kabel.
Hinweis: Denken Sie daran, die Dip-Schalter des PL-R4 zu lösen, bevor Sie ihn in Betrieb nehmen. (Jetzt nach links)
Schalten Sie den PL-R4 ein und nehmen Sie ihn in Betrieb, um zu überprüfen, ob dies richtig gemacht wurde.
Prüfen Sie die Bootloader-Version.
Wird in diesem Fall die Firmware ‚pieprom-2024-10-21.bin‘ verwendet?
vcgencmd bootloader_version
Die BOOT_ORDER wurde ebenfalls wie angegeben geschrieben.
sudo rpi-eeprom-config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf16
Vergleich von NVMe-Verbindungen und Geschwindigkeiten
Nachdem Sie die Bootsequenz neu geschrieben haben, bereiten Sie ein SSD-Laufwerk für die Verbindung mit NVMe vor und schreiben die Betriebssystem-Image-Datei.
Der PL-R4 kann nach Modell und Version auf der PiLink Download-Seite heruntergeladen werden.
Das geschriebene Betriebssystem wurde von dem für den PL-R4 verfügbaren Betriebssystem-Image (Bullseye) heruntergeladen und von dem angepassten Raspberry Pi Imager geschrieben.
Um auf SSD-Laufwerke zu schreiben, ist eine spezielle M.2 SSD-Festplattenstation eine gute Idee.
Als Ersatz wurde er diesmal von einem anderen PC in einem handelsüblichen externen SSD-Laufwerkskoffer geschrieben.

Wenn Sie sie mit einem USB-Kabel anschließen, kann sie wie eine microSD-Karte als externes Medium erkannt werden. Schreiben Sie einfach wie gewohnt mit dem Raspberry Pi Imager.

Bestätigung der Inbetriebnahme des SSD-Laufwerks
Der Bootloader wurde so geändert, dass er vom SSD-Laufwerk bootet, und das Betriebssystem wurde auf das SSD-Laufwerk geschrieben. Schließen Sie es also an das Pl-R4-Gerät an und überprüfen Sie es.
An der Unterseite des Geräts befindet sich ein Anschluss, an den auch SSD-Laufwerke angeschlossen werden können. Schrauben Sie ihn fest und Sie können loslegen.

Unterseite der PL-R4 Haupteinheit (Rückseite der Tragetafel) *Das Innere ist zu Demonstrationszwecken im eingefahrenen Zustand sichtbar.
Vergessen Sie nicht, vor dem Einschalten der Stromversorgung den eMMC-Schreib-Dip-Schalter auf OFF (linke Seite) zu stellen. Wenn er schreibaktiviert bleibt (WRT-Seite), lässt er sich nicht starten.
Lassen Sie uns das mit ein paar Befehlen ausprobieren.
Der Befehl df zeigt, dass /dev/nvme0n1p1 in /boot eingehängt ist.
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 118G 4.2G 109G 4% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 724M 1.2M 723M 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/nvme0n1p1 255M 32M 224M 13% /boot
tmpfs 362M 28K 362M 1% /run/user/1000
Der Befehl fdisk liefert etwas mehr Details.
sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 119.24 GiB, 128035676160 bytes, 250069680 sectors
Disk model: TS128GMTE452T2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: *******
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/nvme0n1p2 532480 250069679 249537200 119G 83 Linux
Der Befehl lsblk zeigt, dass es microSD-Karten, eMMC und NVMe-verbundene SSD-Laufwerke gibt, wobei /boot auf NVMe gemountet ist.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk2 179:0 0 29.1G 0 disk
└─mmcblk2p1 179:1 0 29.1G 0 part /media/pi/9016-4EF8
mmcblk0 179:32 0 29.1G 0 disk
├─mmcblk0p1 179:33 0 512M 0 part
└─mmcblk0p2 179:34 0 28.6G 0 part
mmcblk0boot0 179:64 0 4M 1 disk
mmcblk0boot1 179:96 0 4M 1 disk
nvme0n1 259:0 0 119.2G 0 disk
├─nvme0n1p1 259:1 0 256M 0 part /boot
└─nvme0n1p2 259:2 0 119G 0 part /
Finden Sie die Geschwindigkeit heraus.
Prüfen Sie dann die Geschwindigkeit des SSD-Laufwerks.
Wir haben die Lesegeschwindigkeit mit dem Befehl hdparm gemessen.
Der PL-R4 führt die Befehle zur Messung selbst aus.
NVMe
NVMe-verbundene SSD-Laufwerke werden mit 375 MB/s angegeben.
sudo hdparm -t /dev/nvme0n1
/dev/nvme0n1:
Timing buffered disk reads: 1130 MB in 3.00 seconds = 376.54 MB/sec
Es ist leicht zu vergessen, dass der Pi 5 jetzt im Angebot ist, aber dieses Mal ist es ein SSD-Laufwerk, das in den CM4 bootet – es ist nicht vollständig PCIe-kompatibel wie der Pi 5, also ist es eine Größenordnung anders, wenn nicht sogar etwas weniger schnell.
eMMC
Der nächste Schritt ist eMMC.
sudo hdparm -t /dev/mmcblk0
/dev/mmcblk0:
Timing buffered disk reads: 250 MB in 3.02 seconds = 82.88 MB/sec
Bei der eMMC waren es etwa 82 MB/s.
microSD-Karte
Schließlich gibt es noch die microSD-Karte.
sudo hdparm -t /dev/mmcblk2
/dev/mmcblk2:
Timing buffered disk reads: 28 MB in 3.09 seconds = 9.06 MB/sec
Im Gegensatz zum Pi 4 microSD-Kartenstart auf dem Markt hat die PL-R4 keine Geschwindigkeit von etwa 10 MB/s oder so. Das ist eine Besonderheit des Produkts.
Bei einem typischen Raspberry Pi wären es etwa 20-30 MB/s.
Ergebnisse dieses Geschwindigkeitstests
Die Geschwindigkeit des SSD-Laufwerks war ohne Vergleich schnell genug.
Ergebnis | SSD | eMMC | microSD Transcend32GB |
---|---|---|---|
Lesegeschwindigkeit | Ca. 376 MB/s. | Ca. 82 MB/s | Ca. 10 MB/s |
*Die Werte für microSD-Karten basieren auf den „PL-R4“-Spezifikationen und Anpassungen.
M ehrere Durchläufe hdparm ist eine einfache Messung. Sie können versuchen, sie mit dem folgenden Befehl mehrfach auszuführen.
for i in $(seq 5); do sudo hdparm -t /dev/mmcblk2; sleep 5; done
Nach Punkten vergleichen
Eine weitere Messung wurde auch mit einem Skript-Tool durchgeführt, das Messungen über das Internet austauschen kann.
Dieses Tool macht dasselbe wie der Befehl hdparm. Es bietet eine detailliertere Anzeige und eine einzigartige Bewertungsmethode für den Vergleich der Geschwindigkeiten.
Das Ergebnis war hier dasselbe: 355 MB/s Lesen.

Das Skript-Tool wurde bisher unter dem Benutzernamen raspida registriert, mit Pi4, Pi5 und SSD-Laufwerken mit unterschiedlichen Bedingungen.
Bitte lesen Sie nach.
PiBenchmarks: https://pibenchmarks.com/user/raspida/
Start des SSD-Laufwerks auch in CM4.
Im Gegensatz zum allgemeinen Pi 4 mag das Ändern des Bootloaders beim CM4 ein wenig umständlich erscheinen.
Nichtsdestotrotz ist der PL-R4 einfacher zu verstehen als die Verwendung des CM4 mit einer Erweiterungslogikkarte, da er über einen Dip-Schalter für die Schreibumschaltung verfügt.
Zum Zeitpunkt der Erstellung dieses Artikels konnte der Vorgang problemlos abgeschlossen werden, wenn die Schritte befolgt wurden.
Außerdem wird die Startsequenz in das EEPROM geschrieben, so dass sie nur einmal geändert werden muss.
Je nachdem, wofür Sie den Raspberry Pi verwenden, sind SSD-Laufwerke wahrscheinlich unverzichtbar, da sie größere Geschwindigkeitsvorteile bieten als microSD-Karten oder eMMC-Boot.
Man kann sich vorstellen, dass eine microSD-Karte als separater Datenbereich verwendet werden kann, was die Nutzung, auch im Notfall, erleichtert.
CM4 kann auch für die Aktivierung von SSD-Laufwerken verwendet werden.
Artikel beigetragen von Raspida
Raspberry Pi-Informationsseite, die auch von Nicht-Ingenieuren genutzt werden kann. raspida.com Raspida betreibt raspida.com, eine Raspberry Pi-Informationsseite, die auch für Nicht-Ingenieure interessant ist. Trägt zur PiLink-Website über den Raspberry Pi für den industriellen Einsatz bei.