Gravure de CDROMS, la FAQ en français. Version du 11 jan 98, 12:25 AVANT PROPOS Cette FAQ est encore très incomplète, envoyez moi un mail si vos questions n'y figurent pas : j'ai préféré diffuser tout de suite la FAQ inachevée suite à de nombreuses demandes plutôt que d'attendre quelques semaines de plus... Une version HTML est prévue. Si vous voulez convertir cette FAQ, un petit conseil : ne le faites pas à la main mais avec un programme automatique, sous peine de devoir recommencer à chaque modification de la FAQ... De même si vous voulez ajouter des choses, envoyez moi un mail disant ce que vous avez ajouter, afin que tous aient la même version. QUE FAUT IL COMME MATERIEL? Pour graver un CD il faut : un ordinateur (minimum:386 pour les PC, 68030 pour les macs) équipé d'un graveur de CD. En pratique, un Pentium (pour windows) ou un 486 (sous unix), font très bien l'affaire. Pour les macs, je ne sais pas. Si quelqu'un peut me renseigner à l'aide de son expérience personnelle... Sur PC, il faut avoir une carte SCSI sauf pour brancher un graveur IDE (voir plus bas) COMBIEN ÇA COÛTE? Un graveur coûte entre 2000 et 4000 francs, selon qu'il est double ou quadruple vitesse, et qu'il peut graver des CD RW (réinscriptibles, par opposition aux CD R, qu'on ne peut effacer). Un graveur double vitesse (2x) grave en 40 minutes, un quadruple (4x) en 20 minutes. Un graveur peut très bien graver les CDR en 4x et les CDRW en 2x, exemple le Yamaha. SCSI OU IDE? Pendant longtemps, les graveurs étaient des produits haut de gamme, et donc on n'en trouvait qu'en SCSI. Aujourd'hui les premiers graveurs IDE apparaissent, ils sont encore mal reconnus par certains logiciels, mais la tendance s'inverse : philips a sorti son modèle réinscriptible IDE avant le SCSI... Si on a déjà une carte SCSI, pour l'instant il est préférable de s'équiper SCSI (plus grande compatibilité avec les logiciels) sinon on économise en choisissant IDE : une carte SCSI coûte entre au moins 300 francs (modèles adaptec ISA sans BIOS), compter 500 francs pour du matériel correct (Tekram 390), et au moins 1000 francs pour une adaptec décente... Le prix des graveurs est le même en IDE et SCSI aujourd'hui. UN GRAVEUR PEUT IL LIRE DES CDS? Oui, bien sûr. Il sera en général plus lent qu'un lecteur CD normal (temps d'accès de l'ordre de 150 à 300 ms contre 50 à 150 pour les lecteurs CD actuels), et son débit sera réduit : en général les graveurs de dépassent pas le 8x en lecture (à de rares exceptions près). Par contre si vous avez un lecteur IDE, vous pourrez avantageusement utiliser le graveur (IDE ou SCSI) pour lire en mode RAW (voir plus bas) car certains lecteurs IDE ne lisent pas le mode RAW alors que *presque* tous les SCSI le font ainsi que tous les graveurs. Le mode RAW sert par exemple pour copier des CD audio ou PSX. COMMENT ÇA MARCHE TECHNIQUEMENT EN LECTURE? Un CD est une piste en spirale partant du centre, allant vers l'extérieur, composée de petits trous et de petites bosses (comme un vynile). Plus précisément, ces creux et bosses sont des zones réfléchissant plus ou moins la lumière. En lecture, le faisceau laser suit cette spirale et on mesure la quantité de lumière renvoyée par le CD, qui varie selon qu'on est sur une zone réfléchissante ou pas. ...EN ECRITURE? Les CDR se composent d'une tranche de plastique recouverte sur le dessus d'un produit particulier. Le graveur chauffe ce produit avec un laser plus puissant qu'un laser de lecteur. Selon l'intensité du laser, le produit formera une zone réfléchissante ou non rélféchissante. Ensuite le produit perd ses propriétés et reste à jamais réfléchissant ou non. Pour les CDRW, je *suppose* que le produit peut retrouver son état initial (les CDRW doivent être effacés avant d'être à nouveau gravés. On peut effacer un CDRW par "morceaux", session par session - voir plus loin) STRUCUTRE D'UN CD Un CD se compose d'une ou plusieurs pistes. Ces pistes peuvent être soit des pistes de données (contenant des fichiers) soit des pistes audio (lisibles sur une platine de chaîne HIFI). Le CD comporte aussi une TOC, table of content = table des matières, qui indique combien de piste comporte le CD, leur durée etc. La TOC est écrite durant la phase de finalisation (ou fixing) qui suit l'écriture d'un CD. PISTES DE DONNEES Les disques durs des PC ont une FAT qui indique quels sont les fichiers figurant sur le disque et leur emplacement sur le disque en termes de piste, secteur etc. Sur un CD, le format est un peu particulier. Le type de "FAT", ou de filesystem, est défini par la norme ISO 9660. Cette norme est assez ouverte : elle permet l'ajout d'extensions. Ces extensions sont utilisées par le système d'exploitation (Windows, Unix... sous unix c'est au niveau des filesystems), afin de disposer d'informations supplémentaires comme les noms longs, les propriétaires des fichiers (sous unix), le type de fichiers (sur mac)... ces extensions peuvent coexister et ne gènent pas les ordinateurs qui ne les reconnaissent pas. Elles occupent très peu de place sur le CD. Exemples d'extensions: RockRidge, apporte les noms longs et les privilèges sous Unix. Joliet, apporte les noms longs sous Windows 95 et NT. Au sujet des CDROMS mac, il me semble qu'il est possible de graver des CDROMS utilisant le système hfs (hierarchical file system) c'est à dire le même que pour les disques durs macintosh. Ces CDROMS ne sont alors pas ISO9660. LE PROCEDE DE GRAVURE AU NIVEAU LOGICIEL Primo il faut rassembler les fichiers à graver. Inutile de tous les mettre sur le même disque, il suffit qu'ils soient tous accessibles. Ensuite, il faut créer une image ISO, c'est à dire un fichier qui va représenter exactement la piste de données telle qu'elle sera gravée ou presque (voir modes RAW et COOKED, pour une explication sur les codes correcteurs d'erreurs). L'image va occuper un peu plus de place que tous les fichiers réunis, c'est à dire pour 600 megs de fichiers compter 605 megs par exemple. Ensuite cette image est transférée au graveur, qui l'écrit sur le CD. Ensuite le CD doit être finalisé. PISTES AUDIO Les pistes audio sont en 16 bits, 44 KHz stereo. Elles sont stockées comme un fichier WAV, mais sans en-tête. Pour graver des pistes audio, il faut en général commencer par les enregistrer (au format WAV par exemple, depuis le micro de la carte son ou de préférence un CD avec un programme d'extraction digitale - voir modes COOKED et RAW) puis les graver avec un logiciel quelconque. Après avoir gravé les pistes on finaliste le CD. Tant que le CD n'est pas finalisé on ne peut le lire sur une platine HIFI, mais une fois qu'il est finalisé on ne peut plus ajouter de nouvelles pistes. On peut donc enregistrer une piste d'un CD, puis plus tard une autre etc. et une fois le CD complet on le finalise et là, on pourra le lire sur un lecteur normal. CD DATA+AUDIO Beaucoup de CD de jeux comportent une piste de données et des musiques. Sur une platine, la piste 1 apparaît soit silencieuse soit faire un bruit horrible : c'est la piste de données. Pour graver un tel CD, c'est très simple : on grave l'image ISO sur la piste 1 et les fichiers son sur les suivantes, 1 par piste. Autre méthode : on grave d'abord toutes les pistes audio sur une première session puis la piste de données sur une deuxième session (voir MULTISESSION). Cela marche en général car une platine audio est censée ne reconnaître que le première session (celle avec les pistes audio) et un lecteur CDROM est censé commencer par lire la dernière session (avec les données), ce qui ne lui interdit pas de lire les sessions précédentes. MULTISESSION (informations à confirmer, mais les idées sont là) On peut graver un CD en plusieurs fois... Le principe est le suivant. Au début (?) d'une session (?), il y a éventuellement un pointeur qui indique ou se trouve la prochaine session. Sur un CD monosession, gravé en une seule fois, il n'y a pas de tel pointeur ou alors il ne pointe nulle part. Sur un CD multisession, ce pointeur indique la prochaine zone non encore gravée du CD. Et plus tard lorsqu'on mettra les sessions suivantes, le lecteur ira directement à la dernière session gravée et ne prendra en compte que la dernière FAT rencontrée pour une piste de données. Ceci explique plusieurs choses : certains lecteurs refusent de lire les CD multisessions même si ils ne comportent qu'une seule session. En effet ils trouvent le pointeur vers la session suivante mais cette session n'existe pas ce qui les trouble profondément ;) Ensuite pour faire un CD multisession il faut "importer" les sessions précédentes, car ne sera prise en compte que la dernière FAT gravée, donc il faut que cette FAT fasse référence aux fichiers des sessions précédentes si on veut pouvoir les lire. Ceci permet de faire comme si on avait effacé des fichiers, en ne les indiquant pas dans les sessions suivantes. Enfin, on parle parfois de "fermer le CD" : cela veut dire que la dernière session ne pointera pas sur une éventuelle future session suivante et on ne pourra plus rien ajouter au CD. Ce qui est différent de la finalisation! La finalisation termine une session, fermer le CD... termine le CD. Notez qu'une session même vide occupe une 30aine de Megaoctets. MODE COOKED, MODE RAW - CODES CORRECTEURS D'ERREURS Physiquement, le CD est divisé en secteurs de 2352 octets. Sur une piste de données, ces secteurs contiennent 2048 octets de données, et le reste est consitué de codes de correction d'erreurs. En effet, aussi bien le graveur lorsqu'il écrit un CD qu'un lecteur quand il le lit peuvent commettre des erreurs. Dans le cas d'une piste audio, si quelques bits sont défectueux par ci par là, cela n'a aucune importance car ces défauts sont imperceptibles par notre oreille. Mais pour une piste de données, le moindre bit lu incorrectement peut provoquer une erreur, un plantage... Aussi les codes correcteurs permettent de détecter et de corriger les erreurs éventuelles. Ainsi la taille d'un CD de 74 minutes est 650 mégaoctets (soit 680 millions à peu près) en données, mais si on gravait sans les codes on aurait près de 750 millions d'octets... Mais le CD présenterait toujours des défauts car même le meilleur des graveurs commet une quarantaine d'erreurs lors de la gravure. Les modes COOKED et RAW correspondent aux différentes façons de lire les secteurs : en mode COOKED (accessible sur tous les lecteurs), le lecteur lit le secteur et applique les codes correcteurs d'erreurs pour envoyer à l'interface un secteur corrigé de 2048 octets. En mode RAW (accessible sur quasiment tous les lecteurs SCSI et sur de plus en plus d'IDE), le lecteur lit un secteur de 2352 octets et n'applique pas les codes. Ceci permet de lire les pistes audio directement, sans passer par la carte son et donc sans perte de qualité sonore. DUMMY MODE - SIMULATION DE GRAVURE Un problème important au sujet de la gravure : le graveur tourne très régulièrement, et une fois qu'il a commencé à graver une piste, il ne doit être arrêté sous aucun prétexte, sous peine d'obtenir un CD inutilisable. (il est parfois possible de récupérer de tels CD mais il ne faut pas compter dessus...) De même, le programme de gravure doit être capable d'envoyer les données assez vite au graveur sinon celui ci s'arrête. Parfois si on a un disque dur trop lent, on doit réduire la vitesse de gravure, ou créer l'image ISO sur le disque avant de graver au lieu de graver directement (en gravure directe, le programme crée l'image ISO en temps réel et l'envoie petit à petit au graveur, mais si il y a beaucouop de petits fichiers par exemple, la création de l'image ISO peut ralentir suffisemment pour faire échouer la gravure!) Pour savoir si on pourra graver le CD ou pas, il existe avec tous les graveurs un mode de test, durant lequel la gravure a lieu comme "pour de vrai", à cela près que le laser est éteint. Donc rien n'est réellement écrit sur le disque. Il est recommander de toujours faire un test avant de réaliser l'écriture réelle, surtout lorsqu'on vient d'avoir son graveur ou qu'on vient de changer de disque dur, de mémoire... Afin d'éviter d'avoir à jeter pas mal de CD à la poubelle. Faites moi confiance ;) EN PRATIQUE - SOUS WINDOWS Avec un logiciel de gravure (Togo easy CD creator est assez populaire), il suffit de faire un glisser/déposer depuis l'explorateur vers une fenêtre "nouveau CD" pour ajouter des fichiers à un CD. Ensuite on clique sur "graver" et après quelques vérifications, c'est parti... De même pour un CD multisession il suffit de choisir "importer", et d'ajouter les nouveaux fichiers ou d'enlever ceux qu'on ne veut pas voir apparaître (voir MULTISESSION). Aucun problème a priori donc pour graver sous Windows. Quelques conseils cependant : désactivez l'économiseur d'écran, afin d'éviter qu'il ne se déclenche et vienne perturber la gravure. Désactivez aussi la carte réseau si vous êtes sur un réseau actif (si quelqu'un vient chercher des fichiers sur vos disques via le réseau pendant une gravure, n'espérez aucune coopération de windows...) Enfin, la gravure sous windows n'est pas automatisable. Si vraiment il est impossible de graver en vitesse maximale, essayez de créer une image ISO et de graver cette image au lieu de graver directement. Inconvénient : pour graver 600 megas de fichiers, il faut créer EN PLUS un image de 600 megas... EN PRATIQUE - SOUS UNIX Les différentes procédures pour lire un CD et le graver sont bien distinctes : ce n'est pas le même programme qui gère tout. Si vous voulez cependant quelquechose de simple, utilisez XCDROAST, sous xwindow. Ce programme rend la gravure aussi simple sous Unix que sous Windows, en plus fiable (pas besoin de désactiver le réseau ou je ne sais quoi...) Pour ceux qui veulent mettre les mains dans le cambouis, ou se passer de Xwindow: LIRE UNE PISTE DE DONNEES SOUS UNIX Sous Linux, avec un Kernel incluant les drivers SCSI de base + SCSI generic + SCSI removable il suffit de faire "dd if=/dev/scd0 of=/chemin/fichier bs=2048c". S'assurer évidemment qu'il y a assez de place sur /chemin. Si vous avez plusieurs lecteurs scsi, /dev/scd0 correspond au premier, /dev/scd1 au deuxième etc. Parfois on trouve /dev/sr0 et /dev/sr1. Le graveur compte comme un lecteur. Si vous voulez lire à partir d'un lecteur IDE, utilisez /dev/hdc (si votre lecteur est en master sur le 2ème contrôleur IDE). Cette méthode marche même pour copier des CD non ISO (mac, sun?...) CREER UNE IMAGE ISO PRETE A ETRE GRAVEE Il faut réunir tous les fichiers dans un répertoire, disons /moncd (on peut aussi utiliser des liens symboliques). Ensuite il faut utiliser le programme mkisofs ou mkhybrid. mkhybrid est recommandé pour créer des images lisibles sous win95/macintosh. La syntaxe est la suivante: mkhybrid -R -j -h -V "VolName" /moncd -o /chemin/iso le -R indique les extensions RockRidge (pour utiliser le CD sous unix avec les noms longs), -j = joliet (win95), -h = hfs (macintosh), et VolName est le "label" du CD, 11 caractères maximum, en évitant peut-être les espaces (j'ai eu une fois un problème pour lire un CD dont le label contenait un espace. sait-on jamais...) Compter entre dix et vingt minutes pour créer l'image. Il est recommandé de créer l'image sur un disque peu fragmenté et différent du disque qui stocke les fichiers (afin d'éviter des aller retour incessants des têtes de lecture du disque dur...) RECUPERER DES PISTES AUDIO Pour cela il faut cdda2wav. Ce programme inclut quelques fonctionnalités très sympathiques, comme la correction des scratches : lorsqu'on lit un CD très rayé, avec la plupart des lecteurs on obtient des craquements désagréables aux endroits des rayures. cdda2wav permet de corriger dans la mesure du possible ces erreurs... cependant je n'ai pas encore pu réaliser de tests comparatifs. Je recommande les lecteurs SCSI Plextor (12x et 12/20x) qui sont capables de lire TRES vite les pistes audio et produisent des fichiers exempts de scratches ou autres défauts... Si vous connaissez d'autres lecteurs de cette qualité, signalez les moi. En pratique, la syntaxe de cdda2wav est la suivante: cdda2wav -H -B ledzep -t3+6 -O wav -D /dev/sge -H lui demande de ne pas créer de fichiers .inf contenant des informations sur chaque piste comme sa durée, etc. ; -B active le mode "bulk" et place chaque piste dans un fichier séparé portant le nom ledzep_XX où XX est le numéro de piste ; -t3+6 indique piste 3 à piste 6 ; -O wav indique la création de fichiers wav (aussi disponible : raw, prêt à être gravé...), -D /dev/sge indique le périphérique scsi à utiliser. GRAVER UNE IMAGE Je ne connais pas la procédure avec cdwrite, j'utilise cdrecord. Et comme on ne change pas une équipe qui gagne, je n'ai pas le temps de tester cdwrite maintenant... Si quelqu'un a des informations je serai heureux de les ajouter ici. Donc pour graver un CD: cdrecord dev=2,0 /chemin/imageiso -audio /chemin/pistes_audio/track* en remplaçant le 2 par le numéro SCSI du graveur. Options diverses, à utiliser avant de spécifier les chemins des images : -dummy pour simuler la gravure, -speed x pour graver en vitesse x (ex: -speed 2 ou -speed 4). -eject fera éjecter le CD à la fin de la gravure. -v indiquera pendant la gravure le nombre de mégaoctets déjà gravés. NOTES CONCERNANT LES PISTES AUDIO Il faut parfois ajouter l'option -swab (SWAp Bytes) pour échanger les octets de poids fort et poids faible pour les pistes audio. En ce qui me concerne, je ne l'utilise pas pour graver des pistes récupérées au format RAW avec cdda2wav mais je l'utilise pour graver des WAV depuis le PC ou des fichiers PCM issus de l3dec. En cas d'utilisation incorrecte, la piste audio est inaudible et produit un bruit immonde. (gros bruit de souffle continu). D'autre part, le nombre de secteurs d'une piste audio devant être entier, si les tailles des pistes ne sont pas des multiples de 2352 octets, ajouter -pad pour que cdrecord allonge les pistes (l'allongement est ridicule: à peine 1/75ème de seconde). MULTISESSION SOUS UNIX Attention : pour l'instant la procédure est plutôt barbare. Les prochaines versions de cdrecord/cdwrite/mkisofs devraient simplifier le processus... Directement d'après les readme de cdrecord : tout d'abord toutes les sessions devront être gravée avec cdrecord avec l'option -multi. Lors de la gravure de la première session, noter le nombre de secteurs gravés. Ensuite il nous faut les informations suivantes: 1) le numéro du premier secteur de la dernière session gravée (donc juste après avoir gravé la permière session ce numéro est 0) 2) le numéro du prochain secteur disponible (à peu près le nombre de secteurs gravés plus 5000 , pour 10 mégas de temporisation entre les sessions). Pour obtenir ces informations : cdrecord dev=2,0 -msinfo cdrecord répondra deux nombres séparés par une virgule, exemple : 0,204562 ce sont les nombres que nous cherchons. Ensuite c'est là que ça devient lourd... Placer les fichiers à graver dans un répertoire appelé mettons "deuxieme" et placez ce répertoire dans un autre, "premier". Puis mkisofs -o deuxieme-image-iso -C x,y -M /dev/scd0 premier en mettant les deux nombres de tout à l'heure à la place de x et y, et avec le CD à compléter disponible dans /dev/scd0 (ou /dev/sr0... voir plus haut) Puis pour graver l'image : cdrecord dev=2,0 -v -speed 4 -eject -multi deuxieme-image-iso par exemple... Et ça y est. Un petit "ls" sur le CD ainsi complété fera apparaître les fichiers des sessions précédentes ainsi qu'un répertoire "deuxieme" contenant les fichiers qu'on y aura placé. Je suis conscient du fait que cette procédure est assez compliquée, mais hélas comme je manque de temps (et surtout que je ne me sers pas du multisession), je n'ai pas créé de batch pour la simplifier. Par contre j'ai une série de batches simples pour lire/écrire des CD, manipuler des images ISO... si cela vous intéresse demandez les moi par email. Des questions, des commentaires... Seront les bienvenus. skaya@mygale.org