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 …