Mini HOWTO Graveur de CDs Winfried Truemper, winni@xpilot.org, traduit par Olivier Tharan, tharan@int-evry.fr Version 1.9.8, 11 juillet 1997 Je (Winfried Truemper) rejette toute garantie concernant ce document, incluant toutes les garanties implicites de mise sur le marche et d'utilite pour un certain usage ; en aucun cas on ne pourra me tenir compte de dommages speciaux, indirects ou consecutifs a, ni d'aucun dommage quelqu'il soit resultant de la perte d'utilisation, de donnees ou de profits, que ce soit dans une action contractuelle, de negli- gence ou autre action, decoulant de ou en relation avec l'utilisation de ce document. EEnn ggrrooss,, lliisseezz eett uuttiilliisseezz aa vvooss pprroopprreess rriissqquueess.. 11.. IInnttrroodduuccttiioonn Ma premiere experience avec des graveurs de CDs a ete guidee par le "Linux CD Writer mini-HOWTO" de Matt Cutts, cutts@ms.uky.edu. Merci Matt ! Bien que mon intention n'etait que de mettre ce document a jour, je l'ai reecrit a partir du debut apres avoir realise combien tout avait change depuis 1994. 11..11.. LLeeccttuurreess ssuuggggeerreeeess La FAQ sur les CD-R a <http://www.cd-info.com/CDIC/Technology/CD- R/FAQ.html> est une FAQ generale portant sur les disques compacts enregistrables (CD-R). Le HOWTO CD-ROM Linux explique ce qu'on devrait savoir sur les lecteurs de CD-ROMs sous Linux. En supplement, vous pourrez jeter un coup d'oeil sur le HOWTO SCSI Linux et le HOWTO noyau Linux. 11..22.. TTeerrmmiinnoollooggiiee...... LLaasseerrss aauu mmaaxxiimmuumm...... FFeeuu !! _C_D_-_R_O_M veut dire ``Disque compact a memoire en lecture seule'' (Compact Disc Read Only Memory), un support de stockage utilisant un laser optique pour lire des trous microscopiques sur un disque brillant en argent. (La brillance argentee vient d'une couche aluminisee qui est le support.) Les trous representent les morceaux d'information (en quelque sorte) et sont si petits que des milliards d'entre eux tiennent sur le disque. Un CD est donc un support de stockage de masse. Le terme _C_D_-_R est une forme abregee de ``CD-ROM enregistrable'' (Recordable) et se rapporte au CD qui n'a pas ces trous microscopiques sur sa surface... Il est donc vide. A la place de la couche aluminisee (argentee) il possede un film special (colore) dans lequel des trous microscopiques peuvent y etre brules. Ceci est realise en donnant au laser, qui normalement ne fait que palper les trous, un peu plus de puissance pour qu'il brule les trous. Cette action ne peut se faire _q_u_'_u_n_e _s_e_u_l_e _f_o_i_s sur un CD-R. Vous pouvez toutefois laisser certaines parties vides pour une ecriture ulterieure, creant ce qu'on appelle un CD multi-sessions. Ce Mini HOWTO parle de la tache d'ecrire un CD-R. Bienvenue a bord, Capitaine. 11..33.. GGrraavveeuurrss ddee CCDD--RROOMM ssuuppppoorrtteess Les logiciels de gravage de CDs pour Linux supportent les graveurs de CD des fabricants suivants : Philips, IMS, Kodak, Yamaha, Hewlett- Packard ou les compatibles. La liste detaillee des modeles qu'on a vu fonctionner correctement (ou pas) est disponible a <http://www.shop.de/cgi-bin/winni/lsc.pl>. La liste sera incluse dans les versions futures de ce mini-HOWTO. Si votre materiel n'est pas supporte, vous pouvez toujours utiliser Linux pour creer une image du CD ulterieur, mais vous devrez alors utiliser un logiciel sous DOS pour ecrire l'image sur le CD-R. (Vous aurez envie de faire ceci parce que la plupart des logiciels DOS ne peuvent pas gerer les noms de fichiers longs disponibles avec Linux.) Dans ce cas, vous pouvez passer toutes les sections relatives au materiel (celles sur les peripheriques SCSI generiques et cdwrite). 11..44.. ````PPoossssiibbiilliitteess'''' ssuuppppoorrtteeeess En ce moment les logiciels pour graver des CDs sous Linux supportent les caracteristiques suivantes : cd-write-2.0 cdrecord-1.5 ------------------------------------------------------------- "Multisession" en partie oui "RockRidge" oui (mkisofs) oui (mkisofs) "El Torito" oui (mkisofs) oui (mkisofs) Veuillez consulter la documentation jointe a ces logiciels pour plus de details sur ces possibilites speciales. La section ``'' liste la disponibilite des logiciels mentionnes. 11..55.. LLiisstteess ddee ddiissttrriibbuuttiioonn Si vous voulez rejoindre l'equipe de developpement (avec l'intention de les _a_i_d_e_r activement), envoyez un courrier electronique a cdwrite-request@pixar.com et mettez la commande subscribe dans le corps du message. 11..66.. DDiissppoonniibbiilliittee La toute derniere version de ce document est toujours disponible a partir de <http://www.shop.de/~winni/linux/>. (NdT : en France, c'est a <http://www.freenix.fr/linux/>, mais la version peut ne pas etre la derniere en date.) 22.. PPrreeppaarreezz vvoottrree mmaacchhiinnee LLiinnuuxx ppoouurr ggrraavveerr ddeess CCDD--RROOMMss 22..11.. CCoonnffiigguurreezz llee mmaatteerriieell Eteignez votre ordinateur, et branchez le graveur de CDs sur le bus SCSI. Veuillez noter que les graveurs de CDs necessitent un controleur SCSI, l'interface standard EIDE de votre PC n'a pas la capacite de piloter ces graveurs. Assurez-vous que le bus SCSI est termine proprement et choisissez une ID SCSI libre pour le graveur. Regardez le HOWTO SCSI si vous n'etes pas sur. Si vous etes completement depasse, demandez a un expert. Remettez le courant et regardez les messages que le BIOS du controleur SCSI affiche immediatement apres l'allumage de l'ordinateur. S'il ne reconnait pas votre graveur, revenez a l'etape precedente. Vous devriez voir un message comme celui-ci : (Image manquante ; quelqu'un en a-t-il une copie d'ecran ?) 22..22.. NNoottee ssuurr llee ggrraavvaaggee ddee CCDDss ssoouuss LLiinnuuxx Au contraire d'autres rumeurs, le noyau Linux _n_'_a _p_a_s besoin de patch pour ecrire sur des CDs. Bien que le fichier drivers/scsi/scsi.c des sources du noyau contienne les lignes case TYPE_WORM: case TYPE_ROM: SDpnt->writeable = 0; ceci veut seulement dire que ces CDs et WORMs ne sont pas accessibles en ecriture a travers les peripheriques standards /dev/sda - /dev/sdh ce qui est normal. Au lieu d'utiliser ces peripheriques, l'ecriture de CDs est faite a travers les peripheriques SCSI generiques qui permettent presque tout -- meme l'ecriture sur les CDs. 22..33.. CCrreeeezz lleess ppeerriipphheerriiqquueess ggeenneerriiqquueess Le HOWTO SCSI Linux dit a propos des peripheriques SCSI generiques : Le pilote de peripherique SCSI generique fournit une interface pour envoyer des commandes SCSI a tous les peripheriques SCSI -- disques, bandes, CDROMs, mecanismes de changement de support, etc. Parler des peripheriques generiques en tant qu'interfaces veut dire qu'ils fournissent une maniere differente d'acceder au materiel SCSI par rapport aux peripheriques normaux. Cette maniere detournee est obligatoire parce que les peripheriques normaux sont faits pour lire des donnees a l'echelle du block a partir d'un disque, d'un lecteur de bandes ou d'un lecteur de CD-ROM. D'un autre cote, piloter un graveur de CD-ROM (ou un scanner) est plus exotique, par exemple on doit positionner le laser. Pour avoir des peripheriques normaux ``propres'', toutes ces actions exotiques doivent (peuvent) etre realisees a travers les peripheriques SCSI generiques. Puisque l'on peut tout faire au materiel SCSI a travers les peripheriques generiques, ils ne sont pas limites a un usage -- d'ou le nom ``generique''. (Note : s'il y avait une norme pour piloter les graveur de CDs, les developpeurs du noyau auraient programme un module du noyau pour ecrire sur les CD-R et nous ne serions pas obliges d'utiliser les peripheriques generiques. Mais comme chaque fabricant a besoin d'un pilote individuel pour son materiel (argh !), ce module du noyau deviendrait maladroit et plus gros que tout ce que vous voulez mettre dans votre noyau.) Deplacez-vous dans le repertoire /dev et verifiez les peripheriques SCSI generiques ; la commande ls devrait montrer sga - sgh : bash> cd /dev bash> ls -l sg* crw------- 1 root sys 21, 0 Jan 1 1970 sga crw------- 1 root sys 21, 1 Jan 1 1970 sgb crw------- 1 root sys 21, 2 Jan 1 1970 sgc crw------- 1 root sys 21, 3 Jan 1 1970 sgd crw------- 1 root sys 21, 4 Jan 1 1970 sge crw------- 1 root sys 21, 5 Jan 1 1970 sgf crw------- 1 root sys 21, 6 Jan 1 1970 sgg crw------- 1 root sys 21, 7 Jan 1 1970 sgh Si vous n'avez pas ces fichiers de peripheriques, creez-les en utilisant le script /dev/MAKEDEV : bash> cd /dev/ bash> ./MAKEDEV sg Maintenant les fichiers de peripheriques devraient etre corrects. 22..44.. EEttaabblliisssseezz ll''uuttiilliissaattiioonn ddeess ppeerriipphheerriiqquueess ````SSCCSSII ggeenneerriiqquuee'''' eett llooooppbbaacckk Le noyau Linux necessite un module qui lui donne la possibilite de gerer les peripheriques SCSI generiques. Si votre noyau courant a cette aptitude, elle devrait etre listee dans le pseudo-fichier /proc/devices : bash> cat /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 ttyp 5 cua 7 vcs 21 sg <---------- veut dire "peripherique SCSI 30 socksys generique" Block devices: 2 fd 7 loop <---------- on peut meme utiliser le 8 sd loopback 11 sr <---------- veut dire "CD-ROM SCSI" Vous devrez peut-etre taper la commande insmod sg, insmod loop ou insmod sr_mod pour charger le module dans le noyau. Re-verifiez apres avoir essaye ceci. Si l'une d'entre elle ne fonctionne pas, vous devez reconfigurer votre noyau et le compiler. bash$ cd /usr/src/linux bash$ make config [..] * * Additional Block Devices * Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] M [..] * * SCSI support * SCSI support (CONFIG_SCSI) [Y/m/n/?] * * SCSI support type (disk, tape, CD-ROM) * SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] Y SCSI tape support (CONFIG_CHR_DEV_ST) [M/n/y/?] M SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [M/n/y/?] M SCSI generic support (CONFIG_CHR_DEV_SG) [M/n/y/?] M [..] ISO9660 cdrom filesystem (CONFIG_ISO9660_FS) [Y/m/n/?] M Veuillez noter que j'ai omis les questions un peu moins importantes. 22..55.. CCoonnssttrruuiirree eett iinnssttaalllleerr llee nnooyyaauu Si vous avez des questions concernant ceci, la lecture suggeree est le HOWTO Noyau Linux. De plus, votre distribution Linux devrait contenir de la documentation sur ce probleme. (Astuce : pendant la recompilation, vous pouvez continuer sur les etapes ``'' et au-dela) 22..66.. RReeddeemmaarrrreerr ll''oorrddiinnaatteeuurr ppoouurr aammoorrcceerr llee cchhaannggeemmeenntt Ne paniquez pas si le noyau Linux affiche les messages plus rapidement que vous ne pouvez les lire, au moins l'initialisation des peripheriques SCSI peut etre reaffichee avec la commande dmesg : scsi0 : NCR53c{7,8}xx (rel 17) scsi : 1 host. scsi0 : target 0 accepting period 100ns offset 8 10.00MHz scsi0 : setting target 0 to period 100ns offset 8 10.00MHz Vendor: FUJITSU Model: M1606S-512 Rev: 6226 Type: Direct-Access ANSI SCSI Detected scsi disk sda at scsi0, channel 0, id 0, lun 0 Vendor: NEC Model: CD-ROM DRIVE:84 Rev: 1.0a Type: CD-ROM ANSI SCSI Detected scsi CD-ROM sr0 at scsi0, channel 0, id 4, lun 0 scsi : detected 1 SCSI disk total. SCSI device sda: hdwr sector= 512 bytes. Sectors= 2131992 On a montre ci-dessus uniquement la partie des messages d'initialisation qui rapportent la detection des peripheriques SCSI presents physiquement. 22..77.. CCrreeaattiioonn ddeess ppeerriipphheerriiqquueess llooooppbbaacckk Deplacez-vous dans le repertoire /dev et verifiez les peripheriques loopback. Ce n'est pas grave si vous n'avez pas ces peripheriques, mais c'est pratique si vous les avez (Voir la section ``''). Si vous les avez deja, la commande ls devrait montrer loop0 - loop7 : bash$ cd /dev bash$ ls -l loop* brw-rw---- 1 root disk 7, 0 Sep 23 17:15 loop0 brw-rw---- 1 root disk 7, 1 Sep 23 17:15 loop1 brw-rw---- 1 root disk 7, 2 Sep 23 17:15 loop2 brw-rw---- 1 root disk 7, 3 Sep 23 17:15 loop3 brw-rw---- 1 root disk 7, 4 Sep 23 17:15 loop4 brw-rw---- 1 root disk 7, 5 Sep 23 17:15 loop5 brw-rw---- 1 root disk 7, 6 Sep 23 17:15 loop6 brw-rw---- 1 root disk 7, 7 Sep 23 17:15 loop7 Si vous n'avez pas ces fichiers de peripheriques, creez-les en utilisant le script /dev/MAKEDEV : bash> cd /dev/ bash> ./MAKEDEV loop La derniere commande ne reussit que si vous avez le module loop dans votre noyau (voir la section ``'' pour la manipulation des modules). Si insmod loop ne donne rien, vous devez attendre que le nouveau noyau soit correctement installe (voir ``''. 22..88.. OObbtteenneezz llee llooggiicciieell ppoouurr ggrraavveerr lleess CCDDss 22..88..11.. UUttiilliittaaiirreess eenn lliiggnnee ddee ccoommmmaannddee Le paquetage suivant est obligatoire pour generer des maquettes de CD- R : ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/mkisofs-1.11.tar.gz Selon le modele de votre graveur de CDs (voir ``''), l'un des logiciels suivants est necessaire pour ecrire les maquettes sur les CD-R : ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/cdwrite-2.0.tar.gz ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/cdrecord.tar.gz Veuillez utiliser les miroirs de ces serveurs FTP les plus proches ou chargez-les a partir d'un CD. Assurez-vous absolument que vous avez la version 2.0 ou superieure de cdwrite. Aucune version plus ancienne et surtout aucune version beta ne fonctionneront ! Ne croyez pas les pages de manuel du (vieil) mkisofs qui indique que vous avez besoin de la version 1.5 de cdwrite. La distribution Debian est fournie avec un patch pour la version 1.05 de mkisofs qui lui ajoute l'option -K (voir ``'') ; il est disponible sur ftp://ftp.debian.org/pub/debian/rex/source/misc/mkisofs_1.05-3.diff.gz Ce patch n'est necessaire que si vous voulez monter l'image du CD a travers le peripherique loopback (voir ``''). Une correction pour scsi.c (dans le noyau) a ete ecrite par Eric Youngdale pour rendre ce patch superflu et sera incluse dans la prochaine version stable du noyau Linux. 22..88..22.. UUnnee iinntteerrffaaccee uuttiilliissaatteeuurr ggrraapphhiiqquuee ((ooppttiioonnnneellllee)) X-CD-Roast est un programme de gravage de CDs fonctionnant entierement sous X, et succede a cdwtools-0.93. Il est disponible sur http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html En ce moment X-CD-Roast est base sur une version patchee de cdwrite-2.0 et possede par consequent les memes caracteristiques (voir ``''). Les versions futures pourraient etre basees sur le logiciel de remplacementcdrecord. 33.. EEccrriirree uunn CCDD ``Si en fumee tu te transformes, je ne cesserai de jouer pendant que tu te consumes.'' (L'empereur Neron en ecrivant ses propres CDs classiques) En general l'ecriture d'un CD se fait en deux etapes : +o recolter les logiciels desires et les empaqueter dans une image ISO 9660 avec mkisofs ; +o ecrire l'image ISO 9660 sur le CD enregistrable avec cdwrite ou cdrecord. Il est aussi possible de combiner les deux etapes en une avec un tube mais ceci n'est pas recommande parce que ce n'est pas fiable. Voir ci- dessous. 33..11.. DDeetteerrmmiinneezz aa qquueell ppeerriipphheerriiqquuee SSCCSSII ggeenneerriiqquuee llee ggrraavveeuurr eesstt aattttaacchhee ( Veuillez noter : la facon actuelle de nommage des peripheriques SCSI sous Linux est compliquee a souhait et pas assez fiable. Le fait que je la decrive ici en maints details ne devrait pas etre mal interprete comme la confirmation de cette etat de faits. ) Apres avoir suivi toutes les etapes du dernier chapitre, votre systeme devrait etre capable de gerer le gravage de CDs. Cette section peut etre utilisee comme preuve que tout fonctionne comme prevu. Lancez la commande dmesg. Elle devrait rapporter les messages du noyau Linux, avec ceux imprimes lors du demarrage (limitation : seulement les 200 derniers) et contient des informations sur le graveur de CDs connectes au bus SCSI. Exemple simple : Vendor: YAMAHA Model: CDR100 Rev: 1.11 Type: WORM ANSI SCSI revision: 02 Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0 Cette machine possede quatre peripheriques SCSI connectes (vous ne pouvez pas le voir donc je vous le dis), avec les ID SCSI allant de 0 a 3. Le graveur est le quatrieme peripherique SCSI physiquement present et doit donc etre connecte sur /dev/sgd (le quatrieme peripherique SCSI generique en comptant commence a a). Dans ce cas, la commande cdwrite --eject --device /dev/sgd ouvre le tiroir et est un test pour voir si tout fonctionne correctement. Un exemple plus complique : scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB) scsi1 : Adaptec 1542 scsi : 2 hosts. Vendor: HP Model: C4324/C4325 Rev: 1.20 Type: CD-ROM ANSI SCSI revision: 02 Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0 Vendor: IBM Model: DPES-31080 Rev: S31Q Type: Direct-Access ANSI SCSI revision: 02 Detected scsi disk sda at scsi1, channel 0, id 0, lun 0 scsi : detected 1 SCSI cdrom 1 SCSI disk total. SCSI device sda: hdwr sector= 512 bytes. Dans cet exemple deux controleurs SCSI hebergent un peripherique SCSI chacun. Quel gachis (ils sont capables d'heberger jusqu'a sept peripheriques chacun). Ce n'est pas ma configuration alors arretez de demander si j'ai trop d'argent... Cependant dans le but d'etre un exemple dont on peut se passer, cette configuration est excellente. :-) Dans l'exemple ci-dessus le graveur de CD a l'ID SCSI 2 mais elle est associee au premier peripherique SCSI generique /dev/sga parce que c'est le premier peripherique SCSI physiquement present que Linux a detecte. J'espere que ceci montre clairement que l'ID SCSI d'un peripherique n'a rien a voir avec le peripherique generique associe. Deux questions restent en suspens : qu'arrive-t-il si vous prenez le mauvais peripherique ? Si vous ne specifiez ni l'option --<MANUFACTURER> ni n'ecrivez de donnees sur le peripherique, en general un message d'avertissement est affiche et rien de plus : bash$ cdwrite --eject --device /dev/sgb Unknown CD-Writer; if this model is compatible with any supported type, please use the appropriate command line flag. Manufacturer: IBM Model: DPES-31080 Revision: S31Q Dans ce cas le peripherique /dev/sbg est un disque dur SCSI (d'IBM). Si vous ecrivez des donnees sur le mauvais peripherique, vous en ecrasez le contenu d'origine et endommagerez votre systeme de facon probablement irremediable. Faites attention, cela m'est deja arrive par accident. 33..22.. RRaasssseemmbblleerr lleess llooggiicciieellss En general cela prend plus de temps qu'on ne le croit ; Rappelez-vous que les fichiers manquants ne peuvent pas etre ajoutes une fois que le CD est ecrit. :-) Gardez aussi a l'esprit qu'un certain montant de l'espace libre d'un CD est utilise pour stocker les informations sur le systeme de fichiers ISO 9660 (en general quelques Mo). 33..33.. SSttoocckkeerr lleess ddoonnnneeeess ssuurr uunn CCDD Le terme _I_S_O _9_6_6_0 se rapporte au format dans lequel les donnees sont stockees sur le CD, pour etre plus precis : c'est le systeme de fichiers sur le CD. Bien sur, l'apparence des fichiers stockes dans ce format est unifie par le noyau Linux comme pour tout autre systeme de fichiers. Si vous montez un CD dans l'arborescence des repertoires, vous ne pouvez pas distinguer son contenu des autres fichiers... a part le fait qu'on ne peut ecrire dessus... meme pas pour root. :-) (Le mecanisme utilise pour unifier l'apparence des fichiers est appele _s_y_s_t_e_m_e _d_e _f_i_c_h_i_e_r_s _v_i_r_t_u_e_l, en abrege _V_F_S. Les possibilites de ISO 9660 ne sont pas si riches comparees a celles du systeme de fichiers ext-2 qui est normalement utilise sous Linux. Par contre, le CD n'est inscriptible qu'une seule fois et certaines possibilites n'ont meme pas de sens. Les limitations du systeme de fichiers ISO 9660 sont : +o uniquement huit niveaux de sous-repertoires autorises (comptes a partir du repertoire racine du CD) (utilisez les extensions RockRidge pour augmenter ce chiffre) ; +o longueur maximale des noms de fichiers : 32 caracteres ; +o capacite de 650 Mo. 33..44.. CCrreeeerr uunn ssyysstteemmee ddee ffiicchhiieerrss IISSOO 99666600 Avant de pouvoir utiliser un support de stockage (par exemple une disquette, un disque dur ou un CD), il doit avoir un systeme de fichiers (en langage DOS : etre formate). Ce systeme de fichiers est responsable de l'organisation et de l'incorporation des fichiers qui devraient etre stockes sur le support. Bon, un CD inscriptible ne l'est _q_u_'_u_n_e _f_o_i_s et donc si nous y ecrivons un systeme de fichiers vide, il serait formate -- mais resterait pour l'eternite completement vide. :-) Nous avons donc besoin d'un outil qui cree le systeme de fichiers en meme temps qu'il copie les fichiers sur le CD. Cet outil s'appelle mkisofs. Une utilisation simple ressemble a ceci : mkisofs -r -K -o cd_image collection_privee/ `---------' `----------------' | | ecrire la sortie vers prendre repertoire comme entree L'option -r positionne les permissions de tous les fichiers pour etre lisibles publiquement sur le CD et permet les extensions Rock Ridge. C'est ce qu'on veut en general et l'utilisation de cette option est recommandee jusqu'a ce que vous sachiez ce que vous faites. (Astuce : sans le -r, le point de montage prend les permissions de collection_privee !) L'option -K corrige simplement une erreur dans l'implementation Linux et empeche le dernier fichier du CD d'etre detruit (pas vraiment, mais Linux ne peut pas le lire). Vous avez besoin de la version patchee de mkisofs pour cela. Cette option est equivalente a l'option -P de cdwrite. Veuillez regarder la page de manuel de mkisofs pour plus de details. mkisofs essaiera de convertir tous les noms de fichiers au format 8.3 utilise par DOS pour assurer une compatibilite maximale. En cas de conflits de noms (des fichiers differents qui auraient le meme nom 8.3), des numeros sont utilises dans les noms de fichiers et les informations sur le nom de fichier choisi sont imprimees sur l'erreur standard (en general l'ecran). NNee ppaanniiqquueezz ppaass :: sous Linux, vous ne verrez jamais ces noms de fichiers 8.3 parce que Linux utilise les extensions Rock Ridge qui contiennent les informations d'origine du fichier (permissions, nom de fichier, etc.) Maintenant vous pouvez vous demander pourquoi la sortie de mkisofs n'est pas envoyee directement au peripherique de gravage. Ceci est du a deux raisons : +o mkisofs ne connait rien sur la maniere de piloter les graveurs de CD (voir la section ``'') ; +o On ne peut pas compter sur cette methode (voir ``''). La synchronisation d'un graveur de CD est un point tellement critique que nous ne le remplissons pas directement avec mkisofs (rappelez-vous que Linux n'est pas un systeme d'exploitation en temps reel et que les taches peuvent etre mal temporisees). A la place, il est recommande de stocker la sortie de mkisofs dans un fichier separe sur le disque dur. Ce fichier est alors une image parfaite du CD a venir et est en fait ecrite sur le CD avec l'outil cdwrite dans un deuxieme temps. L'image parfaite est stockee dans un fichier enorme, et vous avez donc besoin de la meme quantite d'espace disque libre que ce que prennent vos logiciels rassembles. C'est le probleme. On pourrait penser a creer une partition supplementaire pour cela et ecrire l'image sur cette partition plutot que dans un fichier. Je suis contre cette strategie parce que si vous ecrivez sur la mauvaise partition (a cause d'une faute de frappe), vous pouvez perdre votre systeme Linux en entier. De plus, c'est du gachis d'espace disque parce que l'image du CD represente des donnees temporaires que l'on pourra effacer apres avoir grave le CD. 33..55.. TTeesstteerr ll''iimmaaggee CCDD Linux a la possibilite de monter des fichiers comme si c'etait des partitions de disques. Ceci est tres utile pour verifier si la structure des rerpertoires de l'image du CD est bonne. Pour monter le fichier cd_image cree ci-dessus dans le repertoire /cdrom, envoyez la commande mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom Vous pouvez maintenant inspecter les fichiers sous /cdrom -- ils apparaissent exactement comme ils le seraient sur un _v_r_a_i CD. Pour demonter l'image CD, tapez simplement umount /cdrom. Attention : si vous n'avez pas utilise l'option -K avec mkisofs, le dernier fichier sur /cdrom peut ne pas etre entierement lisible. Note : certaines versions anciennes de mount ne savent pas manipuler les peripheriques _l_o_o_p_b_a_c_k. Si vous avez une version de mount si vieille que ca, c'est une indication pour mettre votre systeme Linux a jour. Plusieurs personnes m'ont deja suggere de mettre des informations sur la maniere d'obtenir les dernieres versions de mount dans ce mini- HOWTO. Je refuse toujours de le faire. Si votre distribution Linux contient un vieux mount, dites-leur que c'est une erreur. Si votre distribution Linux se met a jour difficilement, dites-leur que c'est une erreur. Si je devais donner toutes les informations necessaires pour contourner les erreurs des distributions Linux mal faites, ce mini- HOWTO serait beaucoup plus gros et dur a lire. 33..66.. RReemmaarrqquueess ssuurr lleess ddiissqquueess CCDD RReeiinnssccrriippttiibblleess vviieerrggeess Le magazine informatique allemand cc''tt donne une liste de trucs concernant les CD vierges dans leur numero de novembre 1996 : +o les disques ``sans-noms'' ne sont en general pas de la plus grande qualite et il vaut mieux ne pas les utiliser ; +o si un CD reinscriptible est defectueux, il y a des chances que ca soit la meme chose pour le paquet entier (vous en avez achete plus d'un a la fois) ; vous avez peut-etre de la chance et pouvez au moins utiliser les 500 premiers Mo de tels CDs... +o ne touchez pas les CD sur leur face brillante avant l'ecriture. 33..77.. EEccrriivveezz ll''iimmaaggee dduu CCDD ssuurr uunn CCDD Plus grand chose a faire. Avant de vous montrer la derniere commande, laissez-moi vous avertir que les graveurs de CDs doivent etre alimentes par un flot continu de donnees parce qu'ils n'ont que de petits caches de donnees. Le processus d'ecriture de l'image CD sur le CD ne doit donc pas etre interrompue ou bien le resultat est un CD corrompu. Pour etre sur que rien ne vient interrompre le processus, virez tous les utilisateurs de votre systeme et debranchez le cable Ethernet... Lisez le ``Bastard Operator From Hell'' pour en apprendre sur la bonne attitude a adopter. ;-) Si vous etes pret mentalement, mettez une blouse noire, multipliez l'ID SCSI du graveur de CD par son numero de version et allumez autant de bougies, recitez deux strophes de la FAQ ASR et finalement tapez : cdwrite --device /dev/sgd cd_image ou bien cdrecord -v speed=2 dev=4,0 cd_image selon le logiciel que vous voulez utiliser. Vous devez bien sur remplacer le peripherique d'exemple par le peripherique SCSI auquel votre graveur de CD est connecte. Veuillez noter qu'autant graveur ne peut repositionner son laser et continuer au point ou il a ete derange. Par consequent toute vibration forte ou meme un choc detruira completement le CD que vous etes en train de graver. 33..88.. SSii qquueellqquuee cchhoossee vvaa mmaall...... dessous de bouteilles. :-) 44.. QQuueessttiioonnss ffrreeqquueemmmmeenntt ppoosseeeess,, aavveecc lleess rreeppoonnsseess 44..11.. ````AA qquueell ppooiinntt llee pprroocceessssuuss ddee bbrruulluurree eesstt--iill sseennssiibbllee ??'''' Reponse : cela depend de votre graveur. Les graveurs modernes devraient avoir un tampon de donnees de 1 Mo a peu pres et peuvent tenir une a deux secondes sans donnees. Voyez les manuels ou demandez au fabricant si vous voulez connaitre les details. Independamment de la taille de ces tampons, vous devez garantir un debit constant de 300 Ko/s ou 600 Ko/s sur une longue periode. Les processus qui utilisent beaucoup le disque, comme la mise a jour de la base de donnees ``locate'' diminuent le debit maximum et abimeront certainement le CD ; vous feriez mieux de verifier que de tels processus ne sont pas demarres par cron, at ou anacron pendant que vous gravez des CD-Rs. Par contre, certaines personnes m'ont dit qu'elles avaient compile un noyau pendant le gravage d'un CD sans aucun probleme. Vous aurez bien sur besoin d'une machine rapide pour de telles experiences. 44..22.. ````LLaa ffrraaggmmeennttaattiioonn aa--tt--eellllee ddeess mmaauuvvaaiiss eeffffeettss ssuurr llee fflloott ??'''' La fragmentation est en general tellement basse qu'on ne remarque pas son impact. Si vous n'en etes pas certain, regardez les messages imprimes lors du demarrage, le pourcentage de fragmentation est donne los de la verification du systeme de fichiers. Vous pouvez verifier cette valeur avec la commande tres dangereuse bash$ e2fsck -n /dev/sda5 # '-n' est important ! [partie effacee -- ignorez toute erreur] /dev/sda5: 73/12288 files (12.3% non-contiguous) Dans cet exemple, la fragmentation semble etre tres grande -- mais il n'y a que 73 fichiers tres petits sur ce systeme de fichiers (utilise sur /tmp) et la valeur _n_'_e_s_t _p_a_s alarmante. 44..33.. ````EEsstt--iill ppoossssiibbllee ddee ssttoocckkeerr ll''iimmaaggee CCDD ssuurr uunn ssyysstteemmee ddee ffiicchhiieerr UUMMSSDDOOSS ??'''' Oui. Le seul systeme de fichiers ni assez fiable ni assez rapide pour graver des CD est NFS (_N_e_t_w_o_r_k _F_i_l_e_S_y_s_t_e_m, systeme de fichiers par le reseau). J'utilise moi-meme UMSDOS pour partager l'espace disque entre Linux et DOS/Win sur un PC (486/66) dedie au gravage des CDs. 44..44.. ````YY aa--tt--iill uunn mmooyyeenn ddee ppaasssseerr oouuttrree lleess lliimmiittaattiioonnss ddee IISSOO 99666600 ??'''' Oui. Vous pouvez mettre le systeme de fichiers qui vous plait sur le CD. Mais certains systemes d'exploitation ne pourront rien en faire. Voici la recette : +o creez un fichier vide d'une taille de 650 Mo : dd if=/dev/zero of="fic_vide" bs=1024k count=650 +o creez un systeme de fichiers ext2 sur ce fichier : bash$ /sbin/mke2fs fic_vide fic_vide is not a block special device. Proceed anyway? (y,n) y (NdT : mke2fs demande confirmation de creer le systeme de fichiers sur un fichier normal.) ; +o montez ce fichier vide a l'aide du peripherique _l_o_o_p_b_a_c_k : mount -t ext2 -o loop=/dev/loop1 fic_vide /mnt +o copiez les fichiers vers /mnt et demontez-le apres (umount) ; +o utilisez cdwrite ou cdrecord sur fic_vide (qui n'est plus vide) comme si c'etait une image ISO 9660. Si vous voulez creer une entree dans /etc/fstab pour un tel CD, desactivez sa verification, par exemple : /dev/cdrom /cdrom ext2 defaults,ro 0 0 Le premier 0 veut dire "ne me compte pas dans les dumps", la deuxieme (importante) veut dire "ne verifie pas les erreurs au demarrage" (fsck n'arrivera pas a verifier les erreurs eventuelles sur le CD). 44..55.. ````CCoommmmeenntt lliirree eett eeccrriirree ddeess CCDDss aauuddiioo ??'''' Veuillez prendre les paquetages cdda2wav et sox, disponibles sur sunsite et ses miroirs : ftp://sunsite.unc.edu/pub/Linux/apps/sound/cds/cdda2wav0.71.src.tar.gz ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb2.tar.gz cdda2wav vous permet de prendre un intervalle specifique (ou une plage entiere) de votre CD audio et le convertit en un fichier .wav. sox convertit les fichiers wav dans le format cdda (CD audio) pour qu'on puisse l'ecrire sur le CD-R avec cdwrite. 44..66.. ````CCoommmmeenntt rreecchheerrcchheerr ddeess ppeerriipphheerriiqquueess SSCCSSII aapprreess llee ddeemmaarrrraaggee ??'''' Le fichier drivers/scsi/scsi.c contient les informations suivantes (NdT : traduites en francais) : ______________________________________________________________________ /* * Utilisation : echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi * avec "0 1 2 3" remplaces par vos "Carte Canal Id Lun". * Considerez ceci comme une caracteristique BETA. * ATTENTION : Ceci n'est pas fait pour brancher vos * peripheriques a chaud. Comme le SCSI n'a pas ete fait * pour ca, vous pouvez endommager votre materiel ! * Cependant il est peut-etre autorise d'allumer un * peripherique deja branche. Il n'est peut-etre pas garanti * que ce peripherique ne corrompe pas un transfert de donnees * en cours. */ ______________________________________________________________________ 44..77.. ````EEsstt--iill ppoossssiibbllee ddee ffaaiirree uunnee ccooppiiee eexxaaccttee dd''uunn CCDD ddee ddoonnnneeeess ??'''' Oui. Mais vous devriez etre conscient du fait que toute erreur faite en lisant l'original (due a la poussiere ou a des rayures) donnera une copie defectueuse. Premier cas : vous avez un graveur de CDs et un lecteur de CD-ROM separe. En tapant la commande : cdwrite -v -D /dev/sgc --pad -b `isosize /dev/scd0` /dev/scd0 ou cdrecord -v dev=3,0 speed=2 -isosize /dev/scd0 vous lisez le flot de donnees du lecteur de CD-ROM attache a /dev/scd0 et l'ecrivez directement sur le graveur par /dev/sgc. Deuxieme cas : vous n'avez pas de lecteur de CD-ROM separe. Vous devez utiliser le graveur pour lire le CD-ROM comme ceci : dd if=/dev/scd0 of=cdimage bs=1c count=`isosize /dev/scd0` Cette commande est equivalente au resultat de mkisofs, vous devez continuer tel que c'est decrit a la section ``''. Veuillez noter que cette methode ne fonctionnera pas sur des CDs audio ! 44..88.. ````LLiinnuuxx ppeeuutt--iill lliirree ddeess CCDDss JJoolliieett ??'''' Oui. Mais vous devez patcher le noyau et le recompiler. Pour plus de details, voyez <http://www- plateau.cs.berkeley.edu/people/chaffee/joliet.html>. 44..99.. ````CCoommmmeenntt ppuuiiss--jjee lliirree//mmoonntteerr ddeess CCDD--RROOMMss aavveecc llee ggrraavveeuurr ddee CCDDss ??'''' Comme vous le feriez avec un lecteur de CD-ROM normal. Aucune astuce la-dessous. Notez que vous devez utiliser les peripheriques scd (CD-ROM SCSI) pour monter les CDs en lecture. Voici un exemple pour /etc/fstab : /dev/scd0 /cdrom iso9660 ro,user,noauto 0 0 55.. DDeeppaannnnaaggee 55..11.. CCaa nnee mmaarrcchhee ppaass :: ssoouuss LLiinnuuxx Veuillez d'abord verifier que le graveur fonctionne avec un autre systeme d'exploitation. Concretement : +o Est-ce que le controleur reconnait le graveur comme un peripherique SCSI ? +o Est-ce que le logiciel pilote reconnait le graveur ? +o Est-il possible de fabriquer un CD avec les logiciels fournis ? 55..22.. CCaa nnee mmaarrcchhee ppaass :: ssoouuss DDOOSS eett aassssiimmiilleess Essayez d'utiliser Linux. L'installation et la configuration des pilotes SCSI pour DOS est une horreur. Linux est trop complique ? Ha ! 55..33.. EErrrreeuurrss SSCCSSII ppeennddaanntt llaa pphhaassee ddee ggrraavvaaggee Il est fort probable que ces erreurs soient dues a : +o possibilite de _d_i_s_c_o_n_n_e_c_t_/_r_e_c_o_n_n_e_c_t manquant sur le bus SCSI ; +o materiel pas assez refroidi ; +o materiel defectueux (devrait etre detecte par ``''). Sous des circonstances variees, les peripheriques SCSI se deconnectent et se reconnectent par eux-memes (de maniere electronique) du bus SCSI. Si cette possibilite n'est pas disponible (verifiez le controleur et les parametres du noyau), certains graveurs ont des problemes pendant le gravage ou le fixage du CD-R. En particulier, le pilote SCSI NCR 53c7,8xx a cette possibilite desactivee par defaut, et vous devriez donc verifier ceci en premier : NCR53c7,8xx SCSI support [N/y/m/?] y always negotiate synchronous transfers [N/y/?] (NEW) n allow FAST-SCSI [10MHz] [N/y/?] (NEW) y allow DISCONNECT [N/y/?] (NEW) y 66.. RReemmeerrcciieemmeennttss Andreas Erdmann, erdmann@zpr.uni-koeln.de, a fourni l'exemple du graveur Yamaha ; Art Stone, stone@math.ubc.ca, a eu l'idee de mettre des systemes de fichiers non ISO 9660 sur un CD ; Bernhard Gubanka, beg@ipp-garching.mpg.de, a remarque le besoin d'une version recente de mount pour utiliser le peripherique loopback ; Brian H. Toby a fignole l'orthographe ; Bruce Perens, bruce@pixar.com, a donne des informations sur la liste de distribution cdwrite ; Edwin H. Kribbs a remarque que -K necessite de patcher mkisofs ; Gerald C Snyder, gcsnyd@loop.com, a teste l'ecriture d'un CD-ROM ext-2 (voir ``'') ; Ingo Fischenisch, ingo@mi.uni-koeln.de, a fourni l'exemple des deux controleurs hebergeant deux peripheriques ; Janne Himanka, shem@oyt.oulu.fi, pointeur vers le patch du noyau pour lire des CDs Joliet ; Joerg Schilling, schilling@fokus.gmd.de, informations sur cdrecord ; Jos van Geffen, jos@tnj.phys.tue.nl, a note le probleme dans ``'' ; Markus Dickebohm, m.dickebohm@uni-koeln.de ; Pierre Pfister, pp@uplift.fr, a aide a developper la recette des copies exactes ; Rick Cochran, rick@msc.cornell.edu, indice sur dis-/reconnect desactive par defaut dans le pilote NCR ; Stephan Noy, stnoy@mi.uni-koeln.de, des informations et son experience sur l'ecriture de CDs audio ; Stephen Harris, sweh@mpn.com, a donne des indices sur l'ecriture des CDs audio ; The Sheepy One, kero@escape.com, a suggere l'utilisation des CD rates en dessous de bouteilles ; Volker Kulhmann, kuhlmav@elec.canterbury.ac.nz, a remarque que le paquetage cdwrite ne contient pas mkisofs.