Dd: Unterschied zwischen den Versionen

Aus Alexander's Wiki
K
Zeile 1: Zeile 1:
= Simple Version =
Mit dd lassen sich Images erstellen oder schreiben. Die Syntax sieht beispielsweise so aus:
Mit dd lassen sich Images erstellen oder schreiben. Die Syntax sieht beispielsweise so aus:
<source lang="bash">
<source lang="bash">
Zeile 33: Zeile 34:
5917121+0 Datensätze aus
5917121+0 Datensätze aus
3029565952 Bytes (3,0 GB) kopiert, 553,939 s, 5,5 MB/s
3029565952 Bytes (3,0 GB) kopiert, 553,939 s, 5,5 MB/s
</source>
= Extended Version =
Nun kann es vorkommen, dass man ein Image von etwas erzeugen möchte, was noch viel freien Platz ausweist. Diesen braucht man natürlich nicht in das Image übernehmen. Daher mit ''fdisk'' die Partitionen abfragen:
<source lang="bash">
Disk /dev/mmcblk0: 16.1 GB, 16147021824 bytes
4 Köpfe, 16 Sektoren/Spur, 492768 Zylinder, zusammen 31537152 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Festplattenidentifikation: 0x000f06a6
        Gerät  boot.    Anfang        Ende    Blöcke  Id  System
/dev/mmcblk0p1            8192      122879      57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    3788799    1832960  83  Linux
</source>
Das Ende der zweiten Partition liegt in diesem Fall bei 3788799. Daraus folgt der folgende Befehl zum Erstellen des komprimierten Images. Bei count musst die Anzahl der zu kopierenden Blöcke angeben werden. Diese berechnet sich aus "Ende der zweiten Partition + 1 = 3788800". Die Blocksize (bs) findet man ebenfalls in der Ausgabe von fdisk (hier 512 Bytes).
<source lang="bash">
sudo dd if=/dev/mmcblk0 bs=512 count=3788800 | gzip > raspberry.dump.gz
</source>
</source>

Version vom 24. Oktober 2014, 10:49 Uhr

Simple Version

Mit dd lassen sich Images erstellen oder schreiben. Die Syntax sieht beispielsweise so aus:

sudo dd if=/dev/mmcblk0 of=olimex-noworking.img

Nach der ProzessID von dd suchen:

ps -ef | grep dd

Das sieht dann in etwa so aus:

root     24502 23885  0 10:20 pts/1    00:00:00 sudo dd if=a20_release5.img of=/dev/mmcblk0
root     24503 24502  8 10:20 pts/1    00:00:05 dd if=a20_release5.img of=/dev/mmcblk0
kluge    24511 24142  0 10:21 pts/4    00:00:00 grep --color=auto dd

In einer weiteren Shell den Befehl mit der ProzessID aufrufen:

while true; do sudo kill -USR1 24502; sleep 30; done

Jetzt gibt dd alle 30 Sekunden eine Meldung aus, die z.B. so aussehen kann:

5314678+0 Datensätze ein
5314678+0 Datensätze aus
2721115136 Bytes (2,7 GB) kopiert, 493,896 s, 5,5 MB/s
5637466+0 Datensätze ein
5637466+0 Datensätze aus
2886382592 Bytes (2,9 GB) kopiert, 523,922 s, 5,5 MB/s
5917121+0 Datensätze ein
5917121+0 Datensätze aus
3029565952 Bytes (3,0 GB) kopiert, 553,939 s, 5,5 MB/s

Extended Version

Nun kann es vorkommen, dass man ein Image von etwas erzeugen möchte, was noch viel freien Platz ausweist. Diesen braucht man natürlich nicht in das Image übernehmen. Daher mit fdisk die Partitionen abfragen:

Disk /dev/mmcblk0: 16.1 GB, 16147021824 bytes
4 Köpfe, 16 Sektoren/Spur, 492768 Zylinder, zusammen 31537152 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Festplattenidentifikation: 0x000f06a6

        Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     3788799     1832960   83  Linux

Das Ende der zweiten Partition liegt in diesem Fall bei 3788799. Daraus folgt der folgende Befehl zum Erstellen des komprimierten Images. Bei count musst die Anzahl der zu kopierenden Blöcke angeben werden. Diese berechnet sich aus "Ende der zweiten Partition + 1 = 3788800". Die Blocksize (bs) findet man ebenfalls in der Ausgabe von fdisk (hier 512 Bytes).

sudo dd if=/dev/mmcblk0 bs=512 count=3788800 | gzip > raspberry.dump.gz