dd von USB auf Festplatte läuft außerhalb der Größe

Hinweis: In dem Thema dd von USB auf Festplatte läuft außerhalb der Größe gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hi Leutz, ich habe da ein für mich kurioses Verständnisproblem.


    Ich möchte ein USB Livemedium ändern, sodass die Ramdisk nicht 512 MB sondern mehr hat.
    Nachdem das Livemedium offensichtlich als CD erkannt wird, kann es nicht geändert werden.
    Überlegung: Mach ich eine Kopie.
    Die schaut dann bei mir so aus:

    Code
    dd if=/dev/sdb |pv| dd of=/home/gerald/Downloads/iso/2.iso
    ^C67GiB 0:05:20 [21,5MiB/s] [                                    <=>                                                       ]
    18191264+0 records in
    18191264+0 records out
    18191265+0 records in
    18191264+0 records out
    9313927168 bytes (9,3 GB, 8,7 GiB) copied, 320,33 s, 29,1 MB/s9313927168 bytes (9,3 GB, 8,7 GiB) copied, 320,333 s, 29,1 MB/s

    jetzt muss man sagen, dass die Originalgröße nur 2,1 GB beträgt und offensichtlich hätte hier dd bis zum bitteren Ende weitergeschrieben.
    Es ist mir bekannt, dass man dd normalerweise verwendet um von einem zum anderen Speichermedium zu schreiben, also eine idente Kopie zu machen. Nachdem aber if/of inputfile/outputfile heißen soll, klang es für mich plausibel dass ich /.../.../2.iso machen könnte.



    1. kann ich eine iso von einem USB Stick auf die Festplatte mit dd ziehen?
    2. wenn ja, was habe ich in meiner Ausführung falsch gemacht?
    3. wenn nein, wie wäre es besser zu lösen?


    Vielen Dank!

    Für den Inhalt des Beitrages 113918 haftet ausdrücklich der jeweilige Autor: JeyF123

  • Man kann mit dd selbstverständlich auch ein .iso von einem Stick auf die Platte schieben.
    Auf einem Stick liegt aber keine .iso Datei.
    Also musst du bei dd die Größe selbst ermitteln und beim Aufruf mit angeben.
    Oder du machst schlicht ein dd if=/dev/sd<tatsächlicher-Buchstabe-hier> of=/home/luser/mein.iso
    Damit wäre dann das .iso File genau so groß, wie der Stick selbst.
    Völlig unabhängig von der tatsächlichen Größe des originalen Laufwerkabbilds.
    Am Ende fänden sich die Reste aus der vorherigen Verwendung oder zufälliger Datenmüll.


    dd ist ein Low-Level Kopiertool. Es hat keine Vorstellung von Dateigrößen, Dateisystemen, Directories oder Files. Es kennt nur Blöcke und die Geometrie des Devices selbst.


    Der Umweg über pv ist auch unnötig. dd reagiert auf -SIGUSR1 oder -SIGUSR2 (weiß ich nicht mehr; ausprobieren).
    Wird dieses Signal erhalten, spuckt dd Statistikdaten über den Kopierjob aus.

  • bin noch nicht ganz dabei. Aber ich glaube, dass ich den Kern meiner Unkenntnis erkannt habe.
    Es geht nicht um die Datei, sondern um den Stick selbst.
    Das ist ein 32 GB Stick. Dementsprechend hätte er das gesamte Medium übertragen.
    Stimmt das jetzt so?


    ich könnte statt dieser |pv| Struktur auch

    Code
    dd SIGUSR1 if= ...


    schreiben?`

    Für den Inhalt des Beitrages 113921 haftet ausdrücklich der jeweilige Autor: JeyF123

  • Genau.
    Er hätte stur komplette 32GB kopiert.


    Ein SIGxxx kann man bei fast keinem Befehl als Option angeben.
    Signale sind mittel der IPC (InterProcessCommunication).
    Im Prinzip schickt der Kernel einfach einen Zahlenwert zu einem laufenden Prozess.
    Traditionell ist für das Senden solcher Signale der Befehl kill zuständig.
    kill hat seinen Namen tatsächlich nach dem häufigsten Gebrauch erhalten.
    Das killen eines Prozesses ist nichts anderes, als das Signal -SIGTERM an den Prozess zu senden.
    (kill sendet ein paar Signale mehr, falls der Prozess nicht reagiert)


    Da es Signale zwischen Prozessen sind, sind mindestens zwei Prozesse nötig.