Website-Icon RandomBrick.de

Raspberry Pi 3: Von USB-Sticks und SSD-Festplatten booten

Mit der ursprünglichen Ankündigung des Raspberry Pi 3 haben die Entwickler weitere Boot-Optionen für den kleinen Rechner in Aussicht gestellt. Eine davon ist das Booten von USB-Massenspeicher. Diese Ankündigung wurde jetzt mit einem experimentellen Bootloader umgesetzt. Mit diesem kann der Raspberry Pi 3 von SSD-Festplatten und USB-Sticks booten. Eine mircoSD-Karte ist zukünftig nicht mehr notwendig.

Die Einrichtung zum Booten von USB-Sticks und SSD-Festplatten für den Raspberry Pi 3 ist nicht kompliziert. Anwender, die mehr Speicherplatz benötigen, beispielsweise für die Installation von ownCloud auf dem Raspberry Pi, können sich jetzt einige Schritte bei der Einrichtung sparen. Jedoch gilt zu bedenken, dass sich die veröffentlichte Version noch im Beta-Status befindet. Zudem funktioniert diese Anleitung nur mit einem Raspberry Pi 3 und nicht mit den Modellen 2 und 1.

Update (06.10.2016): Durch die Hinweise in den Kommentaren ist mir aufgefallen, dass WordPress die Kommandozeilen falsch darstellt. Das wurde jetzt durch entsprechende Textboxen behoben. Vielen Dank an kiar.

Raspberry Pi 3: Von USB-Sticks und SSD-Festplatten booten (Bild: raspberrypi.org)

Raspberry Pi 3: Von USB-Sticks und SSD-Festplatten booten

Die Vorab-Version des Bootloaders wird mit dem kommenden Raspbian-Release eingesetzt und ermöglicht das Booten von USB-Laufwerken. Dadurch lässt sich zukünftig die Nutzung der microSD-Karten vermeiden, die für gelegentliche Wackelkontakte und Zugriffsprobleme bekannt sind. Wer die Anleitung umsetzen möchte, muss bedenken, dass sich die Funktion noch in der Testphase befindet.

Hinweis: Nicht alle USB-Sticks und SSD-Festplatten funktionieren mit dieser Anleitung. Einige USB-Massenspeicher starten zu langsam. Der Bootloader erwartet eine Reaktion innerhalb von 2 Sekunden. Diese Antwortzeit lässt sich gegebenenfalls auch auf 5 Sekunden erhöhen. USB-Sticks und SSD-Festplatten, die innerhalb dieser Zeit nicht reagieren, werden vom Bootloader nicht berücksichtigt.

Damit der Raspberry Pi 3 von einer SSD-Festplatte oder USB-Stick bootet, muss der USB boot mode aktiviert werden. Um diesen aktivieren zu können, wird eine spezielle start.elf und bootcode.bin Datei benötigt. Diese lassen sich über den „next“-branch beim rpi-update installieren.

Schritt 1: Raspbian auf SD-Karte installieren

Vor dem Start wird eine lauffähige Installation von Raspbian auf einer microSD-Karte benötigt. Die Einrichtung wird hier im Blog ausführlich erklärt.

Schritt 2: /boot-Verzeichnis bearbeiten

Das /boot-Verzeichnis der Raspbian-Installation ist mit experimentellen Boot-Dateien auszustatten. Anwender die Raspbian Lite nutzen, müssen vorher das rpi-update ausführen.

sudo apt-get update; sudo apt-get install rpi-update
sudo BRANCH=next rpi-update

Anschließend lässt sich der USB boot mode wie folgt einschalten:

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Dadurch wird die Zeile program_usb_boot_mode=1 an das Ende der Datei /boot/config.txt gesetzt. Danach ist der Raspberry Pi neuzustarten.
sudo reboot

Nach dem Neustart ist zu prüfen, ob der OTP (One-Time Programmable Speicher) programmiert wurde:

vcgencmd otp_dump | grep 17:

Das Ergebnis sollte wie folgt lauten:

17:3020000a

Dabei ist zu prüfen, dass das Ergebnis 0x3020000a richtig ist.

Der Raspberry Pi 3 ist jetzt fähig, von einem USB-Stick oder einer SSD-Festplatte zu booten.

Schritt 3: Optional: USB boot mode entfernen

Wenn ihr die mircoSD-Karte mit der Raspbian Installation in verschiedenen Raspberry Pis im Einsatz habt, würde jeder Neustart dazu führen, dass der USB boot mode auf jedem Geräten aktiviert wird. Sollte das nicht gewünscht sein, müsst ihr die Zeile program_usb_boot_mode wieder aus der config.txt entfernen. Vergewissert euch dabei, dass am Ende der Datei keine leere Zeile übrig bleibt. Folgender Befehl ruft die config.txt auf:

sudo nano /boot/config.txt

Schritt 4: USB-Speicher vorbereiten

Warnung: Der USB-Massenspeicher, von dem der Raspberry Pi 3 zukünftig booten soll, darf keine wichtigen Dateien enthalten, da dieser vollständig gelöscht wird.

Verbindet den USB-Massenspeicher mit dem Raspberry Pi. Anstatt das Raspbian Image neu herunterzuladen, wird dieses einfach von der mircoSD-Karte auf den USB-Speicher kopiert. Dazu nutzen wir den Linux CP-Befehl zum Kopieren von Dateien. Die Quelle ist die mircoSD-Karte /dev/mmcblk0 und das Ziel der USB-Speicher /dev/sda. Prüft vor dem Ausführen, dass die Angaben richtig sind. Diese können sich ändern, wenn weitere USB-Geräte verbunden sind.

Mit dem parted Befehl wird eine 100 MB große FAT32 Partition erstellt, gefolgt von einer Linux ext4 Partition, welche den restlichen Speicherplatz einnimmt.

sudo parted /dev/sda

(parted) mktable msdos

Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) mkpart primary fat32 0% 100M
(parted) mkpart primary ext4 100M 100%
(parted) print
Model: SanDisk Ultra (scsi)
Disk /dev/sda: 30.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 99.6MB 98.6MB primary fat32 lba
2 99.6MB 30.8GB 30.7GB primary ext4 lba

Euer parted Ergebns sollte ähnlich wie aus meinem Beispiel oben aussehen. Anschließend sind die Dateisysteme für boot und root zu setzen:

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

Mountet das Ziel-Dateisystem und kopiert das laufende Raspbian-System auf den USB-Massenspeicher:

sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsync
sudo rsync -ax --progress / /boot /mnt/target

Die SSH-Host Keys müssen wiederhergestellt werden:

cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc
Anschließend ist die /boot/cmdline.txt zu bearbeiten, so dass diese den USB-Massenspeicher anstatt die mircoSD-Karte als root-Dateisystem verwendet:

 

sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt

Das gleiche gilt für fstab:

sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab

Danach muss man das Ziel-Dateisystem unmounten und den Raspberry Pi 3 ausschalten:

cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff

Abschließend den Strom-Stecker von Raspberry Pi abziehen und die mircoSD-Karte entfernen. Jetzt kann der kleine Rechner wieder mit Strom versorgt werden und sollte direkt von USB-Massenspeicher booten.

Persönliche Meinung

Wer große Mengen an Daten auf dem Raspberry Pi speichern möchte, musste bisher Raspbian von der microSD-Karte laufen lassen und anschließend ein USB-Massenspeicher einbinden und diesen als Speicherort festlegen. Beispielsweise für die Installation von Seafile auf dem Raspberry Pi. Dieser Umweg entfällt zukünftig. Auch das Problem mit den Wackelkontakten der mircoSD-Karte lässt sich auf diese Weise vorbeugen.

Ist für euch das Booten vom USB-Massenspeicher für den Raspberry Pi ein großer Vorteil? Schreibt mir eure Meinung in den Kommentaren.

Quelle: Raspberrypi.org

Die mobile Version verlassen