On Tue, 13 Mar 2001, Cédric Rochat wrote:

> - Existe-t-il un moyen d'utiliser un graveur IDE sans émulation SCSI ?

Je vais peut-être dire une bêtise (car ma connaissance de l'IDE et des
autres technologies PC-spécifiques est embryonnaire), mais voici ma vision
de la chose en tant que `spécialiste SCSI': 

   - le protocole IDE (ATAPI) *est* une encapsulation du protocole SCSI,
     plus ou moins complète. D'où l'idée de la magouille utilisant le
     sous-système SCSI sur un `host-adapter' IDE.

Donc, à priori je dirais qu'il n'y a pas de moyens de le faire avec IDE
seul (sauf en réimplémentant un bout de SCSI dans l'IDE, ou en utilisant
un protocole propriétaire spécifique au lecteur).

> - La commande dd est capable de faire une copie parfaite (bit à bit) d'un
> disque sur un autre. Serait-t-il possible, moyennant un pipe, de graver la
> sortie de cette commande avec cdrecord (cela devrait permettre de copier
> parfaitement n'importe quel CD, même les CD protégés) ? Syntaxe ??

dd peut copier exactement tout support linéaire. Parler de copie bit à bit
n'a de sens que si l'on sait de quoi on parle: p.ex. la taille de bloc des
disques IBM (et d'autres) est de 536 bytes, mais seuls 512 sont présentés
via l'interface linéaire (les 24 autres bytes sont privés au disque et
contiennent des sommes de contrôle et des informations de synchronisation.
Ils ne seront donc pas copiés, et en fait on se fiche de ces données
dans le cas général.)

Un CD est une bête un peu particulière vu qu'elle peut être non totalement
linéaire: il peut y avoir des trous et des bad-blocks. De plus, à mon avis
il y a un bug dans le kernel (2.2.x au moins) qui fait que la fin de CD
n'est pas détectable correctement: à mon avis une interaction malheureuse
entre les différentes tailles de bloc (2048 vs 1024 et 512), faudrait que
j'investigue plus à l'occasion. Ma connaissance de ce monde est également
peu étendue pour l'instant.

Par contre, en règle générale, s'il y a des `trous' sur un medium
(apparaissant comme des erreurs à dd), on peut faire: 

   dd bs=2k if=/dev/scd0 of=file conv=noerror,sync

       noerror
              continue after read errors

       sync   pad every input block with NULs to ibs-size
   
(en clair: remplace les trous par des zéros. Donc si un algorithme de
protection est utilisé, cela peut ne plus fonctionner si le programme
attend une ERREUR et reçoit en retour un bloc de zéros. Mais pour
récupérer un disque-dur avec des bad blocks cela peut être utile).

Tu peux tout à fait piper cela à un cdrecord (encore que je vérifierais la
taille obtenue avec dd).

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.

Répondre à