Mein Backup Image eines 16GB USB-Sticks einer Raspbian Installation kann nicht auf einen anderen 16GB USB-Stick wiederhergestellt werden.
Der andere Stick (gleiches Modell) hat leider ein paar Byte weniger SpeicherkapazitÀt, geht also nicht! :(
Die Lösung fĂŒr das Problem ist PiShrink, damit lassen sich erstellte Image Dateien problemlos verkleinern.
PiShrink ist ein Bash Skript, das automatisch ein Raspberry Image auf eine minimale GröĂe schrumpft.
PiShrink installieren
Das Skript lade ich mir nach /opt/pishrink.
$ mkdir /opt/pishrink $ cd /opt/pishrink $ wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh $ chmod +x pishrink.sh # das Programm mal aufrufen $ ./pishrink.sh pishrink.sh v0.1.2 Usage: sudo pishrink [-sdrpzh] imagefile.img [newimagefile.img] -s: Don't expand filesystem when image is booted the first time -d: Write debug messages in a debug log file -r: Use advanced filesystem repair option if the normal one fails -p: Remove logs, apt archives, dhcp leases and ssh hostkeys -z: Gzip compress image after shrinking
Image erstellen
Den GerÀtenamen des USB-Sticks ermitteln. In meinem Fall ist er sdc.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238,5G 0 disk ââsda1 8:1 0 128M 0 part ââsda2 8:2 0 450M 0 part ââsda3 8:3 0 100M 0 part /boot/efi ââsda4 8:4 0 115,3G 0 part ââsda5 8:5 0 122,5G 0 part / sdc 8:32 1 14,7G 0 disk ââsdc1 8:33 1 256M 0 part ââsdc2 8:34 1 14,1G 0 part /run/media/butch/rootfs
Ein Image des USB-Sticks erstellen und ihn danach wieder auswerfen.
$ dd if=/dev/sdc status=progress of=pi-backup-16gb.img 15719055872 bytes (16 GB, 15 GiB) copied, 152 s, 103 MB/s 30883840+0 DatensÀtze ein 30883840+0 DatensÀtze aus 15812526080 bytes (16 GB, 15 GiB) copied, 152,928 s, 103 MB/s
Das erstellte Image jetzt mit PiShrink verkleinern.
$ ./pishrink.sh pi-backup-16gb.img pi-backup-16gb-shrinked.img pishrink.sh v0.1.2 Copying pi-backup-16gb.img to pi-backup-16gb-shrinked.img...... Gatherin data... Creating new /etc/rc.local Checking filesystem... rootfs: 44665/884112 Dateien (0.1% nicht zusammenhĂ€ngend), 396376/3686400 Blöcke resize2fs 1.44.6 (5-Mar-2019) Shrinking filesystem... resize2fs 1.44.6 (5-Mar-2019) Die GröĂe des Dateisystems auf /dev/loop0 wird auf 494174 (4k) Blöcke geĂ€ndert. Start von Durchgang 2 (max = 24592) Blöcke werden verschoben XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Start von Durchgang 3 (max = 113) Die Inode-Tabelle wird gelesen XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Start von Durchgang 4 (max = 4352) Die Inode-Referenzen werden aktualisiert XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Das Dateisystem auf /dev/loop0 is nun 494174 (4k) Blöcke lang. Shrinking image... Shrunk pi-backup-16gb-shrinked.img from 15G to 2,2G...
Ergebnis: von 15 Gig auf 2,2 Gig geschrumpft, perfekt! :)
$ ls -lh -rw-r--r--. 1 root root 15G 19. Aug 17:22 pi-backup-16gb.img -rw-r--r--. 1 root root 2,2G 19. Aug 17:29 pi-backup-16gb-shrinked.img
Zippen wir die Image Datei jetzt noch, wird sie nochmal kleiner.
$ zip pi-backup-16gb-shrinked.img.zip pi-backup-16gb-shrinked.img adding pi-backup-16gb-shrinked.img (deflated 66%) $ ls -lh -rw-r--r--. 1 root root 2,2G 19. Aug 17:29 pi-backup-16gb-shrinked.img -rw-r--r--. 1 root root 747M 19. Aug 17:35 pi-backup-16gb-shrinked.img.zip
Image zurĂŒckschreiben
Das Image schreibe ich jetzt mit dd wieder auf den “etwas kleineren” 16GB Stick. ;)
$ dd if=pi-backup-16gb-shrinked.img status=progress of=/dev/sdc bs=1M; sync 1203765248 bytes (1,2 GB, 1,1 GiB) copied, 1 s, 1,2 GB/s 2194+1 DatensÀtze ein 2194+1 DatensÀtze aus 2300961280 bytes (2,3 GB, 2,1 GiB) copied, 1,40107 s, 1,6 GB/s
Der Pi bootet anstandslos vom erstellten Stick.
Das Image lĂ€Ăt sich auch mit dem Win32 Disk Imager oder Etcher auf einen USB-Stick oder microSD Karte ĂŒbertragen.
Nach dem ersten booten, wird das System wieder automatisch vergröĂert. (getestet mit Raspbian Buster)
Vorsicht!
Gibt man mit dd nicht das richtige Device an, hat man sich schnell die falsche Festplatte ĂŒberschrieben. (z.B. sda anstelle von sdc)
Ich will es nur gesagt haben. ;)
Hi.
Sehr interessanter Artikel, danke!
Ich werde das demnÀchst selbst mal ausprobieren.
Eine Frage hÀtte ich da noch:
Kann das geschrumpfte Image auch in Windows per Win32 Disk Imager oder Etcher auf die SD Karte gespielt werden?
Oder geht das Wiederherstellen nur ĂŒber den beschriebenen Weg?
Hab das heute mal ausprobiert. Funktioniert mit beiden problemlos!
Anleitung hab ich entsprechend aktualisiert.
Danke fĂŒr den interessanten Beitrag! Balena Etcher kann sogar mit den gezippten Dateien umgehen (Win32 Disk Imager nicht) und sie zugleich entpacken und flashen. Die auf diese Weise erzeugte SD-Card bootete bei mir problemlos.
Danke fĂŒr die Info!
Funktioniert und funktioniert nicht.
Habe 4 Tage an Ostern mit der Ursache verbracht: Wer NOOBS oder PINN als Multiboot und Repair Plattform nutzen wird, kann sich das hier ersparen. Es gibt den Fehler overlapping partitions und skript steigt aus. Betrifft alle Pi Modelle und mit 5 SD Karten probiert.
Ich hatte meinen 2018 erworbenen Vorrat an 8 GB SD Karten aufgebraucht und war nun mit neuen SD Karten auf die Schnauze gefallen, weil beim Image auf SD Karte kopieren der Fehler kam, die neue sei minimal zu klein. Resultat war die Suche nach einem Image Shrinker, denn mein 8 GB Image war nur zu 80% gefĂŒllt, aber es es scheiterte an ein paar KB.
Von daher mit groĂen Hoffnungen gestartet, mein altes Image so zu verkleinern, dass es auch auf meine neuen 8GB SD Karten passt, doch nach ĂŒber 30 Stunden mit Fehlversuchen und Ursachensuche bleibt festzuhalten, dass es mit RASPBIAN installiert via NOOB oder PiNN nicht klappen wird. Und die beiden Lösungen bieten halt vieles, was dem RASPBIAN fehlt u.a. eine Recovery Shell und parallel Installationen wie auf unserem TV Pi, der zum einen als Libre Elec KODI meistens lĂ€uft und nur manchmal im Raspbian bootet.
Dennoch Danke – mag sein, dass sich pishrink und Pinn Autoren noch um eine Lösung kĂŒmmern, da ich den Fehler dort “eingetĂŒtet” habe, obschon vermutlich NOOBS zu Ă€ndern ist, was wiederum von der Raspberry Foundation kommt, die sich wohl nicht an Regeln hielt. PiNN ist eine Weiterentwicklung von NOOBS, aber basiert eben auch in Kernfunktionen auf NOOBS.
Von daher besteht noch Hoffnung.
Danke fĂŒr die ausfĂŒhrlichen Informationen.