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
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
Geek, Blogger, Consultant & Reisender. Auf seiner Detail-Seite findest du weitere Informationen über Benjamin. In seiner Freizeit schreibt Benjamin bevorzugt über Technik-Themen. Neben Anleitungen und How-To’s interessieren Benjamin auch Nachrichten zur IT-Sicherheit. Sollte die Technik nicht im Vordergrund stehen, geht Benjamin gerne wandern.