``Si en fumée tu te transformes, je ne cesserai de jouer pendant que tu te consumes.'' (L'empereur Néron en écrivant ses propres CDs classiques)
En général l'écriture d'un CD se fait en deux étapes :
mkisofs
;cdwrite
ou cdrecord
.Il est aussi possible de combiner les deux étapes en une avec un tube mais ceci n'est pas recommandé parce que ce n'est pas fiable. Voir ci-dessous.
( Veuillez noter : la façon actuelle de nommage des périphériques SCSI sous Linux est compliquée à souhait et pas assez fiable. Le fait que je la décrive ici en maints détails ne devrait pas être mal interprété comme la confirmation de cette état de faits. )
Après avoir suivi toutes les étapes du dernier chapitre, votre système devrait être capable de gérer le gravage de CDs. Cette section peut être utilisée comme preuve que tout fonctionne comme prévu.
Lancez la commande dmesg
. Elle devrait rapporter les messages du
noyau Linux, avec ceux imprimés lors du démarrage (limitation : seulement
les 200 derniers) et contient des informations sur le graveur de CDs
connectés 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 possède quatre périphériques SCSI connectés (vous ne pouvez
pas le voir donc je vous le dis), avec les ID SCSI allant de 0 à 3. Le
graveur est le quatrième périphérique SCSI physiquement présent et doit
donc être connecté sur /dev/sgd
(le quatrième périphérique SCSI
générique en comptant commence à 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 compliqué :
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 contrôleurs SCSI hébergent un périphérique SCSI
chacun. Quel gâchis (ils sont capables d'héberger jusqu'à sept
périphériques chacun). Ce n'est pas ma configuration alors arrêtez de
demander si j'ai trop d'argent... Cependant dans le but d'être 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
associée au premier périphérique SCSI générique /dev/sga
parce
que c'est le premier périphérique SCSI physiquement présent que Linux a
détecté. J'espère que ceci montre clairement que l'ID SCSI d'un
périphérique n'a rien à voir avec le périphérique générique associé.
Deux questions restent en suspens : qu'arrive-t-il si vous prenez le
mauvais périphérique ? Si vous ne spécifiez ni l'option
--<MANUFACTURER>
ni n'écrivez de données sur le périphérique,
en général un message d'avertissement est affiché 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 périphérique /dev/sbg
est un disque dur SCSI
(d'IBM).
Si vous écrivez des données sur le mauvais périphérique, vous en écrasez le contenu d'origine et endommagerez votre système de façon probablement irrémédiable. Faites attention, cela m'est déjà arrivé par accident.
En général cela prend plus de temps qu'on ne le croit ; Rappelez-vous que
les fichiers manquants ne peuvent pas être ajoutés une fois que le CD est
écrit. :-)
Gardez aussi à l'esprit qu'un certain montant de l'espace libre d'un CD est utilisé pour stocker les informations sur le système de fichiers ISO 9660 (en général quelques Mo).
Le terme ISO 9660 se rapporte au format dans lequel les données sont stockées sur le CD, pour être plus précis : c'est le système de fichiers sur le CD.
Bien sûr, l'apparence des fichiers stockés dans ce format est unifié par
le noyau Linux comme pour tout autre système de fichiers. Si vous montez
un CD dans l'arborescence des répertoires, vous ne pouvez pas distinguer
son contenu des autres fichiers... à part le fait qu'on ne peut écrire
dessus... même pas pour root
. :-)
(Le mécanisme utilisé pour
unifier l'apparence des fichiers est appelé système de fichiers
virtuel, en abrégé VFS.
Les possibilités de ISO 9660 ne sont pas si riches comparées à celles du
système de fichiers ext-2
qui est normalement utilisé sous Linux.
Par contre, le CD n'est inscriptible qu'une seule fois et certaines
possibilités n'ont même pas de sens. Les limitations du système de
fichiers ISO 9660 sont :
Avant de pouvoir utiliser un support de stockage (par exemple une disquette, un disque dur ou un CD), il doit avoir un système de fichiers (en langage DOS : être formaté). Ce système de fichiers est responsable de l'organisation et de l'incorporation des fichiers qui devraient être stockés sur le support.
Bon, un CD inscriptible ne l'est qu'une fois et donc si nous
y écrivons un système de fichiers vide, il serait formaté -- mais
resterait pour l'éternité complètement vide. :-)
Nous avons donc besoin d'un outil qui crée le système de fichiers en même
temps qu'il copie les fichiers sur le CD. Cet outil s'appelle
mkisofs
. Une utilisation simple ressemble à 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
être lisibles publiquement sur le CD et permet les extensions Rock
Ridge. C'est ce qu'on veut en général et l'utilisation de cette option
est recommandée jusqu'à 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'implémentation Linux et empêche le
dernier fichier du CD d'être détruit (pas vraiment, mais Linux ne peut
pas le lire). Vous avez besoin de la version patchée de mkisofs
pour cela. Cette option est équivalente à l'option -P
de
cdwrite
.
Veuillez regarder la page de manuel de mkisofs
pour plus de détails.
mkisofs
essaiera de convertir tous les noms de fichiers au format 8.3
utilisé par DOS pour assurer une compatibilité maximale. En cas de
conflits de noms (des fichiers différents qui auraient le même nom 8.3),
des numéros sont utilisés dans les noms de fichiers et les informations
sur le nom de fichier choisi sont imprimées sur l'erreur standard (en
général l'écran).
Ne paniquez pas : 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 envoyée directement au périphérique de gravage. Ceci est dû à
deux raisons :
mkisofs
ne connait rien sur la manière de piloter les graveurs
de CD (voir la section
perifgen
) ;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 système d'exploitation en temps réel et que les
tâches peuvent être mal temporisées). A la place, il est recommandé de
stocker la sortie de mkisofs
dans un fichier séparé sur le disque
dur. Ce fichier est alors une image parfaite du CD à venir et est en fait
écrite sur le CD avec l'outil cdwrite
dans un deuxième temps.
L'image parfaite est stockée dans un fichier énorme, et vous avez donc besoin de la même quantité d'espace disque libre que ce que prennent vos logiciels rassemblés. C'est le problème. On pourrait penser à créer une partition supplémentaire pour cela et écrire l'image sur cette partition plutôt que dans un fichier. Je suis contre cette stratégie parce que si vous écrivez sur la mauvaise partition (à cause d'une faute de frappe), vous pouvez perdre votre système Linux en entier. De plus, c'est du gâchis d'espace disque parce que l'image du CD représente des données temporaires que l'on pourra effacer après avoir gravé le CD.
Linux a la possibilité de monter des fichiers comme si c'était des partitions de disques. Ceci est très utile pour vérifier si la structure des rérpertoires de l'image du CD est bonne.
Pour monter le fichier cd_image
créé ci-dessus dans le répertoire
/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
démonter l'image CD, tapez simplement umount /cdrom
. Attention :
si vous n'avez pas utilisé l'option -K
avec mkisofs
, le dernier
fichier sur /cdrom
peut ne pas être entièrement lisible.
Note : certaines versions anciennes de mount
ne savent pas manipuler
les périphériques loopback. Si vous avez une version de mount
si
vieille que ça, c'est une indication pour mettre votre système Linux à
jour.
Plusieurs personnes m'ont déjà suggéré de mettre des informations sur la
manière d'obtenir les dernières 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 à jour difficilement, dites-leur que c'est une erreur.
Si je devais donner toutes les informations nécessaires pour contourner les erreurs des distributions Linux mal faites, ce mini-HOWTO serait beaucoup plus gros et dur à lire.
Le magazine informatique allemand c't donne une liste de trucs concernant les CD vierges dans leur numéro de novembre 1996 :
Plus grand chose à faire. Avant de vous montrer la dernière commande, laissez-moi vous avertir que les graveurs de CDs doivent être alimentés par un flot continu de données parce qu'ils n'ont que de petits caches de données. Le processus d'écriture de l'image CD sur le CD ne doit donc pas être interrompue ou bien le résultat est un CD corrompu.
Pour être sûr que rien ne vient interrompre le processus, virez tous les
utilisateurs de votre système et débranchez le câble Ethernet... Lisez le
``Bastard Operator From Hell'' pour en apprendre sur la bonne attitude à
adopter. ;-)
Si vous êtes prêt mentalement, mettez une blouse noire, multipliez l'ID SCSI du graveur de CD par son numéro de version et allumez autant de bougies, récitez 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 sûr remplacer le périphérique d'exemple par le périphérique SCSI auquel votre graveur de CD est connecté.
Veuillez noter qu'autant graveur ne peut repositionner son laser et continuer au point où il a été dérangé. Par conséquent toute vibration forte ou même un choc détruira complètement le CD que vous êtes en train de graver.
...Rappelez-vous que vous pouvez toujours utiliser les CD ratés comme
dessous de bouteilles. :-)
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre