Raspberry Pi Image von SD retten und verkleinern

Sie haben in mühevoller Kleinarbeit ein tolles Projekt auf dem Raspberry Pi realisiert und wollen es nun retten? Im Beitrag Raspberry Pi Image von SD retten und verkleinern werden Sie eine Möglichkiet dazu kennen lernen, die allerdings einen Linux-Rechner voraussetzt. In diesem Falle wurde das Vorgehen auf einem ASUS eeePC aus 2012 mit Raspberry Desktop (Debian) getestet.

Stand 11.03.2022

Ausgangslage

Eine SD-Karte z.B. SANDISK ULTRA 16 GB

Ziel

Ein Image der SD-Karte so, dass es auch auf kleineren SD-Karten gebrannt werden kann.

Als Beispiel dient hier ein Aufbau für einen Schülerworkshop Klimadaten mit dem Raspberry Pi – Temperatur, Feuchte, Druck ins Internet. Die Programme wurden auf 16GB SD Karte entwickelt und sollten dann mehrfach repliziert werden. Da ein Image dann auch erst einmal 16GB groß ist, dauert das entsprechend lange. Mit dem hier vorgestellten Verfahren gelang es, das Image auf 3,3 GB, also unter einem Viertel der ursprünglichen Größe, zu verkleinern.

Requisiten

Sie benötigen:

Einen Rechner mit SD-Karten-Lesegerät

Ein Linux-System auf diesem Rechner. Das kann auch ein Live-System auf USB-Stick sein.

Grundkenntnisse, wie man mit dem Linux-Terminal arbeitet

Der Prozess Raspberry Pi Image von SD retten und verkleinern

Erster Schritt: piShrink installieren

piShrink installieren Sie mit der Befehlsfolge

pi@raspberry:~ $ mkdir ~/bin
pi@raspberry:~ $ wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh -P ~/bin
--2022-03-02 18:52:45-- https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
Auflösen des Hostnamens raw.githubusercontent.com (raw.githubusercontent.com)… 2606:50c0:8000::154, 2606:50c0:8001::154, 2606:50c0:8002::154, ...
Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8000::154|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 10904 (11K) 
Wird in »/home/pi/bin/pishrink.sh« gespeichert.

pishrink.sh 100%[===================>] 10,65K --.-KB/s in 0,002s

2022-03-02 18:52:45 (6,75 MB/s) - »/home/pi/bin/pishrink.sh« gespeichert [10904/10904]

Schritt 2: Machen Sie piShrink ausführbar

pi@raspberry:~ $ chmod +x ~/bin/pishrink.sh

Schritt 3: Bereiten Sie das Retten der SD-Karte vor

Finden Sie zunächst heraus, wie Ihre SD-Karte ins Dateisystem eingehangen ist.

pi@raspberry:~ $ df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 466M 0 466M 0% /dev
tmpfs 100M 4,5M 95M 5% /run
/dev/sda1 292G 14G 264G 5% /
tmpfs 496M 38M 458M 8% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 4,0K 100M 1% /run/user/1000
/dev/sdb2 15G 1,9G 12G 14% /media/pi/rootfs
/dev/sdb1 253M 51M 202M 20% /media/pi/boot

Schritt 4: Kopieren Sie die SD-Karte in ein Image

In diesem Falle ist es /dev/sdb mit zwei Partitionen, davon eine Windows-lesbar mit Namen boot. Von sdb erzeugen Sie nun ein Image. Das kann eine Viertel Stunde dauern …

pi@raspberry:~ $ sudo dd if=/dev/sdb of=weatherpi.img bs=4M
3798+1 Datensätze ein
3798+1 Datensätze aus
15931539456 bytes (16 GB, 15 GiB) copied, 929,5 s, 17,1 MB/s

Schritt 5: Verkleinern Sie das Image

Von diesem Image mit Namen weatherpi.img erzeugen Sie ein verkleinertes Image mit Namen weatherpi_.img (Ich hänge einen Unterstrich an den Namen an, das können Sie auch anders machen)

pi@raspberry:~ $ sudo bin/pishrink.sh -s weatherpi.img weatherpi_.img
pishrink.sh v0.1.2
pishrink.sh: Copying weatherpi.img to weatherpi_.img... ...
pishrink.sh: Gathering data ...
Skipping autoexpanding process...
pishrink.sh: Checking filesystem ...
rootfs: recovering journal
rootfs: Inode 817 extent tree (at level 1) could be shorter. IGNORED.
rootfs: 61411/954720 files (0.6% non-contiguous), 558689/3822976 blocks
resize2fs 1.44.5 (15-Dec-2018)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/loop0 to 751718 (4k) blocks.
Begin pass 2 (max = 68393)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 117)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 7476)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 751718 (4k) blocks long.
pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk weatherpi_.img from 15G to 3.2G ...

Überprüfen Sie die Dateigrößen:

pi@raspberry:~ $ ls -l
insgesamt 21409720
.......
-rw-r--r-- 1 root root 15931539456 Mär 2 19:32 weatherpi.img
-rw-r--r-- 1 root root 3351667200 Mär 2 19:47 weatherpi_.img

Schritt 6: Erzeugen Sie einen Klon der SD-karte, allerdings vom verkleinerten Image

Vorbereitungen zum Brennen treffen

pi@raspberry:~ $ df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 466M 0 466M 0% /dev
tmpfs 100M 4,6M 95M 5% /run
/dev/sda1 292G 31G 247G 11% /
tmpfs 496M 39M 458M 8% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 4,0K 100M 1% /run/user/1000
/dev/sdb1 3,8G 836K 3,8G 1% /media/pi/UNTITLED

pi@raspberry:~ $ sudo umount /dev/sdb1
Schritt 7: Brennen der SD-Karte mit dd:

Das geht nun erheblich schneller …

pi@raspberry:~ $ sudo dd of=/dev/sdb1 if=weatherpi_.img bs=4M
799+1 Datensätze ein
799+1 Datensätze aus
3351667200 bytes (3,4 GB, 3,1 GiB) copied, 235,031 s, 14,3 MB/s

Nun können Sie Ihre neue SD-Karte im Raspberry testen …

 

Teile diesen Beitrag.