Startseite>Mit PiShrink RasPi-Images platzsparend schrumpfen
Aus Raspberry Pi Geek 08/2017

Mit PiShrink RasPi-Images platzsparend schrumpfen

© Andrzej Tokarski, 123RF

Ausgequetscht

Christoph Langner

PiShrink entlüftet RasPi-Images für ein platzsparendes Backup und passt die Partitionsgröße beim Zurückspielen automatisch wieder an.

Genauso wie Sie eine Abbilddatei auf die SD-Speicherkarte eines Raspberry Pi kopieren, sichern Sie auch ein im Einsatz befindliches Raspberry-Pi-System wieder als Image. Unter Linux dient dazu das Kommando dd. Doch hier gibt es ein Problem: Die Image-Datei fällt genauso groß aus wie die Speicherkarte, auch wenn sich darauf neben dem Betriebssystem nur freier Speicherplatz befindet. Die leeren Sektoren wandern quasi mit ins Abbild. Spielen Sie das Image dann zurück, muss konsequenterweise die neue Speicherkarte mindestens ebenso viel Platz bieten wie die alte. Zudem belegt das archivierte Image mehr Platz als nötig. Wie also kann man die Luft aus dem Image für einen Raspberry Pi herauslassen?

Auf GitHub gibt es mit PiShrink [1] ein kleines Linux-Programm, das genau diese Aufgabe übernimmt. Das Tool schnappt sich ein RasPi-Image und reduziert die Partitionsgröße auf das absolut notwendige Minimum. Noch besser: PiShrink baut in das archivierte System gleich noch ein Skript ein, das beim nächsten Booten des Systems auf einem RasPi die Partition auf den maximalen Speicherplatz ausdehnt.

Auf diese Weise schrumpft das Image eines Raspbian-Systems von mehreren Gigabyte schnell auf ein paar Hundert Megabyte, ohne dass Sie dafür viel Aufwand treiben müssen. Beim Zurückspielen des komprimierten Systems spart das automatische Ausdehnen dann erneut Arbeit.

Linux only

PiShrink benötigt Linux-Werkzeuge wie Dd und Mount, die unter Windows nicht zur Verfügung stehen. Um trotzdem nicht auf PiShrink verzichten zu müssen, installieren Sie unter Windows eine Linux-Distribution wie Ubuntu [5] – oder besser gleich deren leichtgewichtigen Ableger Lubuntu [6] – in einer virtuellen Maschine wie VirtualBox [7]. Alternativ booten Sie ein Linux als Live-System von DVD oder USB-Stick. Auf diese Weise steht Ihnen ein vollwertiges Linux-System zur Verfügung, ohne dass Sie etwas an Ihrem Windows-PC verändern müssen.

Installation

Da es sich bei PiShrink um ein simples Bash-Skript handelt, fällt die Installation des Programms nicht sonderlich schwer: Sie laden das Skript aus dem Netz herunter und setzen dann die Rechte entsprechend (Listing 1). Bei den meisten Distributionen finden solch kleine Programme im Ordner ~/bin unterhalb des eigenen Home-Verzeichnisses ihr Zuhause.

Das System sollte diesen Ordner eigentlich automatisch in den $PATH des jeweiligen Benutzers aufnehmen, sodass Sie das Kommando ohne Pfadangabe von überall aus im System aufrufen können. Sollte das auf Ihrem System nicht der Fall sein, gilt es, die Umgebungsvariablen entsprechend zu erweitern.

Listing 1

 

$ mkdir ~/bin
$ wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh -P ~/bin
$ chmod +x ~/bin/pishrink.sh
$ pishrink.sh
Usage: /home/user/bin/pishrink.sh [-s] imagefile.img [newimagefile.img]

Im Normalfall aber starten Sie das Skript ohne weitere Umstände mit dem Aufruf pishrink.sh aus dem Terminal heraus. Ohne Parameter aufgerufen, gibt PiShrink lediglich seine Syntax aus. Im Endeffekt beschränkt sich das Kommando auf die Angabe einer Abbilddatei (Listing 2, erste Zeile), die PiShrink daraufhin “entlüftet”. Optional geben Sie zusätzlich einen weiteren Dateinamen für das neu zu erstellende Image an. PiShrink lässt das Original dann unangetastet (zweite Zeile).

Listing 2

 

$ sudo pishrink.sh raspberry-pi.img
$ sudo pishrink.sh raspberry-pi.img raspberry-pi_pishrink.img
### Automatisches Vergrößern der Partition deaktivieren:
$ sudo pishrink.sh -s libreelec.img

Der einzige Schalter -s kommt dann zum Einsatz, wenn Sie das Image eines RasPi-Systems verkleinern, das nicht auf Raspbian basiert – also beispielsweise Images der Kodi-Distributionen LibreELEC oder OpenELEC. Der Schalter weist PiShrink an, den Part zu überspringen, der später das automatische Ausdehnen des Systems übernimmt. Er würde versuchen, dazu ein Kommando in die Datei /etc/rc.local einzutragen, sodass Raspbian es beim Booten automatisch ausführt. Diese Datei gibt es jedoch bei LibreELEC und manch anderer Distribution nicht.

Raspbian SD Card Copier

Raspbians Pixel-Desktops enthält seit dem Update vom 13. Mai letzten Jahres [7] von Haus aus ein einfaches Klon-Werkzeug (Abbildung 1). Nutzen Sie eine ältere Installation von Raspbian “Jessie”, dann müssen Sie das Programm nachträglich einspielen. Öffnen Sie dazu die Paketverwaltung über Einstellungen | Add / Remove Software und suchen Sie dann nach piclone oder Sie installieren das Paket alternativ direkt auf der Kommandozeile mittels sudo apt install piclone.

Anschließen finden Sie das Programm im Anwendungsmenü unter Zubehör | SD Card Copier. Die Bedienung fällt nicht weiter schwer: Als Quelle wählen Sie die Interne SD-Karte (/dev/mmcblk0) aus. Als Ziel schließen Sie einen SD-Kartenleser mit der neuen Speicherkarte an einen der vier USB-Ports des RasPi an und wählen dann Generic STORAGE DEVICE (/dev/sdb) an. Ein Mausklick auf Start stößt den Klon-Vorgang an.

Wie PiShrink passt auch der SD Card Copier die Partitionsgröße des Systems an den neuen Datenträger an. Bei einer größeren Speicherkarte dehnt das Klon-Werkzeug die Datenpartition aus, bei einer kleinerer schrumpft es sie entsprechend. Reicht der Platz auf der neuen SD-Card nicht aus, gibt das Programm eine Warnung. Eine offizielle Kommandozeilenvariante des Programms existiert bislang nicht – arbeiten Sie also mit Raspbian Lite (ohne eine grafische Oberfläche), müssen Sie das Image mit PiShrink schrumpfen.

Abbildung 1: Der in Raspbian integrierte SD Card Copier klont das komplette System auf eine neue Speicherkarte.

Abbildung 1: Der in Raspbian integrierte SD Card Copier klont das komplette System auf eine neue Speicherkarte.

Schrumpfkur

Als Testobjekt dient uns eine aktuelle Installation von Raspbian Lite auf einer 16 GByte großen SD-Karte. Wir legen sie in den Kartenleser ein, holen mit dem Kommando lsblk die Geräte-ID und sichern dann mittels dd das Image auf die Festplatte (Listing 3). Dort belegt das Image mit dem Namen raspberry-pi.img dann rund 16 GByte, obwohl es eigentlich größtenteils leer ist: Außer dem Raspbian-System und ein paar Konfigurationsdaten befindet sich darauf nichts.

Listing 3

 

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
[...]
sdd      8:48   1  14,9G  0 disk
|?sdd1   8:49   1    63M  0 part /run/media/[...]/boot
|?sdd2   8:50   1  14,8G  0 part /run/media/[...]/0aed834e-8c8f-412d-a276-a26
$ sudo dd if=/dev/sdd of=~/raspberry-pi.img
15894831104 Bytes (16 GB, 15 GiB) kopiert, 210 s, 75,7 MB/s
31116288+0 Datensätze ein
31116288+0 Datensätze aus
15931539456 Bytes (16 GB, 15 GiB) kopiert, 210,459 s, 75,7 MB/s
$ ls -alh ~/raspberry-pi.img
-rw-r--r-- 1 root root 15G 24. Feb 21:48 raspberry-pi.img

Anschließend starten wir PiShrink – da es sich um ein Raspbian-System handelt, bleibt die Option -s außen vor. Das Skript kopiert nun das Image – achten Sie also darauf, ausreichend freien Speicherplatz auf dem Rechner zu haben. Dann hängt es die Kopie in ein temporäres Verzeichnis unterhalb von /tmp ein. Zu guter Letzt reduziert es die Größe der Abbilddatei von knapp 16 GByte auf schlussendlich nur noch 1,6 GByte (Listing 4). Der Erfolg hängt logischerweise davon ab, wie viele echte Daten auf der SD-Speicherkarte des Raspberry Pi enthalten waren.

Listing 4

 

$ sudo pishrink.sh raspberry-pi.img raspberry-pi_pishrink.img
Copying raspberry-pi.img to raspberry-pi_pishrink.img...
Creating new /etc/rc.local
e2fsck 1.43.4 (31-Jan-2017)
Durchgang 1: Inodes, Blöcke und Größen werden geprüft
Durchgang 2: Verzeichnisstruktur wird geprüft
[...]
Shrunk raspberry-pi_pishrink.img from 15G to 1,6G
$ ls -alh raspberry-pi*
-rw-r--r-- 1 root root  15G 27. Feb 11:08 raspberry-pi.img
-rw-r--r-- 1 root root 1,6G 27. Feb 11:30 raspberry-pi_pishrink.img
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland