Ich habe ein Pi eingerichtet und läuft seit einer Weile gut (RPi-1). Ich wollte ein Image von RPi-1 erstellen, damit ich eine exakte Kopie auf mein 2. Pi (RPi-2) laden kann. Die SD-Karte in RPi-1 hat eine Kapazität von 4 GB (tatsächlich wird nur etwa die Hälfte verwendet), und die SD-Karte in RPi-2 hat ebenfalls eine Kapazität von 4 GB. Ich verwende Win32 Disk Imager, um eine Kopie von RPi-1 erfolgreich zu erstellen. Ich habe dann die SD-Karte für RPi-2 mit SD Formatter 4.0 (unter Windows 7) formatiert. Wenn ich jedoch Win32 Disk Imager verwende, um das RPi-1-Image auf die SD-Karte von RPi-2 zu schreiben, wird Folgendes angezeigt: "Nicht genügend Speicherplatz auf der Festplatte: Größe 7744512 Verfügbar: 7626752 Sektoren Sektorgröße: 512"
Ich weiß, dass es kein schlechtes Image ist, da ich die SD-Karte für RPi-1 formatieren und das Image problemlos zurückschreiben kann.
Was vermisse ich hier? Sind nicht alle 4 GB SD-Karten gleich groß oder variieren sie geringfügig? Was müssen Sie mit einer brandneuen SD-Karte tun, die ich verpasst habe?
(RPi - 1 SD-Karte = Sandisk 4 GB // RPi - 2 SD-Karte = Kingston 4 GB)
Antworten:
In der Tat sind nicht alle SD-Karten gleich groß. Sie müssten die Partition verkleinern, damit sie auf die kleinere SD passt. Ich hatte selbst ein ähnliches Problem. Ich hatte eine separate SD mit (in meinem Fall) Raspbian. Und ich habe meine SD-Karte, deren Größe ich ändern wollte, über einen USB-Kartenleser angeschlossen.
Bevor Sie Ihre Partition sicher verkleinern können, müssen Sie sicherstellen, dass am Ende des Entfernens keine Daten vorhanden sind. Sie können dies mit
resize2fs -M -p /dev/sda2
(Sie müssen / dev / sda2 durch den richtigen Pfad zum USB-Kartenleser und der Linux-Partition ersetzen, deren Größe Sie ändern möchten). Dadurch wird das Dateisystem auf die kleinstmögliche Größe verkleinert. Sie könnten tatsächlich die exakte Größe angeben, die Sie möchten, aber es erfordert einige Berechnungen und das Konvertieren von Größen in Blockgrößen und Sektoren und was nicht. Sicherer und einfacher, dies nicht zu tun.Danach können Sie die Partition verkleinern. Ich glaube, ich habe das benutzt
fdisk
. Holen Sie sich die genaue Startposition der Partition, löschen Sie sie und erstellen Sie sie mit der gleichen Startposition, aber mit einer kleineren Größe.Zuletzt müssen Sie das Dateisystem erneut vergrößern, um die gesamte Partition mit zu belegen
resize2fs -p /dev/sda2
quelle
e2fsck -f /dev/mmcblk0p2
(ich verkleinere die zweite Partition von mmcblk0), um die Konsistenz zu überprüfen. Dann durfte ichresize2fs -M -p /dev/mmcblk0p2
wie vorgeschlagen rennen .Ich weiß, dass dies ein alter Artikel ist, aber ich hatte nur das gleiche Problem und löste es mit der hier beschriebenen Methode: http://www.aoakley.com/articles/2015-10-09-resizing-sd-images.php
quelle
Es ist besser, ein Tarball des Dateisystems zu erstellen, denn wenn Sie ein vollständiges Festplatten-Image erstellen, kopieren Sie auch gelöschte Daten. Wenn Sie eine Datei löschen, wird die Verknüpfung zum Inode aufgehoben, die eigentlichen Daten befinden sich jedoch noch auf der Festplatte. Bei Verwendung eines vollständigen Datenträgerabbilds werden
dd
die alten Daten kopiert (es sei denn, Sie überschreiben sie zum ersten/dev/zero
Mal mit , was einige Zeit in Anspruch nimmt), bei Verwendung eines Backups werdentar
jedoch nur die aktuellen Daten kopiert.Oder ... Sie können wie bei vielen anderen Distributionen vorgehen: Reduzieren Sie die Größe Ihres Dateisystems auf ungefähr 1,9 GiB, bevor Sie ein Image erstellen, und ändern Sie die Größe, um die Festplatte nach dem Wiederherstellen des Backups zu füllen.
Vorsichtsmaßnahme: Ich bin nicht mit Windows-Imaging-Tools vertraut, sondern ein Linux-Benutzer.
quelle
Wenn Sie Linux verwenden, hier ein kleines Skript:
Kredit: Sirlagz (soooo Entschuldigung!)
quelle
echo "$partinfo" | grep $fileSystemType | awk -F: ' { print substr($2,0,length($2) - 1) } '
" verwenden, um B in partstart zu entfernen.