Raspberry Pi: Speicherplatz der SD-Karte ausnutzen
Aus meinem alten Blog (2012–2017). Der Text steht so, wie ich ihn damals geschrieben habe.
Bild nicht mehr verfügbarRaspberry Pi Logo(öffnet in neuem Tab)Zum Raspberry Pi habe ich vor kurzem einen Beitrag verfasst, der sich um die Headless WIFI Konfiguration dreht. Nun geht es um vorgefertigte Distributionen, an die das Raspberry Pi Team ebenfalls gedacht hat. Die können kostenfrei heruntergeladen und mit einem beliebigen Tool auf die SD-Karte entpackt werden. Einfaches kopieren reicht nicht aus, denn die Distributionen liegen als Image vor.
Das Problem daran: diese vorgefertigten Distributionen sind an zwei Gigabyte große SD-Karten angelehnt. Die Partitionen, die erzeugt werden, sind dementsprechend nicht größer. Ich nutze für Tests gerne acht Gigabyte große Karten. Mehr Platz brauche ich, in der Testphase, nämlich selten. Wenn die Partitionen aber zu klein sind, wird viel Platz verschwendet. Genau dieses Problem hatte ich jetzt einige Male. Die Schritte, um das zu ändern, sind nicht sonderlich schwierig oder umfangreich. Deshalb bietet dieser Beitrag eine kleine Zusammenfassung der Kommandos und deren Bedeutung, um die Partitionen der SD-Karte auf die tatsächliche Größe der Karte anzupassen.
Das hier vorgestellte Verfahren funktioniert bei der original „Raspbian“ Distribution, die von der Raspberry Pi Foundation heruntergeladen(öffnet in neuem Tab) werden kann. Es besteht die Möglichkeit, dass alle Daten der SD-Karte verloren gehen beziehungsweise nicht mehr lesbar sind. Dazu reicht es aus, irgendwo eine Zahl falsch einzutippen. Wichtige Daten müssen vorher gesichert sein!
Der aktuelle Stand
Listing 1 zeigt den aktuellen Stand der Partitionen und deren Größe. Diese Tabelle lässt sich durch das Kommando df- h anzeigen.
Filesystem Size Used Avail Use% Mounted on
rootfs 2.6G 2.1G 430M 83% /
/dev/root 2.6G 2.1G 430M 83% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 228K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 9.5M 47M 17% /boot
Die ersten beiden Einträge zeigen deutlich, dass die jeweiligen Partition nur circa 2,6 Gigabyte groß ist. Und zudem schon zu 83% belegt ist. Für kleinere Spielereien reicht das. Für mehr allerdings nicht.
Partitionen löschen und neu anlegen
Bevor irgendwelche Partitionen in der Größe angepasst werden können, müssen die vorhandenen Partitionen zunächst gelöscht und neu erzeugt werden. Das bereitgestellte Image der Raspbian Distribution erzeugt von sich aus zwei Partitionen.
- Eine Boot-Partition mit FAT32
- Eine Linux-Partition mit EXT4
Die erste Partition ist von Windows Systemen aus sichtbar, wenn die SD-Karte gelesen wird. Sie enthält nur ein paar Dateien. Das eigentliche Linux-Dateisystem ist versteckt. Das folgende Kommando startet das Programm fdisk zum Partitionieren der SD-Karte, die mit mmcblk0 angegeben ist.
sudo fdisk /dev/mmcblk0
Einige Distributionen benötigen noch die -uc Option. Bei Raspbian ist das nicht der Fall. Erscheint eine Fehlermeldung, eventuell einfach noch mal mit -uc ausprobieren. Wenn fdisk gestartet ist, bitte p eingeben, um eine Liste aller Partitionen zu erhalten. Bei einer frischen Raspbian Installation sieht die Ausgabe wie in Listing 2 aus.
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 <strong>5785599</strong> 2831360 83 Linux
In der ersten Zeile wird die Boot-Partition angezeigt. Das ist diejenige, die wir auch sehen, wenn wir die SD-Karte unter Windows öffnen. Diese Partition soll intakt bleiben. Aber Nummer zwei geht es an den Kragen. Genauer gesagt muss die Partition gelöscht werden. Dabei gehen keine Daten verloren. Vorher aber bitte den Startsektor dieser Partition notieren. In dem Beispiel aus Listing 2 ist das der Wert 122880. Hier aber auf jeden Fall den Wert aus eurer Ausgabe notieren! Anschließend können wir mit dem Kommando d für delete, gefolgt von der Nummer der Partition, in diesem Fall also 2, die Partition löschen.
Jetzt brauchen wir eine neue, zweite Partition. Das gelingt über die Kommandos n für new, p für primär und dann die Nummer 2. Damit wird eine neue, primäre Partition mit der Nummer zwei angelegt. Das Programm fdisk fragt noch den Start- und den Endsektor ab, um die neue Partition anlegen zu können. Bei Start ist zwingend der oben notierte Wert einzugeben. Auf keinen Fall den Standard übernehmen, da es ansonsten mit der korrekten Zuordnung der Partitionen vorbei ist. Passiert das, am besten gleich die SD-Karte neu bespielen :). Als Endsektor einfach den Standard übernehmen. War das erfolgreich, sieht die neue Übersicht wie das Listing 3 aus. Diese Übersicht, wir erinnern uns, wird mit dem Kommando p ausgegeben.
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 <strong>15407103</strong> 7642112 83 Linux
Die beiden markierten Endsektoren aus Listing 2 und Listing 3 unterscheiden sich deutlich in dem Sinne, dass letzterer wesentlich größer ist. Genau das wollten wir auch erreichen. Zu guter Letzt bitte die neue Partitionstabelle mit dem Kommando w schreiben. Dabei sollte eine Fehlermeldung erscheinen, dass die Geräte in Verwendung sind. Hier hilft nur ein Reboot über das folgende Kommando:
sudo reboot
Dateisystem anpassen
Wenn der Raspberry Pi gebootet hat, ist es an der Zeit, dass Dateisystem an die neuen Gegebenheiten anzupassen. Dazu reicht das folgende Kommando, dass diese Aufgabe übernimmt:
sudo resize2fs /dev/mmcblk0p2
Grundsätzlich kann diese Aktion etwas Zeit in Anspruch nehmen. In diesem Beispiel, bei einer acht Gigabyte großen SD-Karte, dauerte der Vorgang aber lediglich einige Sekunden. Nun folgt die Endkontrolle. Der Befehl df -h zeigt wieder die Größe der vorhandenen Partitionen an. Die Ausgabe darf in Listing 4 bewundert werden.
Filesystem Size Used Avail Use% Mounted on
rootfs 7.2G 2.1G 4.8G 30% /
/dev/root 7.2G 2.1G 4.8G 30% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 228K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 9.5M 47M 17% /boot
Und wie wir sehen, ist die Root-Partition nun 7,2 Gigabyte groß, was einer acht Gigabyte großen SD-Karte entspricht. War doch gar nicht so schwer :).
Und nun der einfachere Weg
Jetzt kennen wir den manuellen Weg, der immer funktioniert. Zumindest so lange, wie alle notwendigen Tools vorhanden sind. Was aber bei normalen Distributionen immer der Fall sein sollte. Das oben beschriebene Prozedere kann allerdings auch voll automatisch durchgeführt werden. Dazu nach dem Anmelden am Raspberry Pi einfach das Kommando
sudo raspi-config
eingeben. Dadurch wird eine grafische Oberfläche zur Konfiguration gestartet, die in Abbildung 1 zu sehen ist.

Abb. 1: Die Raspberry Pi Konfiguration.
Der wichtige Eintrag ist schon markiert. Mit „Expand Filesystem“ werden genau die oben beschriebenen Aktionen ausgeführt. Es dauert auch nur ein paar Sekunden, bis die Meldung erscheint, dass die Partitionen angepasst wurden und nach einem Neustart aktiv werden. Wird die Konfiguration über finish beendet, erscheint auch direkt die Nachfrage, ob ein Neustart gewünscht ist. Nach diesem sind die neuen Partitionen in der richtigen Größe vorhanden. Auch das Dateisystem ist bereits angepasst. Es geht also auch einfacher :).
Fazit
Für mich ist das mittlerweile einer der ersten Schritte bei einem neuen Raspberry Pi beziehungsweise einer neuen SD-Karte. Da die meisten Distributionen auf zwei Gigabyte ausgerichtet sind, wird einfach zu viel Platz verschwendet. Im Moment nehme ich die Änderungen automatisch durch die Raspberry Pi Konfiguration vor. Ich hatte damit aber auch schon Probleme, weswegen ich hier den manuellen Weg beschrieben habe. In der Regel sollte die automatische Konfiguration aber keine Probleme bereiten.
Viel Spaß mit dem Raspberry Pi und den größeren Partitionen :).