Statt von SD-Karte

Raspberry Pi: So starten Sie Raspbian per USB-Stick

22.03.2015 von Hermann Apfelböck
Alle bekannten Platinen-PCs wie Raspberry Pi, Banana Pi, Odroid oder Cubieboard erwarten das Betriebssystem auf einer Micro-SD-Karte. Es ist aber auch ein System auf USB-Stick realisierbar.

Ein Platinensystem auf USB-Stick hat gegenüber der SD-Karte immer Vorteile: Ein genereller Pluspunkt ist die Handlichkeit des USB-Sticks, denn SD-Karten zu entnehmen bedeutet oft Fummelei – vor allem bei Platinen, bei denen Sie erst das Gehäuse öffnen müssen. Ferner bieten USB-Sticks beliebige Kapazitäten und im Schnitt mehr Kapazität fürs Geld. Die Geschwindigkeitsvorteile sind hingegen nicht gravierend, sofern die üblichen USB-2.0-Ports vorliegen. Bei den selteneren Platinen mit USB 3.0 (Odroid XU3, Mirabox) sollte der Leistungsschub hingegen deutlich ausfallen. Das technische Problem einer USB-Installation besteht darin, dass Raspberry & Co. zumindest die Bootumgebung zwingend auf der SD-Karte erwarten. Erst dann besteht die Möglichkeit, an richtiger Stelle zum USB-Stick abzuzweigen.

An dieser Stelle können Sie statt der SD-Karte die zweite Partition des USB-Sticks eintragen – in den meisten Fällen „/dev/sda2“.

Raspberry-Einrichtung am Beispiel Raspbian

Die nachfolgende Beschreibung zielt auf die meistverbreitete Platine Raspberry Pi und auf das dort meistverbreitete Platinensystem Raspbian. Die Anleitung gilt sinngemäß auch für andere Minirechner und andere Betriebssysteme. Jedoch ist der maßgebliche Abzweigungspunkt, wo Sie vom Bootloader auf SD-Karte auf das USB-Gerät mit dem Betriebssystem weiterleiten, bei jedem System abweichend.

Auf der Kommandozeile, also auch per SSH, können Sie die Systempartition direkt im laufenden Betrieb erweitern.

In jedem Fall sind folgende Schnitte erforderlich:

• Sie holen das gewünschte System aus dem Internet und schreiben das Betriebssystem-Image auf USB-Stick. Dazu taugen genau wie bei SD-Karten die üblichen Hilfsmittel wie dd unter Linux oder der Win 32 Disk Imager unter Windows.

• Die Bootumgebung kopieren Sie dann mit einem Linux-System am PC vom Komplettsystem des USB-Sticks auf eine kleine SD-Karte. Unter einem Linux-System wie Ubuntu kommen Sie am einfachsten an die Bootpartition und deren Dateien, indem Sie bei eingestecktem USB-Stick mit dem Platinensystem im Dateimanager (nach Strg-L) die Adresse „computer:///“ eingeben. In der Geräteliste erscheint der Stick nun zweimal, nämlich als „boot“ und als „Datenträger“.

Alles, was Sie unter „boot“ finden, gehört direkt – ohne ein Verzeichnis anzulegen – in das Hauptverzeichnis der SD-Karte. Typische Dateien an dieser Stelle sind „bootcode.bin“, „start*.elf“ und „kernel.img“.

• Je nach verwendetem Platinensystem kann es nun innerhalb der kopierten Bootdaten unterschiedliche Textdateien geben, wo die Systempartition definiert ist. Bei Raspbian ist es die nur aus einer Zeile bestehende Datei „cmdline.txt“, während bei anderen Systemen etwa eine „boot.scr“ diese Information enthält. In jedem Fall wird die wesentliche Anweisung mit „root=“ beginnen, und als Gerät der Systempartition ist in der Regel „/dev/mmcblk0b2“ angegeben – also die zweite Partition der SD-Karte. Bei Raspbian liegen die Verhältnisse genau so, und dort können Sie nun stattdessen

root=/dev/sda2

eintragen. Alle anderen Angaben müssen unverändert bleiben, und die Zeile darf bei dem Eingriff keine Umbrüche erhalten. Mit dieser geänderten Angabe sucht der Kernel später das System auf der zweiten Partition des USB-Sticks (die erste Partition des USB-Sticks enthält die eigentlich überflüssige Bootpartition). Sollen neben dem USB-Stick mit dem System noch andere USB-Datenträger an den Platinenrechner angeschlossen werden, müssen Sie statt der Kennung „sda2“ eventuell „sdb2“ einsetzen. Abgesehen von der jeweils zu ändernden Textdatei verhält es sich bei anderen Systemen im Prinzip ähnlich. Wenn Sie statt des Gerätenamens „/dev/mmc…“ eine hexadezimale UUID-Kennung antreffen, können Sie in der Regel trotzdem nach „root=“ eine Partitionsbezeichnung wie „/dev/sda2“ verwenden.

Manuelles Erweitern des Dateisystems

Am bequemsten erweitern Sie den Speicherplatz des Sticks mit dem Werkzeug Gparted.

Wenn der Platinenrechner nach dieser Aktion mit der Kombination von SD-Karte und USB-Stick startet, war das Experiment eindeutig erfolgreich, denn die SD-Karte enthält nach obiger Vorgehensweise gar kein Betriebssystem mehr, sondern nur noch die Bootumgebung.

Bleibt noch ein wesentliches Problem: Wie Sie mit dem Kommandodf -h leicht feststellen können, nutzt die Systempartition nur einen Teil der verfügbaren Kapazität des Sticks. Je größer dieser ist, desto mehr wird verschenkt. Gegen diesen nach Erstinstallation normalen Zustand bieten Platinensysteme spezielle Tools – unter raspi-config lautet der Punkt „Expand Filesystem“. Dieser Service ist aber auf eine normale Installation auf SD-Karte angewiesen; bei einem System auf USB funktioniert das (bislang) nicht.

Was raspi-config leistet, ist aber kein Hexenwerk und lässt sich auch manuell erledigen: Am einfachsten ist, diese Aktion bereits vorab auf einem Linux-PC mit Gparted auszuführen. Wenn der Stick eingelegt ist, zeigt Ihnen Gparted beim betreffenden Laufwerk vermutlich jede Menge „nicht zugeteilten“ Speicherplatz.

Nach Rechtsklick auf die Systempartition mit der Partitionsziffer „2“ können Sie deren „Größe ändern/verschieben“. Ziehen Sie einfach den Schieberegler maximal nach rechts, danach klicken Sie auf „Größe ändern“ und schließlich auf „Bearbeiten -> Alle Vorgänge ausführen“.

Die Aktion lässt sich aber auch direkt auf dem laufenden Platinensystem mit fdisk auf der Kommandozeile erledigen, also auch via SSH. Mit

sudo fdisk /dev/sda

holen Sie zunächst wesentliche Informationen ein, nämlich die exakte Startposition („Anfang“) der zweiten Partition. Bei einem aktuellen Raspbian ist das der Sektor 122880, dies kann sich aber bei künftigen Versionen ändern. Die ermittelte Sektorangabe brauchen Sie gleich wieder beim Neuanlegen der Partition.

Danach löschen Sie mit dem Delete-Kommando „d“ (scheinbar) die Systempartition, also nach Abfrage der „Partitionsnummer“ die „2“. Diese Partition legen Sie dann mit der Eingabe „n“ („New“) sofort wieder an. Bei den nachfolgenden fdisk-Abfragen ist der Partitionstyp „p“ (primär), die „Partition number“ wieder die „2“ und der Startsektor („First sector“) die zuvor ermittelte Startposition. Mit „w“ („write“) schreiben Sie die Änderung auf den Datenträger. Nach einem Neustart des Minirechners stimmt nun die Partitionsgröße, und nach dem Terminal-Befehl

sudo resize2fs /dev/sda2

kann das Dateisystem den gewonnenen Platz tatsächlich nutzen.

(PC-Welt/ad)