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

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. Im Artikel Raspberry Pi SSD Festplatte booten 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:3020000a erhalten. 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.

Über raspberry.tips

32 Kommentare

  1. Habe den USB Stick am Raspberry Pi eingerichtet. Soweit konnte ich dann auch vom Stick booten. Dann habe ich den Stick in einen anderen Raspberry Pi eingesteckt, aber da bootet er nicht.
    Es darf doch eig keinen Unterschied machen, die Daten liegen ja auf dem Stick oder werden diese mit dem jeweiligen Gerät verheiratet?

    • Verheiratet nicht aber am zweiten muss vorher ebenfalls der USB Boot Mode einmalig via SD Karte aktiviert werden.

  2. Danke für die Anleitung – sie funktioniert meistens, denn auch bei mir bleibt der Raspi nach der Meldung

    [sda] Attached SCSI removable disk

    hängen.

    Da dieses Problem auch bei anderen auftaucht, wäre es schön, wenn sich der Verfasser oder ein anderer Auskenner der Sache annehmen könnte.

    • Ich habe die Lösung selbst gefunden, deshalb antworte ich mal auf meinen eigenen Beitrag:

      Wenn in der /boot/cmdline.txt oder in der /etc/fstab statt

      /dev/mmcblk0p1 bzw. /dev/mmcblk0p2

      so etwas wie

      PARTUUID=32370276-01 bzw. PARTUUID=32370276-02

      steht, funktionieren die sed-Anweisungen nicht, deshalb /boot/cmdline.txt und /etc/fstab manuell ändern:

      cmdline.txt:
      root=/dev/sda2

      fstab:
      /dev/sda1 /boot
      /dev/sda2 /

      Dann rennt’s – viel Erfolg!

  3. Moin moin,
    nachdem ich dann jetzt den Samsung USB Stick bekommen habe, klappte es auch von Anfang an.
    Vielen Dank für diesen Guide.
    Nur ein Problem habe ich noch und zwar das booten der Raspi dauert auch trotz leerer SD Karte extrem lang.
    Bevor man di Bootsequenz sieht ist bestimmt 30 Sekunden (oder auch 20:-) ) nur ein „buntes Bild“ zu sehen.
    Kann man das vielleicht noch irgendwie beschleunigen?

    Vielen Dank.

  4. Hi F.X. Sattler
    Ich habe die SD Karte mit dem Eingebauten Sd Karten kopiere die SD Karte auf ein Inte SSD 80 GB Kopiert Läuft alle vom feinsten.
    MFG Achim

  5. bei mir stimmt was leider nicht, ich komme nicht auf meinem pi nachdem die sd karte aus dem slot genommen wurde. also ich hab alles so wie in der anleitung gemacht, es hat alles geklappt.

    achja auf der sd karte war folgendes installiert http://www.iobroker.net/?page_id=6908&lang=de

    hab dann die schritte mit dem bootloader und so weiter alle gemacht bis auf sudo apt-get update && sudo apt-get -y upgrade alles andere habe ich aber ausgeführt.
    klappt das mit dem image einfach nicht ???

  6. Danke für die sehr ausführliche Anleitung.

    Bei kommt beim Booten ohne SD-Karte nach: [sda] Attached SCSI removable disk

    random: crng init done

    Danach gehts nicht mehr weiter.

    Jmd eine Idee woran das liegen könnte. Wird mein Toshiba 64 GB USB-Stick vllt nicht unterstützt?
    Bin leider noch Linux-Anfänger.

  7. > Wer sich im Detail über den Boot Prozess und und die Möglichkeiten informieren will findet im _GitHub_ Repository die Dokumentation

    Typo.

  8. Danke für die super Anleitung, nun bootet der Pi3 von einer Samsung SSD T3 :-)
    Habe aber jetzt folgendes Problem:
    Beim Anschluss eines USB-Sticks oder einer SD-Card im SD-Cardslot kommt diese Fehlermeldung:
    „Das angegebene Verzeichnis »/media/pi/6337-3234« ist ungültig“
    Problemlösung?
    Danke schon mal
    Gruss Rolf

  9. Besten Dank für diese Anleitung. Hat fast auf Anhieb geklappt: Ich musste bei meinem PI3, in Abweichung zu den beiden sed-Befehlszeilen oben, folgende Änderungen vornehmen:

    1. In /mnt/usbstick/boot/cmdline.txt
    root=/dev/mmcblk0p7 ersetzen durch root=/dev/sda2

    2. In /etc/fstab
    /dev/mmcblk0p6 /boot vfat defaults 0 2
    ersetzen durch
    /dev/sda1 /boot vfat defaults 0 2
    und die Zeile:
    /dev/mmcblk0p7 / ext4 defaults,noatime 0 1
    ersetzen durch:
    /dev/sda2 / ext4 defaults,noatime 0 1

    Die unterschiedlichen Blocknummerierungen kommen möglicherweise davon, dass ich meine microSD ursprünglich mit NOOBS erstellt hatte.

  10. Hi, ich habe nach dem vorstehenden Artikel „Raspbian von USB Stick booten“ installiert, doch ich kann ohne SD den Raspi3 nicht starten was muß ich noch ein oder umstellen in der Software, das Raspi ohne SD von der WD-Festplatte startet.

    MFG
    F.X. Sattler

  11. Danke für das Tut. Und auch an Alex da ich es ohne seinen Kommentar nicht gemacht hätte ( Bin blutiger Anfänger) nur jetzt kann ich in Chromium keine Videos mehr schauen :-( ! Und das laden der Seiten ist auch sehr lahm. Ich benutze einen USB 3 Stick. Hat jemand eine Idee woran das liegt?

  12. Frohes Neues alle zusammen!

    Funktioniert wunderbar mit einem 64 Gbyte USB 3.0 Stick von Sandisk (der mit dem zusätzlichen 3.1 Minianschluss auf der anderen Seite). Vielen Dank für die klasse Anleitung.
    Backups/Kopien der Sticks/SD-Karten mache ich übrigens unter macOS mit dem ApplePi Baker: http://www.tweaking4all.com/news/applepi-baker-v1-9-4-update-macos-sierra-beta-2/)

    Ich habe auch eine leere SD Karte in den SD-Slot getan, um den Bootvorgang zu beschleunigen. Geht prima, dauert aber trotzdem ein paar Sekunden. (Kann man das noch irgendwie beschleunigen ;-)?

    Ich habe somit nur noch EIN Problem, seitdem ich auf die Beta Firmware upgedatet habe: Wenn ich versuche mit laufender Emulationstation unter -> Retropie (Configuration), irgendein Menüpunkt für Updates zu starten (Audio, Bluetooth, Configuration Editor etc.) bekomme ich eine Fehlermeldung -> (Unknown Platform – please manually set the __platform variable to one of the following: armv7-mali generic-x11 imx6 odroid-c1 android-c2 rpi1 rpi2 rpi3 …) etc.
    Wenn ich Emulationstation verlasse und z.B. rasppi-config per Hand aufrufe klappt es.

    Hat jemand eine Idee?

    Danke

    P.S.: Weiss jemand wann dieses „boot-feature“ offiziell implementiert wird?

    • Ob meine Lösung die saubere Art und Weise ist, weiß ich nicht, aber es funktioniert:

      – Emulationstation beenden mit F4
      – CPU Info abfragen mit: „cat /proc/cpuinfo“
      – Bei mir wird unter HARDWARE BCM2835 ausgegeben, was eigentlich nicht stimmt da ich einen RPI3 habe (BCM2837)
      – Egal, ich habe BCM2835 übernommen und die Datei system.sh in home/pi//RetroPie-Setup/scriptmodules editiert und folgendes in der „function get_platform()“ hinzufügt:
      BCM2835)
      __platform=“rpi3-64″
      ;;
      – rpi3-64 weil ich ja einen RPI3 habe der einen 64 Bit Prozessor hat
      – dann neu booten und ich kann die Setups in Emulationstation aufrufen.
      – wie gesagt, eine „schmutzige“ Lösung, aber es funktioniert

    • Kleine Korrektur. Als Platform (__platform=”rpi3″) rpi3 eintragen, nicht rpi3-64. Ansonsten hat man beim installieren der optionalen packages nur Source Install zur Auswahl und nicht noch die Option Binary install

  13. Sehr gute Anleitung! Ich habe das genau so gemacht und, obwohl ich mich kaum mit Linux auskenne, hat alles auf Anhieb funktioniert!

  14. Hab das Tutorial von die so durchgespielt und hat auch alles soweit geklappt.
    Nur, gibt es eine möglichkeit die daten anders zu kopieren als per rsync?
    Per ssh hat das bei mir ewigkeiten gedauert.

    Danke für deine tollen Anleitungen :)

  15. wow, hat bei mir zwar nicht alles wie beschrieben funktioniert aber das liegt wohl an meinem Newbie-Wissen.
    Ich habe die Partitionen kopiert indem ich sie erst mit Win32DiskImager gesichert und dann auf den USB-Stick geschrieben habe.
    Dann hat er noch gestockt bei dem Versuch mmcblk0p1 zu mounten. Ich nehme an das liegt daran das ich die fstab noch nicht geändert habe: Lege ich eine leere SD-Card ein startet er aber ohne zu mucken.

    Ich gehe morgen nochmal alles langsam und in Ruhe durch, aber schon mal danke für die super-Anleitung.

  16. Das dritte Tutorial an zwei Abenden. Uns es fat auf Anhieb funktioniert.
    Ein großes Dankeschön für die klar strukturierte, schreibfehlerfreie und schnörkellose Anleitung. So etwas sollte es viel mehr geben! Auch die Anforderung des Expandierens des Filesystems hat sich erledigt. Mein Sandisk entfaltet seine 32 GB (fast) vollständig.

    Besten Dank
    Gynth

  17. Tuts leider nicht

    hab n USB 3.0 Scandisk Cruzer Ultra Fit 16GB ausprobiert.

    beibt hängen beim booten bei:

    sd 0:0:0:0 [sda] Attached SCSI removable Disk

  18. Hallo,

    es ist das ERSTE mal, dass so etwas auf Anhieb funktioniert hat ! (zumindest bei mir …)

    Vielen Dank. Jetzt kann ich mich endlich mit meinen eigentlich vorgesehenen Aktivitäten befassen.

    Gruß
    Martin

  19. Hallo,

    von mir auch ein Danke für die Anleitung.
    Hinweis noch zur Vereinfachung des Ganzen:
    Das aktuelle Raspian hat eine SD-Copy Funktion implementiert.
    EInfach einen Stick reinstecken und ausführen.
    Formatierung und Kopieren läuft von allein.
    Anschließend noch die beiden Dateien bearbeiten und fertig.

    Grußß
    Alex

    • Hallo, Alex,

      es wäre schön, wenn Du Deinen Hinweis so formuliert hättest, dass ihn auch die verstehen, die Deine Gedanken nicht kennen bzw. nicht erst googeln – ich habe nichts dergleichen gefunde.

      root@RaspberryPi:/etc# sd-copy
      bash: sd-copy: Kommando nicht gefunden.
      root@RaspberryPi:/etc# SD-Copy
      bash: SD-Copy: Kommando nicht gefunden.
      root@RaspberryPi:/etc# SD-copy
      bash: SD-copy: Kommando nicht gefunden.

  20. Hallo

    eine super Anleitung. Danke.

    Leider habe ich jetzt ein kleines Problem: Täglich erhalte ich jetzt die Meldung:

    „Warning: Unit file of apache2.service changed on disk, ’systemctl daemon-reload‘ recommended.“

    Google hat mir nicht wirklich geholfen. Auf die Default-Seite von Apache2 kann ich auch zugreifen.

    Hast du eine Idee, ob das mit dem Umzug auf den USB-Stick zu tun hat ?

    Danke

  21. Prima Anleitung funktioniert gut mit noname 4 GB Stick.

  22. Funktioniert das analog auch mit OpenELEC oder gibt’s da Unterschiede in der Vorgehensweise?

    • Hallo
      Geht das auch mit LibreElec? Habe glaube ich Raspian gar nicht auf meiner SD-Karte (sorry, für die blöde Frage ;o)

      Da meine SD-Karte aber immer mal wieder Probleme zu haben scheint (Kodi wird auf einen alten Stand zurückgesetzt, weil irgend etwas abstürzt), wäre das Auslagern auf einen USB-Stick vielleicht die Lösung für mich.

      Vielen Dank!!!

      • Auch wenn die Antwort recht spät ist:

        Die ersten Schritte musst du mit einem Raspian machen (das Booten von USB zu aktivieren). Das brauchst du nur initial einmal machen.

        Da LibreElec etwas andere Ordnernamen hat, habe ich mir ein frisches Install-Image von LibreElec auf den USB-Stick gespielt (Entweder in Windows mittels Win32Diskimager oder über das Raspian mittels dd).

        Je nach Vorgehensweise dann sda1 entweder im Raspian mounten oder in Windows den USB-Stick öffnen. Dort gibt es die Datei „cmdline.txt“.

        Zur Sicherheit eine Kopie machen und dann in der „cmdline.txt“ folgendes eintragen:

        boot=/dev/sda1 disk=/dev/sda2 quiet

        Im Raspi dann die SD-Karte entfernen und booten. Danach installiert sich LibreElec auf den USB-Stick und bootet auch davon. Wie im Artikel geschrieben, geht das booten etwas schneller, wenn man eine leere SD-Karte einlegt.

        Wenn man vorher von seinem LibreElec auf der SD-Karte ein Backup gemacht hat, kann man das dann jetzt dort einspielen und fertig. :-)

        Ich habe bei mir eine SSD verwendet und boote von einer SSD. Die Performance wird dann nur noch durch das USB 2.0 eingeschränkt.

        Ich habe im Netz gelesen, dass einige wohl Performance-Probleme haben, wenn sie über USB booten und gleichzeitig ein LAN-Kabel oder USB-WLAN-Stick nutzen um ins Internet zu kommen, da sich beides den USB-Kanal teilt. Ich nutze bei mir das interne WLAN vom Raspi und konnte bisher keine Probleme feststellen.

        Wichtiger Hinweis: Sobald man einen weiteren USB-Stick o.ä. anschließt, dann kann es passieren das das nicht funktioniert, das nicht Sichergestellt werden kann, in welcher Reihenfolge Linux die Datenträger ins System hängt. Ob man an der Stelle auch mit UUIDs arbeiten kann, habe ich noch nicht herausgefunden. Solltest du also darauf angewiesen sein, dass du weitere Datenträger am Raspi hat, dann ist die Methode nicht zuverlässig.

        LG
        David

  23. Hallo!

    Ich habe es doch gleich mal ausprobiert, aber leider hängt es bei

    —[ end Kernel panic – not syncing: VFS: Unable mount root fs on unknown-block(179,2)

    liegt das nun am Stick SanDisk USB 3.0 Extreme!

    Oder ist beim mounten etwas schief gelaufen.

    Gruß Sven

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.