Raspberry Pi Image verkleinern

Ich hatte kürzlich das Problem, dass auf einem meiner Raspberry Pis die SD-Karte ausgetauscht werden musste. Ich habe dort eine 32GB-Karte von Samsung im Einsatz gehabt. Bei einem Onlinehändler habe ich mir ebenfalls eine 32GB-Karte jedoch von ScanDisk gekauft.

Glücklicherweise habe ich für den Raspberry Pi ein Backup eingestellt gehabt, dass ein komplettes Image der SD-Karte ersellt und auf einen externen Datenträger schreibt.
Die Anleitung dafür gibt es hier ➡ Raspberry Pi SD-Karte im Livebetrieb klonen.

Das so erstellte Image wollte ich mit dem Tool Etcher ( ➡ https://www.balena.io/etcher/) auf die neue Karte schreiben lassen. Jedoch gab es dabei eine unschöne Überraschung. Obwohl auf beiden SD-Karten 32GB aufgedruckt war, war nicht 32GB drin. Bei der neuen Karte meldete Etcher, dass Speicherplatz fehlt und deshalb das Image nicht auf die Karte geschrieben werden kann. Es galt also das Image zu verkleinern, um es auf die neue SD-Karte zu bekommen.

Es gibt dafür das recht cooles kleine Skript „pishrink“ von Drewsif auf github.com, dass diese Aufgabe übernimmt. ➡ https://github.com/Drewsif/PiShrink. Die Bedienung ist sehr einfach gehalten und das Ganze funktioniert ohne Probleme.

Ich habe für das Shrinken einen Raspberry Pi 4 verwendet, da er mehr Leistung und über USB 3.0-Ports verfügt als der alte Raspberry Pi 3. Es geht auch ein älterer Pi, jedoch benötigt dieser für die Aufgabe wesentlich mehr Zeit.

Die Funktionsweise des Skripts ist schnell erklärt:

  1. Original-Image wird ausgewählt
  2. pishrink erstellt eine exakte Kopie des Original-Images
  3. pishrink verkleinert die Kopie
  4. Original-Image und Kopie werden im gleichen Ordner belassen

Es ist also bei diesem ganzen Prozess unbedingt darauf zu achten, dass eine ausreichend große Festplatte verwendet wird,auf der beide Image-Dateien Platz finden.

Hier ein Screenshot, der das besser veranschaulicht:

pishrink
pishrink

Ich habe mir das Skript in das Verzeichnis „/etc/skripte“ geladen.

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /etc/skripte/

Im nächsten Schritt habe ich das Skript ausgeführt

sudo /bin/bash pishrink.sh nextcloud_2019-10-19.img nextcloud_2019-10-19_klein.img

Im obigen Schreenshot ist schön zu sehen, was genau passiert und die einzelnen Schritte sind gut nachvollziehbar.

Im nächsten Schritt werde ich versuchen „pishrink.sh“ sinnvoll in beim Backup-Skript ( ➡ Raspberry Pi SD-Karte im Livebetrieb klonen)zu integrieren.Warscheinlich ist das nur sinnvoll bei einem Raspberry Pi 4, da sonst ggf. ältere Pis mit geringerem RAM swappen und dadurch die SD-Karte in Mitleidenschaft gezogen wird.

Ich habe das Image auf einer externen Festplatte gespeichert und diese an den RPi angebunden.
Hier noch ganz kurz, wenn ihr eine Festplatte direkt per /etc/fstab einhängen wollt.

UUID der Festplatte identifizieren

sudo blkid

Mount Piont erstellen

/mnt/pishrink

/etc/fstab editieren

sudo nano /etc/fstab

Die externe Festplatte ist im NTFS-Format formatiert.
Damit das Speichermedium schreibend eingebunden werden kann, wird das Paket „ntfs-3g“ benötigt.
Installiert wird das mit

sudo aptitude install ntfs-3g

Die folgende Zeile am Ende der Datei einfügen und die UUID anpassen.

# wird nur für das verkleinern eines Image einbedunen
UUID=xyxyxyxyxy /mnt/pishrink ntfs defaults,noauto,umask=000,users,rw 0 0

Festplatte einhängen

sudo mount /mnt/pishrink

Das wars, nun könnt ihr mit „pishrink“ das Image auf der Festplatte verkleinern und anschließend auf die neue SD-Karte schreiben.

Bildquelle: raspberrypi.org

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.