HOWTO Graveur de CDs Winfried Truemper, <winni@xpilot.org>, traduit par Olivier Tharan, <tharan@int-evry.fr> Version 2.4.1, 16 decembre 1997 Ce document parle du processus de gravage de CDs sous Linux. 11.. IInnttrroodduuccttiioonn Ma premiere experience avec des graveurs de CDs a ete guidee par le "Linux CD Writer mini-HOWTO" de Matt Cutts <cutts@cs.unc.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.. AAvveerrttiisssseemmeenntt JJee ((WWiinnffrriieedd TTrruueemmppeerr)) rreejjeettttee ttoouuttee ggaarraannttiiee ccoonncceerrnnaanntt ccee ddooccuummeenntt,, iinncclluuaanntt ttoouutteess lleess ggaarraannttiieess iimmpplliicciitteess ddee mmiissee ssuurr llee mmaarrcchhee eett dd''uuttiilliittee ppoouurr uunn cceerrttaaiinn uussaaggee ;; eenn aauuccuunn ccaass oonn nnee ppoouurrrraa mmee tteenniirr ccoommppttee ddee ddoommmmaaggeess ssppeecciiaauuxx,, iinnddiirreeccttss oouu ccoonnsseeccuuttiiffss aa,, nnii dd''aauuccuunn ddoommmmaaggee qquueellqquu''iill ssooiitt rreessuullttaanntt ddee llaa ppeerrttee dd''uuttiilliissaattiioonn,, ddee ddoonnnneeeess oouu ddee pprrooffiittss,, qquuee ccee ssooiitt ddaannss uunnee aaccttiioonn ccoonnttrraaccttuueellllee,, ddee nneegglliiggeennccee oouu aauuttrree aaccttiioonn,, ddeeccoouullaanntt ddee oouu eenn rreellaattiioonn aavveecc ll''uuttiilliissaattiioonn ddee ccee ddooccuummeenntt.. En gros, lisez et utilisez a vos propres risques. 11..22.. 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 _H_O_W_T_O _C_D_-_R_O_M _L_i_n_u_x explique tout ce qu'on devrait savoir sur les lecteurs de CD-ROMs sous Linux. En supplement, vous pourrez jeter un coup d'oeil sur le _H_O_W_T_O _S_C_S_I _L_i_n_u_x et le _H_O_W_T_O _n_o_y_a_u _L_i_n_u_x. 11..33.. TTeerrmmiinnoollooggiiee...... LLaasseerrss aauu mmaaxxiimmuumm...... FFeeuu !! _C_D_-_R_O_M veut dire _D_i_s_q_u_e _c_o_m_p_a_c_t _a _m_e_m_o_i_r_e _e_n _l_e_c_t_u_r_e _s_e_u_l_e (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 _C_D_-_R_O_M _e_n_r_e_g_i_s_t_r_a_b_l_e (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) un CD-R 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 qquu''uunnee sseeuullee ffooiiss 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 HOWTO parle de la tache d'ecrire un CD-R. Bienvenue a bord, Capitaine. 11..44.. GGrraavveeuurrss ddee CCDD--RROOMM ssuuppppoorrtteess 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 HOWTO. La plupart des graveurs de CD-ROM SCSI sont supportes et la toute nouvelle version de cdrecord supporte meme les graveurs de CD-ROM ATAPI. 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 _p_e_r_i_p_h_e_r_i_q_u_e_s _S_C_S_I _g_e_n_e_r_i_q_u_e_s et cdwrite/cdrecord). 11..55.. PPoossssiibbiilliitteess"" ssuuppppoorrtteeeess En ce moment les logiciels pour graver des CDs sous Linux supportent les caracteristiques principales suivantes : Caracteristique cd-write-2.1 cdrecord-1.7 ------------------------------------------------------------- Support ATAPI non oui Multisession en partie oui RockRidge oui (mkisofs) oui (mkisofs) El Torito oui (mkisofs) oui (mkisofs) HFS oui (mkhybrid) oui (mkhybrid) Joliet oui (mkhybrid) oui (mkhybrid) _R_o_c_k_R_i_d_g_e est un extension qui autorise des noms de fichiers plus longs et une arborescence de repertoires plus profonde. _E_l _T_o_r_i_t_o peut permettre de produire des CDs bootables. Veuillez consulter la documentation jointe pour plus de details sur ces possibilites speciales. _H_F_S permet a un Macintosh de lire le CD-ROM comme si c'etait un volume HFS. _J_o_l_i_e_t apporte les noms longs (entre autres choses) a certaines variantes de Windows (95, NT). La section ``'' liste la disponibilite des logiciels mentionnes. 11..66.. 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..77.. 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 Avant novembre 1997, les logiciels pour Linux ne supportaient pas les graveurs de CD-ROM ATAPI. En consequence, la version actuelle de ce HOWTO se concentre sur les peripheriques SCSI. La bonne nouvelle est que manipuler des peripheriques ATAPI est bien plus facile et vous pouvez quand meme utiliser ce HOWTO si vous oubliez le terme "peripherique SCSI generique". Pour trouver comment dialoguer avec des peripheriques ATAPI vous pouvez lancer la commande cdrecord -scanbus. 22..11.. CCoonnffiigguurreezz llee mmaatteerriieell Eteignez votre ordinateur, et branchez le graveur de CDs sur le bus SCSI. Assurez-vous que le bus SCSI est termine proprement et choisissez une ID SCSI libre pour le graveur. Regardez le HOWTO SCSI Linux 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 des CDs se fait a travers les _p_e_r_i_p_h_e_r_i_q_u_e_s _S_C_S_I _g_e_n_e_r_i_q_u_e_s qui permettent presque tout -- meme l'ecriture sur les CDs. 22..33.. CCrreeeezz lleess ppeerriipphheerriiqquueess ggeenneerriiqquueess Le _H_O_W_T_O _S_C_S_I _L_i_n_u_x dit a propos des peripheriques SCSI generiques : Le pilote de peripherique SCSI generique fournit une inter- face pour envoyer des commandes SCSI a tous les periph- eriques SCSI -- disques, lecteurs de bandes, CDROMs, mecan- ismes de changement de support, etc. Parler des peripheriques generiques en tant qu'_i_n_t_e_r_f_a_c_e_s 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 bloc 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 pouvoir positionner le laser. Pour avoir une implementation propre (et par consequent rapide) de ces peripheriques normaux, toutes ces actions exotiques doivent 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 specifique -- d'ou le nom _g_e_n_e_r_i_q_u_e. Deplacez-vous dans le repertoire /dev et verifiez la presence des 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 se montrer. 22..44.. EEttaabblliisssseezz ll''uuttiilliissaattiioonn ddeess ppeerriipphheerriiqquueess _S_C_S_I _g_e_n_e_r_i_q_u_e et _l_o_o_p_b_a_c_k Le noyau Linux necessite un module qui lui donne la possibilite de gerer les peripheriques SCSI generiques. Si votre noyau courant possede 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 recompiler. 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/?] Y * * 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 _p_e_r_i_p_h_e_r_i_q_u_e_s _l_o_o_p_b_a_c_k Deplacez-vous dans le repertoire /dev et verifiez la presence des _p_e_r_i_p_h_e_r_i_q_u_e_s _l_o_o_p_b_a_c_k. 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- Rs : <ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/> (mkisofs) <ftp://ftp.ge.ucl.ac.uk/pub/mkhfs> (mkhybrid) Selon le modele de votre graveur de CDs (voir ``''), l'un des logiciels suivants est necessaire pour ecrire les maquettes sur les CD-Rs : <ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/> (cdrecord) <ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/> (cdwrite) Veuillez utiliser les miroirs de ces serveurs FTP les plus proches de vous 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. Pour avoir des informations sur le portage de cdwrite sur Irix et AIX, visitez l'URL <http://lidar.ssec.wisc.edu/~forrest/> Si vous utilisez un noyau anterieur a 2.0.31, vous aurez envie de patcher mkisofs pour contourner un bogue du code du systeme de fichiers de Linux. La distribution Debian fournit 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.11-1.diff.gz> Ce patch n'est necessaire que si vous voulez monter l'image du CD a travers le peripherique loopback (voir ``''). 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/pro- jects/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 remplacement cdrecord. 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 ; il n'avait rien compris) En general l'ecriture d'un CD se fait en deux etapes : +o recolter les logiciels desires et les empaqueter en un grand fichier avec mkisofs/mkhybrid ; +o ecrire le grand fichier 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. Les personnes possedant un graveur de CD-ROMs ATAPI peuvent essayer "cdrecord -scanbus" pour detecter le bon peripherique et sauter le reste de cette section.) 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 quand on compte a partir de la lettre 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 pourront pas etre ajoutes une fois que le CD sera 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 unifiee par le noyau Linux comme pour tout autre systeme de fichiers. Par consequent, 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 du systeme de fichiers ISO 9660 ne sont pas si riches comparees a celles du systeme de fichiers ext2 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 nombre) ; +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 qu'une fois 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 -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 que l'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 !) Si vous utilisez un noyau Linux anterieur a 2.0.31, vous devriez ajouter l'option '-K' pour contourner un bogue du code du systeme de fichiers. 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 conti- ennent 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 repertoires 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 vrai 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 manip- uler les peripheriques loopback. 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 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 HOWTO serait beaucoup plus gros et dur a lire. 33..66.. RReemmaarrqquueess ssuurr lleess ddiissqquueess CCDD RReeiinnssccrriippttiibblleess vviieerrggeess Le magazine informatique allemand "c't" donne une liste de trucs concernant les CD vierges dans leur numero de novembre 1996 : +o les disques "sans-noms" (noname) 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 (si 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 interrompu 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 _B_a_s_t_a_r_d _O_p_e_r_a_t_o_r _F_r_o_m _H_e_l_l 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'aucun 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 _l_o_c_a_t_e 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 indique lors 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 loopback : mount -t ext2 -o loop=/dev/loop1 fic_vide /mnt +o copiez les fichiers vers /mnt et demontez-le apres ; +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://sun- site.unc.edu/pub/Linux/apps/sound/cds/cdda2wav0.71.src.tar.gz> <ftp://sunsite.unc.edu/pub/Linux/apps/sound/con- vert/sox-11gamma-cb3.tar.gz> cdda2wav vous permet de prendre un intervalle specifique (ou une plage entiere) de votre CD audio et le convertit en un fichier 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/chaf- fee/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 ? Si "ca ne fonctionne pas" meme sous d'autres systemes d'exploitation, vous avez un conflit materiel ou un materiel defectueux. 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 deconnection/reconnection (scatter/gather) manquante 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 AAnnddrreeaass EErrddmmaannnn <<eerrddmmaannnn@@zzpprr..uunnii--kkooeellnn..ddee>> a fourni l'exemple du graveur Yamaha ; AArrtt SSttoonnee <<ssttoonnee@@mmaatthh..uubbcc..ccaa>> a eu l'idee de mettre des systemes de fichiers non ISO 9660 sur un CD ; BBaarrttoosszz MMaarruusszzeewwsskkii <<BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll>> a rapporte des erreurs de prononciation ; BBeerrnnhhaarrdd GGuubbaannkkaa <<bbeegg@@iipppp--ggaarrcchhiinngg..mmppgg..ddee>> a remarque le besoin d'une version recente de mount pour utiliser le peripherique loopback ; BBrriiaann HH.. TToobbyy a fignole l'orthographe ; BBrruuccee PPeerreennss <<bbrruuccee@@ppiixxaarr..ccoomm>> a donne des informations sur la liste de distribution cdwrite ; DDaallee SScchheeeettzz <<ddwwaarrff@@ppoollaarriiss..nneett>> a aide a ameliorer la section sur la creation de l'image du CD ; a donne l'URL de l'outil mkhybrid ; EEddwwiinn HH.. KKrriibbbbss a remarque que '-K' necessite de patcher mkisofs ; GGeerraalldd CC SSnnyyddeerr <<ggccssnnyydd@@lloooopp..ccoomm>> a teste l'ecriture d'un CD-ROM ext2 (voir ``'') ; IInnggoo FFiisscchheenniisscchh <<iinnggoo@@mmii..uunnii--kkooeellnn..ddee>> a fourni l'exemple des deux controleurs hebergeant deux peripheriques ; JJaannnnee HHiimmaannkkaa <<sshheemm@@ooyytt..oouulluu..ffii>> pointeur vers le patch du noyau pour lire des CDs Joliet ; JJooeerrgg SScchhiilllliinngg <<sscchhiilllliinngg@@ffookkuuss..ggmmdd..ddee>> informations sur cdrecord ; JJooss vvaann GGeeffffeenn <<jjooss@@ttnnjj..pphhyyss..ttuuee..nnll>> a note le probleme dans ``'' ; MMaarrkkuuss DDiicckkeebboohhmm <<mm..ddiicckkeebboohhmm@@uunnii--kkooeellnn..ddee PPiieerrrree PPffiisstteerr <<pppp@@uupplliifftt..ffrr>> a aide a developper la recette des copies exactes ; RRiicckk CCoocchhrraann <<rriicckk@@mmsscc..ccoorrnneellll..eedduu>> indice sur dis-/reconnect desactive par defaut dans le pilote NCR ; SStteepphhaann NNooyy <<ssttnnooyy@@mmii..uunnii--kkooeellnn..ddee>> des informations et son experience sur l'ecriture de CDs audio ; SStteepphheenn HHaarrrriiss <<sswweehh@@mmppnn..ccoomm>> a donne des indices sur l'ecriture des CDs audio ; TThhee SShheeeeppyy OOnnee <<kkeerroo@@eessccaappee..ccoomm>> a suggere l'utilisation des CD rates en dessous de bouteilles ; VVoollkkeerr KKuullhhmmaannnn <<kkuuhhllmmaavv@@eelleecc..ccaanntteerrbbuurryy..aacc..nnzz>> a remarque que le paquetage cdwrite ne contient pas mkisofs. Fin du HOWTO graveur de CDs sous Linux