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.
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
Sehr hilfreich wenn man nicht nach jedem Mal ne größere Speicherkarte kaufen möchte 😀 vielen DANK!!!!!!!
Immer wieder gerne 😉
Bei der Version V0.9n von der Seite picochess.com betrug die fett gedruckte Anzahl Sektoren den doppelten Wert (nach exakt dieser Vorgehensweise), somit dann knapp 8GB. Ubuntu 18.04
Bezieht sich der Beitrag auf eine ältere Version von Picochess oder müsste es bei der V0.9n auch klappen?
Vielen Dank!
Hallo Mark,
poste hier mal bitte die Ausgabe, wenn Du den Befehl
sudo fdisk -lu MeinImage.img
eingegeben hast. Eventuell hast Du eine andere Sektorengröße.
Gruß
Benny
Festplatte picochessRPi3B-v09N.img: 7,5 GiB, 8002732032 Bytes, 15630336 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x41408706
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
picochessRPi3B-v09N.img1 8192 93813 85622 41,8M c W95 FAT32 (LBA)
picochessRPi3B-v09N.img2 94208 15613951 15519744 7,4G 83 Linux
Hallo Mark,
laut den Zahlen werden bei diesem 8GB-SD-Karten-Image tatsächlich die kompletten 8GB belegt. Kurios ist hierbei, dass sogar mehr als diese 8GB belegt sein sollen (hab das mal schnell im Kopf überschlagen).
Ist auf dieser SD-Karte wirklich nur PicoChess + Engines + Books + Voice-Files installiert? Kannst Du die SD-Karte im DGT Pi starten und im Shell mit dem Befehl „df -h“ prüfen, ob die SD Karte im Live-Betrieb komplett voll ist?
Falls dem so ist, kannst Du mit dem Befehl „find -size +100M“ mal nach Dateien suchen, die größer als 100MB sind. Anschließend nach 90MB suchen usw.
Gruß
Benny