Mailinglist Archive: opensuse-factory (845 mails)

< Previous Next >
Re: [opensuse-factory] Before I can test Beta 2...
  • From: Volker Kuhlmann <list0570@xxxxxxxxxxxxxxx>
  • Date: Tue, 06 May 2008 23:52:47 +1200
  • Message-id: <20080506115247.GB13135@xxxxxxxxxxxxxxx>
On Tue 06 May 2008 07:49:01 NZST +1200, Carlos E. R. wrote:

Because without it some padding bytes are read and the md5sum will be
different. That is the explanation I read and the personal experience as

Does that apply to the md5sum command used directly, or only via dd?

There are several issues which cause the equivalent of a cat /dev/sr0
to not return the correct number of bytes, making it useless for md5
sums.

The only functional way to verify checksums of burnt media is to obtain
the number of blocks occupied by the iso9660 filesystem, e.g. using
isoinfo -d -i, and then to use dd bs=2k count=thatnumber - and hope the
kernel doesn't screw you.

The kernel detects EOM (end of media) by attempting to always read
another bunch of 2k blocks. This fails to give the number of blocks you
want/need because the burning process tends to write some blocks full
of zeros at the end. Worse, a kernel problem present since the mid/late
90s attempts to read more blocks then there are, killing the lot with
the ensuing I/O error, so you never get the last blocks used by the ISO
filesystem. While mucking around doing this the drive in question (and
all other accesses to it, including the other drive on the same IDE
cable) is deadlocked for quite some time. Things are worse when DMA is
enabled. Relief can be obtained by disabling read-ahead with hdparm -a0
at the expense of serious(!) performance loss. Not sure whether sdparm
has a similar option (if not you're stuffed). dd bs=2k count=1 skip=N
will never save you as the read-ahead will always read a chunk of blocks
at once.

For this reason I always burn with a script which chucks a pile of
0-filled blocks at the end of everything.

If you install my scriptutils package the commands md5 -I / -y and
writecd --blockread will always read the correct number of blocks for
checksumming etc - as long as there is no I/O error.

HTH,

Volker

--
Volker Kuhlmann is list0570 with the domain in header
http://volker.dnsalias.net/ Please do not CC list postings to me.
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-factory+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-factory+help@xxxxxxxxxxxx

< Previous Next >