Zum Inhalt

Raspberry Pi Image verkleinern mit pishrink

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

Glücklicherweise habe ich für den Raspberry Pi ein Backup eingestellt, dass ein komplettes Image der SD-Karte erstellt und auf einen externen Datenträger schreibt.

Codeberg

Zum imagebackup Skript

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 32 GB aufgedruckt war, war nicht 32 GB 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

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 Screenshot 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. Wahrscheinlich 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 eingebunden.
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.

Codeberg

Dein Weg zur eigenen Nextcloud

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Denise Jans on Unsplash