Raspberry Pi OS von SD-Karte auf USB-Stick übertragen und booten

Kategorien:

Durch Chipknappheit und gestörte Lieferketten ist der Raspberry Pi derzeit kaum zu bekommen oder unverschämt teuer. Unter Umständen kann es sinnvoller und günstiger zu sein, für dein Projekt einen echten Mini-PC wie den HP ProDesk 600* zu kaufen und dort ein Linux-Betriebssystem wie Ubuntu oder Debian zu installieren.

Diese Vorgehensweise ist veraltet und mittlerweile nicht mehr nötig. Stattdessen kann das Betriebssystem für den Raspberry Pi direkt auf einem USB-Stick oder einer USB-SSD installiert werden. Wie du hierzu vorgehst und was du machen kannst, wenn das Booten von USB nicht klappt, steht im Artikel [Raspberry Pi Betriebssystem von USB-Stick booten]

Üblicherweise wird das Betriebssystem des Raspberry Pi auf einer Micro-SD Karte installiert. Leider vertragen diese Karten nur eine begrenzte Anzahl von Schreibvorgängen, bevor sie den Geist aufgeben. Hochwertige USB-Sticks sind hier haltbarer, Festplatten oder SSDs sowieso.

Es kann also Sinn machen, das Betriebssystem nicht auf der SD-Karte zu lassen, sondern auf einen USB-Stick oder eine externe SSD zu übertragen und von dort zu starten. Ganz ohne SD-Karte.

Ein neuer Raspberry Pi unterstützt das Booten von USB von Haus aus. Bei einer Neuinstallation kann somit einfach das Raspbian Image auf einen USB-Stick kopiert und direkt von dort gebootet werden.

Wer aber bereits über einen laufenden und fertig eingerichtetes System auf einer Micro SD-Karte verfügt, der will wahrscheinlich keine Neuinstallation und anschließende Neukonfiguration vornehmen. Außerdem gibt es Images, die sich bei mir nicht direkt von einer SSD über USB installieren und booten ließen. Das übertragen einer bereits funktionierenden Installation auf eine SSD, die über USB angeschlossen ist, hat jedoch einwandfrei funktioniert. So ließ sich das Image von Openmediavault nicht direkt auf eine SSD kopieren und über USB booten. Nachdem OMV jedoch auf einer SD-Karte installiert und eingerichtet war, konnte ich das System auf eine SSD übertragen und problemlos von der SSD über USB booten.

Aber auch andere, bereits vorhandene Installation eines Raspberry Pi Betriebssystems, lassen sich auf einen USB-Stick übertragen und anschließend von dort booten.

Prüfen ob das Booten von USB auf dem Raspberry Pi aktiviert ist

Im Gegensatz zu „richtigen“ Computern verfügt der Raspberry Pi nicht über ein Bios oder UEFI, in dem umfangreiche Einstellungen zum Bootvorgang vorgenommen werden können. Stattdessen findet sich auf der Boot-Partition der SD-Karte eine Konfigurationsdatei, in welcher Einstellungen die den Bootvorgang betreffen vorgenommen werden können. Zuerst muss geprüft werden, ob der Raspberry Pi bereits korrekt konfiguriert ist. Während neue Raspberry Pi Installationen bereits entsprechend konfiguriert zu sein scheinen, sind ältere Installationen standardmäßig nicht zum Booten von USB-Sticks oder externen Festplatten eingerichtet.

Außerdem muss man beachten, dass lediglich die Modelle Raspberry Pi 3 und neuer, sowie Raspberry Pi Zero und Zero W von USB-Datenträgern booten können. Altere Modelle unterstützen das leider nicht. Und der Raspberry Pi 4 bisher auch nicht. Das soll sich jedoch in Zukunft ändern.

Für diese und alle weiteren Arbeiten wird das Terminal benötigt, das im Startmenü über Himbeere > Zubehör > LXTerminal gestartet wird. Hier wird nun folgender Befehl eingegeben.

vcgencmd otp_dump | grep 17:

Nur wenn als Ausgabe 17:3020000a angezeigt wird, ist der Raspberry Pi bereits zum Booten von USB konfiguriert. Du kannst dann direkt zur Überschrift „USB Stick zum Booten für den Raspberry Pi einrichten“ springen.
Wenn Du als Ausgabe etwas anderes angezeigt bekommst, ist der Raspberry Pi noch nicht richtig konfiguriert. Dann musst du zuerst die folgenden Schritte vornehmen.

Raspberry Pi für das Booten von USB konfigurieren

Zuerst wird das System aktuell laufende System und alle installierten Programme auf den neuesten Stand gebracht mit folgendem Befehl.

sudo apt update && sudo apt -y upgrade

Dann wird die Firmware noch auf den aktuellsten Stand gebracht, mit folgendem Befehl. Hierbei wird immer die aktuellste, und nicht unbedingt die stabilste, veröffentlichte Version eingespielt. Bei einem bereits laufenden System sollte es im Normalfall nicht nötig sein, diesen Befehl auszuführen.

sudo BRANCH=next rpi-update

Diese Datei zum Konfigurieren des Bootvorgangs liegt unter /boot/config.txt und kann mit normalen Rechten nicht mit dem Texteditor bearbeitet werden. Aus diesem Grund öffnen wir die Datei mit Root-Rechten im Texteditor. Hierzu wird der Ausführen Dialog geöffnet. Entweder über die Tastenkombination ALT+F2, oder über das Startmenü über Himbeere > run. Hier gibt man folgenden Befehl ein.

sudo -H mousepad /boot/config.txt

Nun öffnet sich die Datei im Texteditor. Hier fügt man als letzte Zeile folgendes hinzu, um das Booten von USB zu aktivieren.

program_usb_boot_mode=1 
Raspberry Pi USB Mode aktivieren

Damit die Änderung aktiv wird, muss der Raspberry Pi einmal neu gestartet werden.

USB Stick zum Booten für den Raspberry Pi einrichten

Nun muss der USB-Stick vorbereitet werden und anschließend das Betriebssystem von der SD-Karte auf den USB Stick kopiert werden.

Zuerst müssen wir herausfinden unter welchem Gerätenamen der USB-Stick dem Raspberry Pi bekannt ist. Dazu geben wir den folgenden Befehl im Terminal ein.

sudo fdisk -l

Als Ausgabe bekommen wir eine lange Liste. Am Ende finden sich zwei Geräte mit den Namen /dev/mmcblk0 (oder ähnlich) und /dev/sda (oder ähnlich). Bei /dev/mmcblk0 handelt es sich um die SD-Karte, dev/sda ist der USB Stick. Sicherheitshalber sollte man prüfen, ob der angegebene Speicherplatz auch mit der Größe des USB-Sticks übereinstimmt. Um Fehler zu vermeiden, sollte man keine weiteren USB-Datenträger anschließen, bis die Konfiguration abgeschlossen ist.

Ausgabe von fdisk

Standardmäßig bindet das Betriebssystem den USB-Stick, wenn er eingesteckt wird automatisch in das Dateisystem ein. Damit wir den Stick neu formatieren können, muss dieser zuerst ausgehängt werden. Dies geschieht über den Button oben rechts in der Menüleiste von Raspbian.

Raspbian unmount button

Alternativ kann der Stick mit dem Befehl sudo umount /dev/sda ausgehängt werden.

Im nächsten Schritt wird die Partitionierung vorgenommen. Es wird eine kleine Partition mit 100 Megabyte und dem Dateisystem FAT32 für die Bootpartition erstellt. Dann wird eine weitere Partition mit dem Linux-Dateisystem EXT4 erstellt, die den gesamten restlichen Speicherplatz in Anspruch nimmt. Die Partitionierung erfolgt mit folgenden Befehlen.

sudo parted /dev/sda

mktable msdos
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
quit
Formattieren mir parted

Im nächsten Schritt werden die soeben angelegten Partitionen formatiert.

sudo mkfs.vfat -n BOOT -F 32 /dev/sda1 
sudo mkfs.ext4 /dev/sda2

Damit ist der USB-Stick vorbereitet. Im nächsten Schritt werden die Partitionen in das Dateisystem eingehängt, also als Ordner verfügbar gemacht. Anschließend wird das Betriebssystem von der SD-Karte auf den USB-Stick kopiert. Der erste Befehl erstellt den Ordner /mnt/usbstick. Der zweite Befehl macht die Partition für das Betriebssystem des USB-Sticks unter dem Ordner /mnt/usbstick verfügbar. Der dritte und vierte Befehl machen das selbe für die zukünftige Bootpartition unter /dev/sda1, die unter /mnt/usbstick/boot eingebunden wird.

sudo mkdir /mnt/usbstick
sudo mount /dev/sda2 /mnt/usbstick
sudo mkdir /mnt/usbstick/boot
sudo mount /dev/sda1 /mnt/usbstick/boot
USB-Stick mounten

Im folgenden Schritt wird das Betriebssystem von der SD-Karte auf den USB-Stick kopiert. Dieser Vorgang kann relativ lange dauern, da unter Umständen mehrere Gigabyte kopiert werden müssen.

sudo rsync -ax --exclude=/mnt --progress / /boot /mnt/usbstick

Im letzten Schritt müssen noch die IDs der Partitionen in zwei Konfigurationsdateien aktualisiert werden. Dann kann das Betriebssystem vom USB-stick gebootet werden.

Partition-IDs im Betriebssystem aktualisieren

Damit das Betriebssystem die Datenträger neu initialisiert,

Um die IDs herauszufinden geben wir untenstehenden Befehl in das Terminal ein.

sudo blkid

Hier benötigen wir die Zeichenfolgen die zwischen den Anführungszeichen hinter PARTUUID stehen. Jeweils aus den Zeilen für /dev/sda1 und /dev/sda2.

PARTUUID anzeigen

Diese IDs müssen nun in zwei Dateien aktualisiert werden, die wir hierzu im Texteditor öffnen. Die erste Datei die angepasst werden muss ist die /mnt/hd/boot/cmdline.txt. Dazu verwenden wir folgenden Befehl, um die Datei im Texteditor mit Rootrechten zu öffnen.

sudo -H mousepad /mnt/usbstick/boot/cmdline.txt

Hier scrollt man, bis der Eintrag PARTUUID erscheint. Diese wird ersetzt, durch die ID der neuen Systemplatte /dev/sda2, in diesem Fall also a0c95494-02.

Über Datei > Speichern und Datei > Beenden wird der Editor wieder geschlossen.

PARTUUID aktualisieren

Als letzten Schritt müssen wir die IDs noch in der Datei /etc/fstab aktualisieren.

sudo -H mousepad /mnt/usbstick/etc/fstab

Hier müssen beide IDs aktualisiert werden. Die von /dev/sda1 und die von /dev/sda2. Anschließend wird auch diese Datei wieder gespeichert und der Texteditor geschlossen.

PARTUUID in /etc/fstab aktualisieren

Damit ist der Raspberry Pi endlich bereit um das Betriebssystem vom USB-Stick zu booten.

Der Raspi muss nun heruntergefahren werden. Dann kann man die SD-Karte entfernen und den Pi erneut starten. Diesmal ohne eingelegte SD-Karte, nur vom USB-Stick.

Unterwegs immer mit Strom versorgt
Anzeige
Powerbank 60W Ladeleistung für Laptop & Handy
20.000 mAh, USB-C und USB-A, Hohe Ladeleistung ermöglicht Laden von Notebooks
Perfekte Reiseladegerät - Hohe Ladeleistung, 3 Ausgänge
USB-C & USB-A, 65W Ladeleistung lädt Laptops & Handys, Power Delivery & Quick Charge
Niko
Niko
Ich bin Niko, betreibe BitReporter und interessiere mich für jede Form von Technologie, die in unseren Alltag Einzug hält. Ich schreibe hier über Software und Hardware die ich verwende, sowie Probleme mit meiner Technik und Lösungen. Schließlich soll Technik nützlich sein und Spaß machen und nicht zusätzliche Arbeit verursachen.

15 Kommentare

  1. HAllo, leider bootet die SSD Platte nicht bis zum Ende (Login) durch. Es gibt eine Meldung wie “ Write Protec is off – Not supported“ . Woran könnte das liegen ?

    So hängt die SSD im System:
    Disk /dev/sda: 111,8 GiB, 120034123776 bytes, 234441648 sectors
    Disk model: 2115
    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: 0xc7381d02

    Device Boot Start End Sectors Size Id Type
    /dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
    /dev/sda2 194560 234440703 234246144 111,7G 83 Linux

    Gruß
    MM

  2. HI, danke für die Anleitung. Echt nützlich 🙂 Aber der rsync-Befehl legt im Ziel auf dem USB Stick boot.bak an. Kann ich die Daten einfach umkopieren nach usbstick/boot ?

    VG
    majobunix

    • Hallo Majobunix,
      Rsync kopiert einfach 1:1 die Daten von der Quelle zum Ziel. Die boot.bak muss daher auch auf der SD-Karte vorher schon vorhanden gewesen sein und kann ignoriert werden.

  3. ich habe das Problem, daß mein Micro SD Card Reader von meinen Raspberry P3+ defekt ist (durch Fallen auf Boden abgebrochen). Dadurch kann ich nach obiger Beschreibung leider nicht vorgehen. Also kann ich meinen Raspberry 3 nicht Initialisieren, daß er vom USB Stick bootet. Ich hätte noch einen Raspberry P4 – könnte ich damit auch den USB Stick so vorbereiten, daß ich mit diesem den Raspi 3 Booten könnte oder welche Möglichkeit gäbe es sonst ?
    Besten Dank für Rückantwort

    • Ich wüsste nicht wie, wenn der Pi 3 noch nicht zum Booten von USB eingerichtet ist. Aber vielleicht startet er ja von USB. Ich meine, dass dies bei einem neuen Raspberry Pi bei mir direkt funktioniert hat, aber das kann ich ja naturgemäß nicht testen. Installier doch mal ein Raspbian mit Etcher o.ä. auf einem USB-Stick und schau, ob er bootet. Vielleicht hast du Glück.

    • Per ssh kann man auf den Pi zugreifen und die Befehle im Terminal eingeben (cmd von Windows kann das jetzt auch, oder das allseits beliebte Putty).
      Das Klonen der SD kann dann auf einem anderen System vorgenommen werden.
      Ich steuer meine Raspberrys generell über ssh, da die sich gut verbaut in allen Ecken verteilen und keine Eingabegeräte angeschlossen sind. Kiauh ist ja eh nur über Konsole ansteuerbar.

  4. Niko danke für deine Nachricht – hab ich nun auch getestet. Aber leider auch ohne Erfolg. Besten Dank nochmals für deine Nachricht.

  5. Hallo, danke für die grosartige Anleitung, bei mir ist ein Fehler aufgetreten,

    nach ausführen vom Kopierbefehl: sudo rsync -ax –progress / /boot /mnt/usbstick
    habe ich festgestellt das im Ordner mnt/usbstick der Ordner mnt/usbstick mit angelegt wird indem sich wider ein eine komplette Kopie der SD Karte befindet dies ging so lange bis kein Platz auf dem USB Laufwerk war, habe danach den Befehl rsync modifiziert, bei mir sieht der Befehl so aus: sudo rsync -ax –exclude=/mnt –progress / /boot /mnt/usbstick

    Durch verwendung von –exclude=/mnt wird der Ordner „/mnt“ nicht mit kopiert

    • Hi Darius,
      das ist ein wichtiger Punkt und du hast natürlich recht. Den Hinweis habe ich schonmal bekommen, aber leider vergessen den Artikel zu aktualisieren. Danke für den Hinweis.
      Gruß
      Niko

  6. Zur Info: falls eure USB Stick sich nicht mit mkfs.ext4 formatieren lässt.

    Mein USB Stick konnte ich zwar mit parted partitionieren aber das formatieren der ext4 Partition wurde immer mit Fehler quittiert, die Formatierung konnte ich erst mit mein Windows Rechner mit Hilfe der Software AOMEI durchführen in dem ich darüber die Partition ext4 gelöscht, neu angelegt und formatiert habe.

  7. Zur Info: für die diejenigen die mit RaspberryPi 3 arbeiten, habe ich hier nützliche Einträge die in der Datei config.txt im Ordner BOOT eingetragen werden können.

    # Abschaltung von Bluetooth und Wifi, nur verwenden wenn beides nicht genutzt wird
    dtoverlay=pi3-disable-wifi
    dtoverlay=pi3-disable-bt

    #USB Limit von 600mA aufheben und auf 1.200mA erhöhen, gutes Netzteil vorausgesetzt
    #Alte Version
    safe_mode_gpio=4
    #Neue Version
    max_usb_current=1

    #Timeout für USB-Laufwerke verlängern
    program_usb_timeout=1

    #UDB BOOT Umstellung von SD auf USB
    program_usb_boot_mode=1

    • Kannsein, dass der Stick zu lange zur Initialisierung braucht. Dann musst Du mit SD booten und alles andere läuft dann über den Stick. Damit hält die SD auch ewig, da dort keine Schreibzugriffe mehr erfolgen. Ist bei einem Pi bei mir auch so, da steckt eine 2GB SD drin als Starter und das System läuft von einer SSD (Adapterplatine von Startech), da die SSD so nicht bootet.

Hinterlasse einen Kommentar

Bitte geben Sie Ihren Kommentar ein!
Die Angabe von Name oder Webseite ist optional. Weitere Informationen: siehe Datenschutzerklärung

Bitte geben Sie hier Ihren Namen ein