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