Raspberry Pi von SSD Festplatte booten

In Vergangenheit habe ich bereits gezeigt wie der Raspberry Pi ganz ohne SD-Karte von einem USB-Stick booten kann, seit dem Raspbian Image 2017-04-10 kann ganz ohne Modifikation der Firmware und der Datei config.txt von USB Medien gebootet werden. Wichtig ist das der USB Port am Raspberry Pi zum Zeitpunkt des Starts nur 600mA liefert, die verwendete Festplatte oder der USB Stick muss sich damit lauffähig sein, sonst bootet euer System nicht. SSD Platten haben den Vorteil gegenüber USB-Sticks und SD-Karten eine weitaus größere Lebensdauer und natürlich größeren Speicherplatz zu haben. In diesem Beitrag zeige ich euch wie von einer SSD Festplatte gebootet werden kann, diese funktioniert auch mit USB-Sticks oder USB Festplatten.

Hardware

Neben dem üblichen Raspberry Pi 3 werden folgende Komponenten benötigt

Ich verwende eine alte 2,5Zoll 80GB Intel SSD aus einem alten Desktop Rechner. Die Anleitung funktioniert auch mit USB Sticks.

Raspberry Pi vorbereiten

Wir müssen unseren Raspberry Pi einmalig mit Raspbian von einer SD-Karte booten um im OTP (One Time Programmable) Memory des RasPi das Booten von USB zu aktivieren. Verwendet zum Setup am Besten die Einsteiger Guides. Die Verwendung eines aktuellen Raspbian Images ist zwingend notwendig, ich benutze das Stretch Image vom August 2017.

Führt als erstes ein Update via SSH oder über ein Terminal durch

Dann aktivieren wir den USB Boot Modus, der Parameter wird beim nächsten Neustart in den OTP des RasPi übernommen

Wir rebooten unseren Raspberry Pi

Prüft nach dem rebooten ob der Parameter korrekt gesetzt wurde

Es muss 17:3020000a ausgegeben werden.

raspberry pi usb boot aktivieren

Hiernach könnt ihr euren Pi ausschalten und die SD-Karte entfernen.

SSD Festplatte vorbereiten

Wir können nun das aktuelle Raspbian mit Etcher direkt auf unsere Festplatte schreiben. Steckt hierzu die Festplatte an euren normalen Rechner anhand des USB zu SATA Adapters an.

RasPi Intel SSD

Wichtig!
Bei falscher Handhabung von Etcher könnt ihr eure im Rechner verbauten Festplatten überschreiben und Daten verlieren, geht sorgfältig vor.

Startet Etcher über das Startmenu und wählt links euer Raspbian Image aus, dann Rechts oben im Eck via Zahnrad die Optionen öffnen

Etcher unsafe mode

In den Optionen aktiviert ihr „Unsafe Mode„, ohne den Unsafe mode werden euch in der Auswahl für das Ziel nur SD oder USB-Sticks angezeigt.

Etcher unsafe mode 2 

Wählt dann über Select Drive die richtige Festplatte aus. Bei mir ist es die 80,03GB Disk die ich zusätzlich am Namen des USB to SATA Konverter erkannt habe (ASMxxx).

  • Wichtig! Ihr müsst unbedingt die korrekte Festplatte auswählen!

Etcher SSD Disk

Startet dann den Flash Vorgang

Etcher unsafe mode 3

Steckt nach dem Flashen die Disk ab.

Raspberry Pi von SSD Festplatte starten

raspberry pi mit ssd festplatte

Steckt dann die SSD Disk über den USB zu SATA Adapter an euren Raspberry Pi und steckt ihn an dem Strom, Bildschrim, Tastatur. Der erste Startdauert etwas länger da das Dateisystem erweitert wird, hiernach solltet ihr aber wie gewohnt mit eurem Raspberry Pi arbeiten können.

raspberry pi ssd boot

Ihr könnt dann wie gewohnt mit eurem Raspberry Pi arbeiten. Sollte es beim anstecken weiterer USB Geräte zu Problemen kommen könnt ihr noch versuchen usb_max_current zu aktivieren.

Geschwindigkeit der Raspberry Pi SSD Festplatte

Von der Geschwindigkeit hatte ich mir nicht zu viel erwartet da beim Raspberry Pi die Transferrate des USB-Anschluss das Limit für die angeschlossene SSD Festplatte vorgibt, ich wollte allerdings trotzdem einen Vergleich zu einer normalen SD-Karte ziehen.

 SD KarteHDParamdd4k lesen4k schreiben
Schnelle SD – SanDisk Ultra Andoid 32GB21,86 MB/s15,90 MB/s8,26 MB/s3,22 MB/s
Normale SD – SanDisk Ultra 16GB21,57 MB/s8,50 MB/s6,06 MB/s2,10 MB/s
SSD Festplatte via USB to SATA31,78 MB/s33,60 MB/s 7,98 MB/s9,72 MB/s

Die Geschwindigkeit ist im Vergleich zu gängigen SD-Karten super! Vor allem beim Random 4k Lesen und Schreiben, was dem Alltagsgebrauch nahe kommt, ist der Test super verlaufen. Der Speed der SSD via USB SATA Adapter ist perfekt!

 


 

Raspberry Pi 3 bootet jetzt ohne SD-Karte von USB-Stick oder Festplatte

Eines der größten Ärgernisse war meines Erachtens immer die notwendige SD-Karte im Raspberry Pi, SD-Karten sind langsam und haben in den günstigen Varianten eine kurze Lebenszeit. Die Enwickler der Raspberry Pi Foundation haben anhand eines neuen Bootloaders eine lang ersehnte Funktion nachgerüstet, der Raspberry Pi bootet mit dem gerade im Entwicklungsstadium befindenden Bootloader nun endlich von einer Festplatte oder einem USB-Laufwerk / Stick.

Leider ist die Funktion nur für den neuesten Raspberry Pi 3 verfügbar, der Bootloader ist noch im Beta Stadium und verträgt sich leider nicht mit allen SSDs, Festplatten oder USB-Sticks, momentan werden folgende Produkte seitens Raspberry Pi Entwickler Gordon Hollingworth als Funktional genannt, im Zweifelsfall müsst ihr testen:

UPDATE 09-2017 – USB Booten

Mit den neuesten Raspbian Images ist eine einfacheres Setup integriert worden. Weiter oben beschreibe ich wie ihr mit den aktuellen Raspbian Versionen ohne SD-Karte via USB booten könnt.

 

Wie funktioniert das genau?

Auf den BCM 2835, 6 und 7 Chip befindet sich ein 32kb Speicher, dieser ermöglicht das booten. Das stückchen Code sucht die Datei bootecode.bin auf der SD-Karte, wird dort nichts gefunden wird in Abhängigkeit zum GPIO Status der Pins 22-26 bzw. 39-43 versucht von einer zweiten SD-Karten, eine NAND Speicher, dem SPI und dann dem USB Port die bootcode.bin zu laden. Das ganze funktioniert auch mit einem Angeschlossenen USB HUB.

Wer sich im Detail über den Boot Prozess und und die Möglichkeiten informieren will findet im GutHub Repository die Dokumentation

Raspbian von USB Stick booten

Für die Initiale Einrichtung auch weiterhin eine SD-Karte benötigt, schreibt wie gewöhnlich das aktuellste Raspbian mit Win32DiskImager auf eure SD-Karte und bootet euren Raspbery Pi und führt die Grundeinrichtung durch. Falls noch nicht passiert aktualisiert ihr via Konsole oder SSH Sitzung erst mal euer System

Da sich das Feature noch im Entwicklungsstadium befindet müssen wir die aktuelle Beta Firmware installieren

Danach aktivieren wir den USB Boot Mode in der config.txt unseres RasPi und rebooten einmal

Nun prüfen wir ob die Programmierung des Boot Mode im „One Time Programmable“ Speicher des SoC geklappt hat. Hierzu lesen wir den Speicher

Wenn 17:1020000a ausgegeben wird hat etwas nicht geklappt, wir sollten als Ausgabe 17:3020000aerhalten. Jetzt können wir von SD Boot auf USB Boote umstellen, ich verwende einen einfachen No Name 8GB USB Stick den ich mal als Werbegeschenk erhalten habe.

Nachdem ich den Stick an den Pi angeschlossen habe prüfe ich mit folgendem Befehl die erkannten Speichermedien

raspi disk

Bei mir wurde der Stick als /dev/sda erkannt und die enthaltene FAT Partition als /dev/sda1. Insofern ihr ein frisches Raspbian habt und keine weiteren Sticks angeschlossen sind sollte auch bei euch der Stick unter /dev/sda erkannt werden.

Dann starte ich die Partitionierung für /dev/sda und lösche alle enthaltenen Daten (ggf. müsst ihr das bei euch erkannte Gerät angeben)

Innerhalb des Tools führe ich nun den folgenden Befehl aus um ein „msdos“ Disk Label zu erstellen

Die Rückfragen von partet beantwortet ihr mit Ignore, Yes und wieder Ignore. Dann erstellen wir innerhalb von parted eine 100 Megabyte FAT32 Partition auf unserem Stick bestätigt eine evtl. vorhandene Rückfrage mit Ignore

der zweite Partition mit ext4 Dateisystem geben wir den restlichen verbleibenden Platz

Beendet partet durch Eingabe von quit

Zur Sicherheit sollten wir jetzt einen Reboot durchführe

Wir haben zwei Partitionen erstellt, diese müssen wir noch mit dem passenden Dateisystem formatieren, die erste 100MB Partition formatieren wir mit FAT32 und die zweite mit EXT4 Dateisystem

Jetzt mounten wir die beiden Partitionen um darauf zugreifen zu können unter /mnt/usbstick (Partition 2) und /mnt/usbstick/boot (Partition 1)

Um den Raspberry pi von USB booten zu können braucht der Stick natürlich noch den Bootloader und das Raspbian Betriebssystem, wir kopieren uns dieses einfach von der vorhandenen SD-Karte auf den Stick

Das dauert je nach Stick eine ganze Weile, nachdem wir das System auf den Stick kopiert haben müssen wir natürlich der Kopie noch beibringen das sie sich nicht mehr auf der SD Karte befindet sondern auf dem USB-Stick. Hierzu tauschen wir in der Datei cmdline.txt auf unserem Stick die Info wo nach dem Root Dateisystem gesucht wird. Das ist nun anstelle /dev/mmcblk0p2 natürlich /dev/sda2.

Das Selbe erledigen wir in der fstab um sicherzustellen beim Starten des Pi nicht die ext Datenpartition von der SD-Karte verwendet wird sondern vom USB-Stick

Dann unmounten wir die beiden Partitionen unseres Sticks und schalten unseren Pi aus.

Jetzt könnt ihr die SD-Karte aus eurem RasPi nehmen und nach erneutem Einstecken der Stromversorgung komplett vom USB Stick booten. Ihr könnt den USB-Stick genau so wie die SD-Karte mit win32diskimager auf euren Rechner sicher, das erspart euch das erneute einrichten auf dem RasPi.

Wichtig!

Der Bootprozess sucht beim Starten des Pi erst nach einer SD-Karte und versucht dann erst dann vom USB Stick zu booten. Der Start dauert daher etwas länger als gewohnt. Um das zu vermeiden könnt ihr einfach eine leere SD-Karte in den Slot stecken.