HOWTO Graveur de CDs
Winfried Truemper, <winni@xpilot.org>
, traduit par
Olivier Tharan, <tharan@int-evry.fr>
Version 2.4.1, 16 décembre 1997
Ce document parle du processus de gravage de CDs sous Linux.
1. Introduction
Ma première expérience avec des graveurs de CDs a été guidée par le "Linux CD Writer mini-HOWTO" de Matt Cutts <cutts@cs.unc.edu>. Merci Matt !
Bien que mon intention n'était que de mettre ce document à jour, je l'ai réécrit à partir du début après avoir réalisé combien tout avait changé depuis 1994.
1.1 Avertissement
Je (Winfried Truemper) rejette toute garantie concernant ce document, incluant toutes les garanties implicites de mise sur le marché et d'utilité pour un certain usage ; en aucun cas on ne pourra me tenir compte de dommages spéciaux, indirects ou consécutifs à, ni d'aucun dommage quelqu'il soit résultant de la perte d'utilisation, de données ou de profits, que ce soit dans une action contractuelle, de négligence ou autre action, découlant de ou en relation avec l'utilisation de ce document. En gros, lisez et utilisez à vos propres risques.
1.2 Lectures suggérées
La FAQ sur les CD-R à http://www.cd-info.com/CDIC/Technology/CD-R/FAQ.html est une FAQ générale portant sur les disques compacts enregistrables (CD-R).
Le HOWTO CD-ROM Linux explique tout ce qu'on devrait savoir sur les lecteurs de CD-ROMs sous Linux. En supplément, vous pourrez jeter un coup d'oeil sur le HOWTO SCSI Linux et le HOWTO noyau Linux.
1.3 Terminologie... Lasers au maximum... Feu !
CD-ROM veut dire Disque compact à mémoire 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 argentée vient d'une couche aluminisée qui est le support.) Les trous représentent 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 CD-R est une forme abrégée de CD-ROM enregistrable (Recordable) et se rapporte au CD qui n'a pas ces "trous microscopiques" sur sa surface... Il est donc vide.
À la place de la couche aluminisée (argentée) un CD-R possède un film spécial (coloré) dans lequel des "trous microscopiques" peuvent y être brûlés. Ceci est réalisé en donnant au laser, qui normalement ne fait que palper les trous, un peu plus de puissance pour qu'il brûle les trous. Cette action ne peut se faire qu'une seule fois sur un CD-R.
Vous pouvez toutefois laisser certaines parties vides pour une écriture ultérieure, créant ce qu'on appelle un CD multi-sessions.
Ce HOWTO parle de la tâche d'écrire un CD-R. Bienvenue à bord, Capitaine.
1.4 Graveurs de CD-ROM supportés
La liste détaillée des modèles qu'on a vu fonctionner correctement (ou pas) est disponible à
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 supportés et la toute nouvelle version de cdrecord supporte même les graveurs de CD-ROM ATAPI.
Si votre matériel n'est pas supporté, vous pouvez toujours utiliser Linux pour créer une image du CD ultérieur, mais vous devrez alors utiliser un logiciel sous DOS pour écrire l'image sur le CD-R. (Vous aurez envie de faire ceci parce que la plupart des logiciels DOS ne peuvent pas gérer les noms de fichiers longs disponibles avec Linux.)
Dans ce cas, vous pouvez passer toutes les sections relatives au
matériel (celles sur les périphériques SCSI génériques et
cdwrite/cdrecord
).
1.5 "Possibilités" supportées
En ce moment les logiciels pour graver des CDs sous Linux supportent les caractéristiques 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)
RockRidge est un extension qui autorise des noms de fichiers plus longs et une arborescence de répertoires plus profonde. El Torito peut permettre de produire des CDs bootables. Veuillez consulter la documentation jointe pour plus de détails sur ces possibilités spéciales. HFS permet à un Macintosh de lire le CD-ROM comme si c'était un volume HFS. Joliet apporte les noms longs (entre autres choses) à certaines variantes de Windows (95, NT).
La section logiciels liste la disponibilité des logiciels mentionnés.
1.6 Listes de distribution
Si vous voulez rejoindre l'équipe de développement (avec l'intention de les aider activement), envoyez un courrier électronique à
cdwrite-request@pixar.com
et mettez la commande subscribe
dans le corps du message.
1.7 Disponibilité
La toute dernière version de ce document est toujours disponible à partir de
http://www.shop.de/~winni/linux/
(NdT : en France, c'est à http://www.freenix.fr/linux/, mais la version peut ne pas être la dernière en date.)
2. Préparez votre machine Linux pour graver des CD-ROMs
Avant novembre 1997, les logiciels pour Linux ne supportaient pas les graveurs de CD-ROM ATAPI. En conséquence, la version actuelle de ce HOWTO se concentre sur les périphériques SCSI.
La bonne nouvelle est que manipuler des périphériques ATAPI est bien
plus facile et vous pouvez quand même utiliser ce HOWTO si vous
oubliez le terme "périphérique SCSI générique". Pour trouver comment
dialoguer avec des périphériques ATAPI vous pouvez lancer la commande
cdrecord -scanbus
.
2.1 Configurez le matériel
Éteignez votre ordinateur, et branchez le graveur de CDs sur le bus SCSI.
Assurez-vous que le bus SCSI est terminé proprement et choisissez une ID SCSI libre pour le graveur. Regardez le HOWTO SCSI Linux si vous n'êtes pas sûr. Si vous êtes complètement dépassé, demandez à un expert.
Remettez le courant et regardez les messages que le BIOS du contrôleur SCSI affiche immédiatement après l'allumage de l'ordinateur. S'il ne reconnaît pas votre graveur, revenez à l'étape précédente. Vous devriez voir un message comme celui-ci :
(Image manquante ; quelqu'un en a-t-il une copie d'ecran ?)
2.2 Note sur le gravage de CDs sous Linux
Au contraire d'autres rumeurs, le noyau Linux n'a pas besoin de
patch pour écrire 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 écriture à travers les périphériques standards /dev/sda
-
/dev/sdh
, ce qui est normal.
Au lieu d'utiliser ces périphériques, l'écriture des CDs se fait à travers les périphériques SCSI génériques qui permettent presque tout -- même l'écriture sur les CDs.
2.3 Créez les périphériques génériques
Le HOWTO SCSI Linux dit à propos des périphériques SCSI génériques :
Le pilote de périphérique SCSI générique fournit une interface pour envoyer des commandes SCSI à tous les périphériques SCSI -- disques, lecteurs de bandes, CDROMs, mécanismes de changement de support, etc.
Parler des périphériques génériques en tant qu'interfaces veut dire qu'ils fournissent une manière différente d'accéder au matériel SCSI par rapport aux périphériques normaux.
Cette manière détournée est obligatoire parce que les périphériques normaux sont faits pour lire des données à l'échelle du bloc à partir d'un disque, d'un lecteur de bandes ou d'un lecteur de CD-ROM. D'un autre côté, piloter un graveur de CD-ROM (ou un scanner) est plus exotique, par exemple on doit pouvoir positionner le laser. Pour avoir une implémentation propre (et par conséquent rapide) de ces périphériques normaux, toutes ces actions exotiques doivent être réalisées à travers les périphériques SCSI génériques.
Puisque l'on peut tout faire au matériel SCSI à travers les périphériques génériques, ils ne sont pas limités à un usage spécifique -- d'où le nom générique.
Déplacez-vous dans le répertoire /dev
et vérifiez la présence
des périphériques SCSI génériques ; 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 périphériques, créez-les en utilisant
le script /dev/MAKEDEV
:
bash> cd /dev/
bash> ./MAKEDEV sg
Maintenant les fichiers de périphériques devraient se montrer.
2.4 Etablissez l'utilisation des périphériques SCSI générique et loopback
Le noyau Linux nécessite un module qui lui donne la possibilité de
gérer les périphériques SCSI génériques. Si votre noyau courant
possède cette aptitude, elle devrait être listée 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-être taper la commande insmod sg
, insmod
loop
ou insmod sr_mod
pour charger le module dans le
noyau. Re-vérifiez après avoir essayé 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.
2.5 Construire et installer le noyau
Si vous avez des questions concernant ceci, la lecture suggérée est le HOWTO Noyau Linux. De plus, votre distribution Linux devrait contenir de la documentation sur ce problème.
(Astuce : pendant la recompilation, vous pouvez continuer sur les étapes createdev et au-delà)
2.6 Redémarrer l'ordinateur pour amorcer le changement
Ne paniquez pas si le noyau Linux affiche les messages plus rapidement que
vous ne pouvez les lire, au moins l'initialisation des périphériques SCSI
peut être réaffichée 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 montré ci-dessus uniquement la partie des messages d'initialisation qui rapportent la détection des périphériques SCSI présents physiquement.
2.7 Création des périphériques loopback
Déplacez-vous dans le répertoire /dev
et vérifiez la présence
des périphériques loopback. Ce n'est pas grave si vous n'avez
pas ces périphériques, mais c'est pratique si vous les avez (Voir la
section
test
). Si vous les avez déjà, 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 périphériques, créez-les en utilisant
le script /dev/MAKEDEV
:
bash> cd /dev/
bash> ./MAKEDEV loop
La dernière commande ne réussit que si vous avez le module
loop
dans votre noyau (voir la section
utilisation
pour la manipulation des modules). Si insmod loop
ne donne
rien, vous devez attendre que le nouveau noyau soit correctement
installé (voir
noyau
.
2.8 Obtenez le logiciel pour graver les CDs
Utilitaires en ligne de commande
Le paquetage suivant est obligatoire pour générer 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 modèle de votre graveur de CDs (voir supportes ), l'un des logiciels suivants est nécessaire pour écrire 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 à partir d'un CD.
Assurez-vous absolument que vous avez la version 2.0 ou supérieure 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 antérieur à 2.0.31, vous aurez envie de
patcher mkisofs
pour contourner un bogue du code du système
de fichiers de Linux. La distribution Debian fournit un patch pour la
version 1.05 de mkisofs
qui lui ajoute l'option -K
(voir
iso
) ; il est disponible sur
ftp://ftp.debian.org/pub/debian/rex/source/misc/mkisofs_1.11-1.diff.gz
Ce patch n'est nécessaire que si vous voulez monter l'image du CD à travers le périphérique loopback (voir test ).
Une interface utilisateur graphique (optionnelle)
X-CD-Roast est un programme de gravage de CDs fonctionnant entièrement
sous X, et succède à 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 basé sur une version patchée de cdwrite-2.0 et possède par conséquent les mêmes caractéristiques (voir possibil ). Les versions futures pourraient être basées sur le logiciel de remplacement cdrecord.
3. Écrire un CD
``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 ; il n'avait rien compris)
En général l'écriture d'un CD se fait en deux étapes :
- récolter les logiciels désirés et les empaqueter en un grand
fichier avec
mkisofs/mkhybrid
; - écrire le grand fichier sur le CD enregistrable avec
cdwrite
oucdrecord
.
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.
3.1 Déterminez à quel périphérique SCSI générique le graveur est attaché
(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. Les personnes possédant un graveur de CD-ROMs ATAPI peuvent essayer "cdrecord -scanbus" pour détecter le bon périphérique et sauter le reste de cette section.)
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 quand on compte à 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 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 "--