Ist dies eine gute Möglichkeit, meine 16-GB-SD-Karte auf eine 8-GB-SD-Karte (einfache DVD) zu übertragen?

7

FWIW, dies läuft auf einer Arch Linux ARM-Installation, die von einem SATA startet, wo ich die SD-Karte vom RPi eingesteckt habe. Die ursprüngliche 16-GB-Karte wurde mit einem Debian-Image von Windows abgebildet. Ich hatte eine SD-Karte verwendet, die ich zufällig zur Hand hatte, aber ich möchte diese spezielle SD-Karte nicht mehr im RPi behalten:

Disk /dev/mmcblk0: 16.1 GB, 16134438912 bytes
4 heads, 32 sectors/track, 246192 cylinders, total 31512576 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: 0x000ee283

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      155647       76800    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          157696     3414015     1628160   83  Linux
/dev/mmcblk0p3         3416064     3807231      195584   82  Linux swap / Solaris

Also habe ich ein Disk-Image gemacht

$ dd if=/dev/mmcblk0 of=/backup/rpiboot.bin bs=1M
15387+0 records in
15387+0 records out
16134438912 bytes (16 GB) copied, 1745.67 s, 9.2 MB/s

Ich habe die 8-GB-SD-Karte ausgetauscht. Hier ist die fdisk einer 8-GB-SD-Standardkarte dd:

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
81 heads, 10 sectors/track, 19165 cylinders, total 15523840 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: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192    15523839     7757824    b  W95 FAT32

Ich habe das Image auf das 8-GB-Laufwerk geschrieben (beachten Sie die Meldung "Kein Speicherplatz mehr auf dem Gerät").

$ dd of=/dev/mmcblk0 if=/backup/rpiboot.bin bs=1M
dd: writing ‘/dev/mmcblk0’: No space left on device
7581+0 records in
7580+0 records out
7948206080 bytes (7.9 GB) copied, 1802.52 s, 4.4 MB/s

fdisknachher dd:

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
4 heads, 32 sectors/track, 121280 cylinders, total 15523840 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: 0x000ee283

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      155647       76800    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          157696     3414015     1628160   83  Linux
/dev/mmcblk0p3         3416064     3807231      195584   82  Linux swap / Solaris

Die Partitionen sind alle gleich.

Das RPi bootet und alles scheint in Ordnung zu sein.

Ich vermute also, dass das Standard-Image nur ein 2-GB-Image ist und ich es nie so geändert habe, dass es die vollen 16 GB verbraucht. Es konnte es kopieren und dann die ersten 8 GB auf das neue Laufwerk schreiben.

Kann ich aufgrund der Art und Weise, wie ich sie geklont habe, Probleme mit dieser neuen SD-Karte feststellen? Gibt es einen besseren Weg, um damit umzugehen?

Cade Roux
quelle
Ich würde diese Methode nicht vorschlagen, aber es sollte Ihnen gut gehen. Diese Methode funktioniert, weil Sie die Größe der Festplatte nicht geändert haben und die vorhandenen Partitionen am Anfang der Karte platziert wurden.
Steve Robillard

Antworten:

8

Ja, das ist in Ordnung, denn wie Sie vermutet haben, haben nur die ersten 2 GB tatsächliche Daten. Der Rest des Speicherplatzes (entweder die ursprünglichen 14 GB oder die jetzt 6 GB) wird nicht verwendet, sodass es keine Rolle spielt, was vorhanden ist oder nicht.

Wenn Sie sich jedoch die Mühe machen, es zu verschieben, können Sie die Hauptpartition mit fdisk vergrößern, formatieren und cp -azum Kopieren der Dateien von der alten (1,6 GB) Partition auf die neue, größere Partition verwenden. Im Gegensatz zu anderen Betriebssystemen ist es Linux nicht besonders wichtig, wie Dateien im Dateisystem angeordnet sind. Solange Sie die Dateiattribute beibehalten (was auch der cp -aFall ist), ist dies alles, was Sie benötigen, um eine Linux-Installation von einer Partition / einem Gerät auf eine andere zu verschieben.

Alternativ können Sie eine zusätzliche Partition im nicht verwendeten Speicherplatz erstellen und einbinden /home, sodass Sie viele Daten in Ihrem Home-Verzeichnis speichern können, ohne den vom Kernbetriebssystem verwendeten Speicherplatz zu beeinträchtigen.

Malvineous
quelle
Schöne Antwort, die gute Verbesserungen bietet. +1
Jivings