- Beiträge: 45
- Dank erhalten: 0
Raspberry Pi Image sichern und verkleinern
6 Jahre 4 Monate her - 2 Jahre 4 Monate her #25
von p.becker
Raspberry Pi Image sichern und verkleinern wurde erstellt von p.becker
Nachdem ein Raspberry Pi installiert ist und läuft ist es sinnvoll eine Sicherung der SD-Karte anzulegen. Eine Imagedatei der Karte kann unter Windows relativ einfach mit dem Tool "
Win32DiskImager
" erstellt werden. Allerdings kann es vorkommen, dass beim Schreiben des Images auf eine andere SD-Karte eine Fehlermeldung "Zu wenig Speicherplatz auf Datenträger" angezeigt wird, obwohl es sich um die gleiche Kartengröße handelt.
Beim Sichern des Image wird immer die komplette Karte gespeichert, egal ob sich darauf ein Dateisystem befindet oder nicht. Mit einer Linux-Live-CD, auf welcher "GParted" vorhanden ist, wie z.B. Knoppix lassen sich die Images auf die wirklich benötigte Größe verkleinern. Das hat auch den Vorteil, dass für die Sicherung des Images auf der Festplatte viel weniger Speicher benötigt wird.
Nach dem zurückschreiben auf die SD-Karte kann das Dateisystem über den Befehl
wieder vergrößert werden, so dass dem Raspbery der komplette Speicher der Karte zur Verfügung steht.
Als erstes muss das Linux von der CD/USB-Stick gebootet und die Festplatte auf der sich das Raspberry Image befindet eingebunden werden. Danach wird das Image mit einem Loopback-Device verbunden. Das Image heißt in diesem Fall "pi.img".
Damit der Kernel die Partitionen auf dem Loopback-Device erkennt, ist ein zusätzlicher Befehl nötig.
Verkleinern des Dateisystems über resize2fs
Die Systempartition kann über fdisk ermittelt werden.
Vor dem Verkleinern sollte das Dateisystem auf Fehler geprüft und ggf. repariert werden.
In der Regel sollte /dev/loop0p2 die Linux Partition sein. Das Dateisystem kann jetz auf die minimale Größe verkleinert werden.
alternativ funktioniert das auch über die grafische Oberfläche mittelt GParted. Allerdings sind hier einige zusätzliche Schritte notwendig.
Verkleinern des Dateisystems über GParted
Eigentlich sollte GParted jetzt schon funktionieren.
Es kann aber vorkommen, dass GParted die Partitionen anstatt als /dev/loop0p2 als /dev/loop0_part2 erkennt. Da diese Geräte aber nicht vorhanden sind, werden die Dateisysteme auf den Partitionen nicht erkannt. Abhilfe schaft hier das manuelle Anlegen von Links auf die entsprechenden Partitionen.
und so weiter. Nach einem erneuten Start von GParted kann nun die Ext4 Partition verkleinert werden.
Die minimale Größe des Dateisystems kann wie folgt ermittelt werden:
Jetzt noch in MB umrechnen:
Verkleinern des Images
Nun kann das Loopback-Device wieder gelöst werden.
Jetzt muss die eigentliche Image-Datei noch verkleinert werden. Dazu wird als erstes die neue Größe des Partitionsystems ermittelt.
Die neue Größe der Imagedatei wird über den Ende-Sektor der letzten Partition und die Sektorgröße berechnet.
Mit dem Befehl truncate wird die Imagedatei gekürzt.
Fertig.
Das geschrumpfte Image kann nun problemlos auch auf kleinere als die originale SD-Karte geschrieben werden.
Kleiner Tip: Das Image zur Sicherung noch gezipt werden, was auch noch Platz auf der Festplatte spart.
Beim Sichern des Image wird immer die komplette Karte gespeichert, egal ob sich darauf ein Dateisystem befindet oder nicht. Mit einer Linux-Live-CD, auf welcher "GParted" vorhanden ist, wie z.B. Knoppix lassen sich die Images auf die wirklich benötigte Größe verkleinern. Das hat auch den Vorteil, dass für die Sicherung des Images auf der Festplatte viel weniger Speicher benötigt wird.
Nach dem zurückschreiben auf die SD-Karte kann das Dateisystem über den Befehl
Code:
sudo raspi-config
Als erstes muss das Linux von der CD/USB-Stick gebootet und die Festplatte auf der sich das Raspberry Image befindet eingebunden werden. Danach wird das Image mit einem Loopback-Device verbunden. Das Image heißt in diesem Fall "pi.img".
Code:
losetup /dev/loop0 pi.img
Code:
partprobe /dev/loop0
Verkleinern des Dateisystems über resize2fs
Die Systempartition kann über fdisk ermittelt werden.
Code:
fdisk -l /dev/loop0
Code:
e2fsck -p /dev/loop0p2
Code:
resize2fs -M /dev/loop0p2
Verkleinern des Dateisystems über GParted
Eigentlich sollte GParted jetzt schon funktionieren.
Code:
gparted /dev/loop0
Code:
ln -s /dev/loop0p1 /dev/loop0_part1
ln -s /dev/loop0p2 /dev/loop0_part2
und so weiter. Nach einem erneuten Start von GParted kann nun die Ext4 Partition verkleinert werden.
Die minimale Größe des Dateisystems kann wie folgt ermittelt werden:
Code:
resize2fs -P /dev/loop0p2
resize2fs 1.42.11 (09-Jul-2014)
Geschätzte minimale Größe des Dateisystems: 375647
Jetzt noch in MB umrechnen:
Jetzt das Dateisystem mit GParted verkleinern.(375647*4096/1024/1024)+1 = 1468,37 MB
Verkleinern des Images
Nun kann das Loopback-Device wieder gelöst werden.
Code:
losetup -d /dev/loop0
Code:
fdisk -l pi.img
Festplatte pi.img: 7,5 GiB, 8010072064 Bytes, 15644672 Sektoren
Einheiten: Sektoren von 1 * 512 = [i]512[/i] Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x9db3e6ad
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
pi.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
pi.img2 137216 3362815 3225600 1,6G 83 Linux
Die neue Größe der Imagedatei wird über den Ende-Sektor der letzten Partition und die Sektorgröße berechnet.
Mit dem Befehl truncate wird die Imagedatei gekürzt.
Code:
truncate --size=$(( (3362815+1)*512)) pi.img
Fertig.
Das geschrumpfte Image kann nun problemlos auch auf kleinere als die originale SD-Karte geschrieben werden.
Kleiner Tip: Das Image zur Sicherung noch gezipt werden, was auch noch Platz auf der Festplatte spart.
Letzte Änderung: 2 Jahre 4 Monate her von p.becker.
Bitte Anmelden um der Konversation beizutreten.
Ladezeit der Seite: 0.375 Sekunden