DGT Pi SD-Karten-Image verkleinern

Wer kennt es nicht? Da machen wir uns ein Backup-Image von unserer DGT Pi SD-Karte und wenn wir anschließend das Backup auf eine neue SD-Karte mittels Win 32 Disk Imager spielen wollen, bekommen wir die Meldung, dass das Image für die vorhandene Karte zu groß ist.

DGT_Pi_SD_Karte_zu_klein

In meinem Beispiel habe ich ein Image einer 8 GB SD-Karte erzeugt und möchte das Image auf eine neue 8 GB SD-Karte schreiben. Theoretisch sollte das kein Problem sein, allerdings haben die Hersteller von SD-Karten unterschiedliche Ansichten, wie viele Sektoren zur Verfügung gestellt werden sollen. Hierbei kann auch die verwendete Hardware beim Erstellen eines Images eine Rolle spielen, jedoch wollen wir hier nicht allzu weit ins Detail gehen. Was nun?

Um die Sache zu lösen, müssen wir das Problem kurz beschreiben. Wir haben eine 8 GB SD-Karte, auf welcher neben dem Betriebssystem unser PicoChess läuft. Die SD-Karte ist bei Weitem noch nicht voll. Trotzdem erzeugt das Programm  Win 32 Disk Imager ein 8 GB großes Image, denn bei diesem Image handelt es sich um ein komplettes Abbild der 8 GB SD-Karte und hierzu gehört auch der ungenutzte Bereich.

Mit gerade mal 2 Befehlen können wir diesen ungenutzten Bereich aus der Image-Datei entfernen. Voraussetzung hierzu ist ein laufendes Linux-System mit Shell-Zugriff. Wir kopieren unsere „zu große“ Image-Datei in unserem Home-Ordner und geben anschließend folgenden Befehl ein:

sudo fdisk -lu MeinImage.img

Anschließend bekommen wir folgende Ausgabe:

Disk MeinImage.img: 8053 MB, 8053063680 bytes
255 heads, 63 sectors/track, 979 cylinders, total 15728640 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb86a005b

Device Boot Start End Blocks Id System
MeinImage.img1 8192 93813 42811 c W95 FAT32 ( LBA)
MeinImage.img2 94208 7796735 3851264 83 Linux

Uns interessiert in diesem Fall die hier fett gedruckte Zahl (Sektoren). Diese kann natürlich bei euch anders sein. 🙂 Wenn wir diese Sektoren-Zahl nun mit 512 Bytes multiplizieren, erhalten wir die mit Daten beschriebene Größe der Image-Datei.

Also 7796735 * 512 = 3991928320

Dies bedeutet, dass unser 8 GB-Image eigentlich nur 3,9 GB Daten enthält. Alle Sektoren nach 7796735 sind praktisch leer und können entfernt werden. Dies machen wir mit folgendem Befehl:

sudo truncate --size=$[(7796735+1)*512] MeinImage.img

Ganz wichtig!!! Die Zählung der Sektoren beginnt bereits ab 0 (Null), weshalb wir an unsere End-Sektorenzahl noch ein +1 setzen müssen.

Wurde dieser Befehl korrekt ausgeführt, ist die neue Größe der Image-Datei 3,9 GB. Kopieren wir dieses Image zurück auf unseren Windows-Rechner, können wir nun mit dem Programm Win 32 Disk Imager dieses Image problemlos auf eine 8 GB SD-Karte schreiben. Eine 4 GB-SD-Karte würde auch langen.

Hinweis:

Wenn das mit dem Schreiben des Images auf eine neue SD-Karte (8 GB) geklappt hat und man wieder die vollen 8 GB zur Verfügung haben will, müssen wir uns nach dem Hochfahren des DGT Pi per SSH mit dem DGT Pi verbinden und folgenden Befehl ausführen:

raspi-config --expand-rootfs

Nun stehen uns die vollen 8 GB der SD-Karte beim PicoChess zur Verfügung 🙂

War doch gar nicht so schwer 😉

Bis bald

Euer Benny

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.