[gull] Problème disque

Marc Mongenet Marc.Mongenet at freesurf.ch
Fri Aug 15 21:13:01 CEST 2003


Marc SCHAEFER wrote:
> On Thu, Aug 14, 2003 at 11:44:23PM +0200, Marc Mongenet wrote:
> 
>>Par exemple les CD woody de www.debian.ch passent sans problème
>>le md5sum, en revanche readcd n'arrive pas à en lire l'image.
> 
> Les CDs gravés ou ceux pressés ?  Le md5sum direct ou sur l'ensemble des
> fichiers ?

Ils sont verdâtres, je suppose donc gravés. Le md5sum de l'ensemble
des fichiers est OK sur les 7 CD Woody, du premier coup.

>>J'enverrais volontiers un bug report, mais où ? Driver Linux ?
> Au graveur du CD concerné dans ce cas :)

Effectivement, pratique ces CD Debian pour avoir une base commune.:-)

> PS: pour voir le nombre d'erreurs corrigées par la lecture d'un CD
>     (permet d'évaluer la qualité du média, de la gravure et du
>     lecture), utiliser l'option -c2scan de readcd.


Après quelques recherches sur Google, j'ai trouvé à
<http://hypermail.idiosynkrasia.net/linux-kernel/archived/2001/week52/0609.html>

 > e.g. dd if=/dev/cdrom of=n.iso
If dd is used like that, it is surprising you do not get
more errors. An iso9660 image does not necessarily fill
the track. So the IDE equivalent of the SCSI READ CAPACITY
command will often report a size that includes unwritten
sectors at the end. Those unwritten sectors can/will cause
IO errors when an attempt is made to read them.

A very useful program called "isosize" has made a return to
util-linux-2.10s (and later). Execute:
   isosize -x /dev/cdrom
to find the number of sectors and the sector size of the iso9660
fs held _within_ the first track. Then use those numbers as the
"count=" and "bs=" arguments to dd respectively.


Ce programme isosize se trouve dans le paquet sg-utils (sg3-utils
pour noyau 2.4.x) de Debian.

En lisant le CD 7 de Debian 3.0r0 :

# isosize -x /dev/cdrom
sector count: 177024, sector size: 2048

D'après ce qui suis, le noyau retourne (à readcd, cat ou dd)
une taille trop grande. En revanche les accès à travers le
système de fichiers n'ont aucune raison de lire au-delà
de la taille réelle, ce qui fait que tout va bien. D'ailleurs
mount et df donnent le même résultat qu'isosize.

Tout cela me donne un usage pratique de dd : la duplication de
CD en contournant manuellement les déficiences de l'OS (je
préférerais cat) :
dd if=/dev/cdrom bs=2048 count=177024 of=cd7.img
Fonctionne parfaitement. :-)

Mais qu'est-ce qui se trouve à la fin du CD ?

Avec le lecteur IDE Plextor PLEXCombo 20/10/40-12A sur noyau 2.4.21 :

# readcd -c2scan dev=0,0,0
Capacity: 177041 Blocks = 354082 kBytes = 345 MBytes = 362 prMB
Sectorsize: 2048 Bytes
Copy from SCSI (0,0,0) disk to file '/dev/null'
end:    177041
readcd: Input/output error. read_cd: scsi sendcmd: no error
CDB:  BE 00 00 02 B3 74 00 00 1D FA 00 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: F0 00 03 00 02 B3 8F 0A 00 00 00 00 15 00 00 00
Sense Key: 0x3 Medium Error, Segment 0
Sense Code: 0x15 Qual 0x00 (random positioning error) Fru 0x0
Sense flags: Blk 177039 (valid)
cmd finished after 0.022s timeout 40s

readcd: Input/output error. Cannot read source disk
readcd: Retrying from sector 177012.
............................~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~
readcd: Input/output error. Error on sector 177039 not corrected. Total of 1 errors.

Time total: 138.649sec
Read 457396.24 kB at 3299.0 kB/sec.
C2 errors total: 0 bytes in 0 sectors on disk
C2 errors rate: 0.000000%


noyau 2.2.25, lecteur Pioneer DR-U24X SCSI :

# readcd -c2scan dev=0,2,0
Capacity: 177041 Blocks = 354082 kBytes = 345 MBytes = 362 prMB
Sectorsize: 2048 Bytes
Copy from SCSI (0,2,0) disk to file '/dev/null'
end:    177041
readcd: Input/output error. read_cd: scsi sendcmd: no error
CDB:  BE 00 00 02 B3 74 00 00 1D FA 00 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: F0 00 04 00 02 B3 90 0A 00 00 00 00 09 01 00 00
Sense Key: 0x4 Hardware Error, Segment 0
Sense Code: 0x09 Qual 0x01 (tracking servo failure) Fru 0x0
Sense flags: Blk 177040 (valid)
cmd finished after 9.220s timeout 40s

readcd: Input/output error. Cannot read source disk
readcd: Retrying from sector 177012.
.............................~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~+~~~-~~~
readcd: Input/output error. Error on sector 177040 not corrected. Total of 1 errors.

Time total: 1268.647sec
Read 457396.24 kB at 360.5 kB/sec.
C2 errors total: 0 bytes in 0 sectors on disk
C2 errors rate: 0.000000%


Tout cela semble cohérent avec le padding que tu demandes à
cdrecord : 177024 blocs valides + 15 blocs de zéros = 177039,
début des erreurs.

Ce qui est dommage, c'est que l'option -pad de cdrecord ajoute
15 blocs, plutôt que le nombre nécessaire pour correspondre à
la taille retournée par Linux. Mais l'auteur de cdrecord n'a
sans doute pas une opinion mitigée de Linux pour rien...
Cette valeur de 177041 retournée par Linux est étrange.

Marc Mongenet




More information about the gull mailing list