Von externem USB-Stick / -Laufwerk booten?

44

Ich weiß, dass es nicht möglich ist, direkt von einem externen USB-Stick / -Laufwerk zu booten. Stattdessen muss man von der SD-Karte booten und dann kann das externe Gerät übernehmen. Was ist der einfachste und bevorzugte Weg, dies einzurichten, also von der SD-Karte zu booten und dann ein externes Gerät übernehmen zu lassen?

stefan.at.wpf
quelle

Antworten:

37

Wenn auf dem Pi ein vorhandenes Betriebssystem ausgeführt wird, ist es zunächst hilfreich zu wissen, ob das USB-Gerät unterstützt wird. Sie können dies tun, indem Sie es wie gewohnt mounten:

mount /dev/sda1 /mnt 

Wenn dies fehlschlägt, können Sie das USB-Gerät nicht als Root-Partition verwenden, ohne die Kernel-Module dafür zu aktivieren. Und dafür müssen Sie möglicherweise Ihren eigenen Kernel kompilieren.

Wenn dies gelingt, sollte es gut funktionieren, wenn die Boot-Parameter, die der Pi verwendet, etwas angepasst werden:

Öffnen Sie in einem vorhandenen Image, cmdline.txtdas sich auf der Startpartition befindet, und geben Sie die folgenden Zeilen ein:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Alles, was Sie dann tun müssen, ist das Image auf die SD-Karte zu flashen und den Pi zu booten. Wenn alles in Ordnung ist, /dev/sda1sollte sich der Speicherort des USB-Laufwerks beim Booten des Pi befinden und es sollte daher versucht werden, diesen Speicherort als Root zu verwenden. Der rootwaitParameter ist wichtig, da der Startvorgang hängen bleibt, bis das USB-Laufwerk erkannt wird. Ohne sie kann sich der Pi beschweren, dass der Ort nicht existiert.

Ich schlage vor, dass Sie die Root-Partition von einem vorhandenen Raspberry Pi-Image auf Ihr USB-Laufwerk kopieren und zum Booten verwenden.

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Jivings
quelle
+1 Gute Antwort. Sollte nicht console=...schon da sein?
Alex Chamberlain
2
Können Sie auch UUIDs in der Befehlszeile verwenden?
Alex Chamberlain
Ja, ich habe die gesamte Datei zur Verfügung gestellt und wo reden Sie über die Verwendung von UUIDs?
Jivings
3
Vielen Dank Jivings, ich habe das offizielle Image auf meinen USB-Stick "geflasht", dann das Zeug von der FAT-Partition auf eine SD-Karte kopiert und die cmdline.txt angepasst. In meinem Fall ist die Root-Partition dann / dev / sda2, weil / dev / sda1 die (nicht verwendete) Boot-Partition auf dem USB-Stick ist. Ich habe das Rootwait in meinem Fall nicht benötigt, aber es ist gut, diesen Parameter zu kennen!
stefan.at.wpf
@ stefan.at.wpf (und Jivings) Sie können UUIDs anstelle von /dev/sdx- zumindest in /etc/fstab/- verwenden, dann ist es egal, ob sich die xÄnderungen ändern.
Alex Chamberlain
4

Die einfachste Möglichkeit, dies einzurichten, ist die Verwendung von BerryBoot . Es unterstützt die Installation auf oder von einem oder mehreren Images auf einem USB-Stick (oder auf der SD-Karte selbst) über eine schöne GUI-Oberfläche.

Um es einzurichten, müssen Sie lediglich die ~ 70 MB der Installationsdateien auf eine FAT32-formatierte SD-Karte kopieren, sie in Ihr Gerät einlegen und losfahren. Es verfügt sogar über eine Liste vorkonfigurierter Images, die automatisch über eine Ethernet- oder WLAN-Verbindung heruntergeladen und installiert werden können.

Anschließend wählen Sie aus den verfügbaren Images das Betriebssystem aus, das standardmäßig gebootet werden soll. Wenn Sie neue Images hinzufügen oder die Standardeinstellungen zu einem späteren Zeitpunkt ändern möchten, drücken Sie während des Bootvorgangs einfach die Eingabetaste, um die Konfiguration zu ändern.

Nathan Dunn
quelle
Bild auf die SD-Karte verschieben? Ich dachte, wir wollen es auf einem USB-Stick installieren?
Suhaib
Wie im OP angegeben, ist es nicht möglich, direkt von einem USB-Stick auf einem Raspberry Pi zu booten. Sie benötigen eine SD-Karte mit einem installierten Bootloader, der den Vorgang nach dem Einschalten an ein anderes Gerät übergeben kann.
Nathan Dunn
2

ok, um das zu klären -

weiter zu @Jivings Antwort -

Es gibt verschiedene Möglichkeiten, auf eine Festplatte in der fstab zu verweisen. Die Verwendung von / dev / sdXX ist möglicherweise nicht immer sicher, da die Reihenfolge, in der die SCSI-Festplatten angezeigt werden, möglicherweise nicht garantiert werden kann.

Was ich nicht weiß, ist, ob die Boot-Konfiguration etwas anderes als grundlegende Gerätebezeichnungen versteht. "root = / dev / sda1" ist jedoch eine Abstraktion, so dass theoretisch root = LABEL = TEST funktionieren könnte. Ich muss nachforschen.

Ich entschuldige mich, wenn ich nicht sehr klar bin. Ich habe natürlich einige Fertigkeiten zu erwerben, um neuen Leuten Linux zu erklären.

Nox
quelle
1
Jivings: Können Sie uns Nubies einige der Parameter in Ihrem Kommandozeilen-Beispiel erklären? Vielen Dank.
Michael Moriarty
Er hat fstab nie erwähnt. Der Name des Zielgeräts / der Partition ist ein Kernel-Parameter. Ich glaube, dass andere Namenskonventionen wie UUID mit modernen Kerneln möglich sind, besonders wenn sie initrd / initramfs-Module haben.
Jiggunjer