Hi, ich bekomme wechselnde ISO Images, die ich auf DVD brenne. Nach dem Brennen lese ich die DVD wieder aus und stelle fest, dass bei manchen DVDs am Ende eine gewisse Anzahl 0-Bytes (Padding) hinzugefügt wurde. Die Größe der ausgelesenen DVDs ist im Gegensatz zu den ISOs stets ein vielfaches von 16 Sektoren. Wenn ich zum Testen ISO Images brenne, die von Anfang an einem vielfachen von 16 Sektoren entsprechen, ist die ausgelesene DVD hinterher identisch mit dem ISO Image. Auf die ISOs habe ich leider keinen Einfluss. Ich suche nun einen Weg, wie ich eine gebrannte DVD trotz Padding mit der ISO vergleichen kann. Der Inhalt müsste also irgendwie verglichen und dabei berücksichtigt werden, dass die DVD zwar größer ist, am Ende aber nur um eine Anzahl von 0-Bytes hinzugefügt wurde. Als Betriebssystem nutze ich Mac OS Mojave. Ich vermute mal, dass die Größe der DVD nach dem Brennen grundsätzlich immer einem vielfachen von 16 Sektoren entspricht? Hat jemand eine Idee, wie man die gebrannte DVD am einfachsten verifizieren kann? Vielen Dank... Torsten
Üblicherweise können die Brennprogramme das, und die machen das schon richtig. Oliver
Einfach mit dd auf die richtige länge trimmen? Ungetestet und eventuell etwas ineffizient:
1 | mediacmp(){ |
2 | ch1="$(sha256sum <"$1")" |
3 | ch2="$(dd if="$2" bs=1 count="$(stat -c %s "$1")" | sha256sum)" |
4 | [ "$ch1" = "$ch2" ] |
5 | return $? |
6 | } |
Und dann:
1 | mediacmp test.iso /dev/sr0 && echo "DVD identisch mit image" || "Nope, DVD nicht identisch" |
2 | mediacmp test.img /dev/sda && echo "HDD identisch mit image" || "Nope, HDD nicht identisch" |
Etwas was ich mich hier noch frage: Gibt es einen Grund, warum sich brenn software und brenner zu weigern scheinen, nicht iso was weis ich was formatierte Images zu brennen, oder ist das wieder einer dieser DRM versuche der Medienindustrie?
Torsten schrieb: > Hat jemand eine Idee, wie man die gebrannte DVD am einfachsten > verifizieren kann? xorriso verwenden, das checkt wahlweise die md5 per sessions oder dateien innerhalb der session. Siehe manpage.
Hi, das mit den 16 Blocks liegt am Medientyp. Unter den DVD-Typen kann man nur auf DVD-R[W] mit Write Type DAO (Disk-At-Once) auf einzelne Blocks genau schreiben. Bei allen anderen haengt der Brenner u.U. Blocks an (zB. DVD+R), oder aber sie koennen mehr Blocks hergeben als beim letzten Brennlauf geschrieben wurden (DVD-RAM, DVD+RW, formatierte DVD-RW). Ausserdem haengen Unix-Brennprogramme gerne noch ein paar hundert KB an, um dem CD TAO Read-Ahead-Bug ein wertloses Opfer darzubringen. (Die meisten Laufwerke geben die beiden CD TAO Run-out Blocks als Datenblocks an. Dann kriegt der Kernel einen I/O Error, wenn er sie lesen will.) ISO 9660 ist eigentlich immer mit Blockgroesse 2048 Bytes formatiert. Es geht auch anders, aber zB. der Linux Kernel wuerde es nicht lesen koennen. Der Vorschlag von DPA ist bis auf das "bs=1" durchaus brauchbar, wenn man das Original-Image noch hat. Bessere Geschwindigkeit gibt es mit:
1 | bytes=$(stat -c %s "$1") |
2 | blocks=$(expr $bytes / 2048) |
3 | ch2="$(dd if="$2" bs=2048 count=$blocks | sha256sum)" |
Wenn man das Original-Image nicht mehr hat, aber zB. eine Pruefsumme, dann kann man die Blockzahl vom ISO 9660 Filesystem Superblock ablesen. Auf einem GNU/Linux System gibt es vermutlich das Programm /sbin/isosize.
1 | $ /sbin/isosize -x /dev/sr0 |
2 | sector count: 1477638, sector size: 2048 |
3 | $ blocks=$(/sbin/isosize -x /dev/sr0 | awk '{ print $3 }' | sed -e 's/,//') |
4 | $ echo $blocks |
5 | 1477638 |
Das setzt allerdings voraus, dass das ISO 9660 Filesystem das ganze Image abdeckt. Bei Debian arm64 ISOs ist das zB. nicht der Fall. Der Vorschlag, xorriso einzusetzen, ist loeblich. Aber die MD5 Summen, die xorriso prueft, muessen schon beim Erzeugen des Image-Files von xorriso darin eingetragen worden sein. Von den Distros bestellt das eigentlich keine. Die haben alle ihre eigenen externen Pruefsummen zum Runterladen. > Gibt es einen Grund, warum sich brenn software und brenner zu weigern > scheinen, nicht iso was weis ich was formatierte Images zu brennen, Also xorriso brennt jede Art von Image:
1 | image_file=...Pfad.zum.Image... |
2 | xorriso -as cdrecord -v dev=/dev/sr0 padsize=0 -eject $image_file |
Das Ende wird auf volle 2048 Bytes aufgefuellt, und dann kommt noch das eventuelle Auffuellen durch den Brenner dazu. Have a nice day :) Thomas
:
Bearbeitet durch User
Das passiert auch, wenn man per dd eine (Linux-)DVD in ein Image verwandelt. Danach stimmt mindestens die MD5 Summe des Imagefiles nicht mit den Angaben der Distribution ueberein. Einfach das Padding am Ende entfernen, dann passt alles wieder.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.