Wie verkleinere ich ein SD-Karten-Image?

5

Ich habe mit dem Befehl dd eine 16-GB-SD-Karte abgebildet. Auf der Karte befinden sich jedoch nicht mehr als 4 GB Daten auf 2 Partitionen (FAT32 und ext3).

Ich möchte dieses Bild auf eine 8 GB SD-Karte übertragen. Wie gehe ich vor, um das Bild zu verkleinern?

Lord Loh.
quelle

Antworten:

6

Angenommen, Linux könnte folgendermaßen aussehen:

  1. Befestigen Sie das Bild mit an einem Loop-Gerät losetup. Mounten Sie keine Partitionen.

    0 GB                              8 GB                             16 GB
    |--------fat32--------|--------------------ext3--------------------|
    
  2. Unter Verwendung gparted, schrumpfen die erste Partition auf weniger als 50% der Originalgröße.

    0 GB                              8 GB                             16 GB
    |--fat32---|          |--------------------ext3--------------------|
    
  3. Verschieben Sie die zweite Partition in den neu erstellten freien Speicherplatz und verkleinern Sie sie auf <50%.

    0 GB                              8 GB                             16 GB
    |--fat32---|---------ext3---------|                                |
    
  4. Stellen Sie sicher, dass die zweite Partition vor den 8 GB endet.

  5. Trennen Sie das Loop-Gerät.

  6. Kürzen Sie die Image-Datei auf 8 GB.

Hinweis: Normalerweise müssen Sie zuerst das Dateisystem verkleinern und dann die Partitionsgröße an das Dateisystem anpassen. Gparted erledigt dies für Sie in einem einzigen Schritt "Größe ändern", andere Tools jedoch möglicherweise nicht.

grawity
quelle
Vergessen Sie nicht: Nachdem Sie eine solche Größenänderung vorgenommen haben, können Sie nicht einfach alles zurückgeben. "DD" ist kein einfaches Backup. Es ist für Byte-für-Byte-Backup. Behalten Sie alle Informationen des Geräts. Wenn Sie eine einfache Sicherung von einem Gerät wünschen, verwenden Sie .tar.gz, .tar.bz2 (unter Linux behalten diese beiden die Berechtigungen bei). Aber nicht DD, wenn Sie sich nur um die Dateien und den Speicherplatz kümmern.
Shiki
@Shiki: Das Ziel ist nicht das Sichern, sondern das Verschieben ganzer Volumes (inkl. Dateisysteme, Partitionstabellen usw.) auf eine kleinere Festplatte.
Grawity
Oh, es tut mir wirklich leid, du hast recht. ( Ich übersprang diesen Teil. :( )
Shiki
0

Zunächst einmal können Sie das Disk-Image nicht einfach verkleinern. Es ist zu viel kompliziertes Zeug drin.

Ich werde vorschlagen, dass Sie das dd-Image einbinden und dann entweder Dateien in Ihr neues Dateisystem kopieren oder weiter nachforschen, wie Sie Ihre spezifischen Dateisysteme und nicht die Festplatte verkleinern können.

Haben Sie zunächst eine Kopie der ursprünglichen Partitionstabelle?

Wenn nicht, versuchen Sie: fdisk -l -u /path/to/image

Dann können Sie hoffentlich die oben angegebenen Werte verwenden, um Folgendes zu tun:

dd if=/path/to/image of=/path/to/output bs=BLOCKSIZE skip=STARTBLOCK count=TOTALBLOCKS

(Ersetzen der oben genannten Hauptstädte nach Bedarf)

Von dort aus montieren Sie das Image:

mount -o loop /path/to/output /path/to/mountlocation

und kopieren Sie entweder Ihre Daten oder lernen Sie, wie bestimmte Dateisysteme standardmäßig verkleinert und weiterentwickelt werden.

PriceChild
quelle