Nach den Anweisungen auf dieser Seite wurden auf der Seite am Ende ein dd
Befehl und eine sync
Option angezeigt. Der Befehl lautet wie folgt:
xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M sync
Ich weiß, was ist dd
und wie es funktioniert, aber ich habe noch nie davon gehört oder die sync
Option damit verwendet, und der manuelle Seiteneintrag lautet wie folgt:
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
Was ist NUL
und warum wird es aufgefüllt ibs-size
, und warum sollten Sie die Datenblöcke auffüllen und die sync
Option mit dem dd
Befehl verwenden? Warum nicht einfach und unkompliziert?
Wenn ich versuche, sync
den Befehl so auszuführen, wie er mit dem entsprechenden Speicherort und den entsprechenden Werten ist, wird folgende Fehlermeldung angezeigt:
dd: unrecognized operand ‘sync’
Try 'dd --help' for more information.
dd ... conv=sync
Argument überhaupt beschreiben .conv=sync
Option geht klar hervor, warum sie dafür nicht verwendet wird. Im besten Fall würde es nichts tun, im schlimmsten Fall würde es das Bild während des Kopierens beschädigen.oflag=fsync
(die die von dd geschriebene Ausgabe löscht) anstelle einessync
Befehls (der alles auf dem Systemsync
ist ein Argument für beideconv
und die Optioneniflag
oderoflag
.Standardmäßig liest dd Daten blockweise ein und liest möglicherweise einen kürzeren Block als den vom Benutzer angegebenen ein, entweder am Ende der Datei oder aufgrund des Verhaltens des Quellgeräts. Dies wird als Teildatensatz bezeichnet . Es wird dann ein Block geschrieben, der dieselbe Größe hat wie die Menge, die er gelesen hat.
Dd wiederholt dies, bis die angegebene Anzahl erreicht ist oder eof bei der Eingabe oder ein Fehler bei der Eingabe oder Ausgabe angezeigt wird. Wenn es fertig ist, gibt dd die Anzahl der vollständigen und teilweisen Datensätze an, die es gelesen und geschrieben hat.
Dieses Verhalten eignet sich gut zum Kopieren einer normalen Datei innerhalb eines Dateisystems oder über eine TCP-Netzwerkverbindung, da dies als Bytestrom betrachtet wird. Andere Dateisystemobjekte wie Raw-DVDs und Magnetbänder erfordern jedoch Schreibgrößen, die innerhalb bestimmter Bereiche liegen und ein rundes Vielfaches einer bestimmten Menge sind (z. B. 512 oder 2048 Byte). Wenn Sie beispielsweise ein Disk-Image mit 255 Spuren von 63 512-Byte-Sektoren haben und auf ein Band schreiben möchten, für das eine Blockgröße von 1024 Byte erforderlich ist, müssen Sie Folgendes tun
um sicherzustellen, dass dd nicht versucht, am Ende einen 512-Byte-Block zu schreiben. Der kürzere Block am Ende wird mit Nullen oder Leerzeichen aufgefüllt. Das Auffüllen mit Nullen ist eine sichere und häufige Wahl. Die Option, dass dd mit Leerzeichen aufgefüllt wird, ist in einer anderen Situation nützlich: Konvertieren einer Datei mit Zeilen variabler Länge in eine Datei mit Zeilen fester Länge.
quelle
Ich habe festgestellt, dass das Linux-System, nicht dd, die Puffer zwischenspeichert. Wenn der Befehl dd abgeschlossen ist, führe ich daher die Synchronisierung als aus
Ich habe keine interne dd-Option verwendet, um eine Pufferlöschung zu verursachen. Wenn ich jedoch eine USB-Version einer Distribution erstelle, bin ich normalerweise die einzige auf dem Computer, sodass ich keine Bedenken habe, dass mein veröffentlichter Befehl Schaden anrichtet. Da ich die Synchronisierung als && ausführe, erfolgt die Synchronisierung mit Sudo-Rechten und ich bin sicher, dass der von mir erstellte USB vollständig ist.
quelle
Sie können die
sync
Option für die Ausgabe, die imdd
Befehl enthalten ist, nachoflag
Symbol verwenden:quelle