Installation d'un graveur de CD-ROM

Linux dispose de tous les logiciels permettant de graver des CD-ROM, et ce avec la plupart des graveurs disponibles sur le marché. Il permet de copier des CD et de créer des images disques. Cependant, il n'est pas encore possible d'utiliser le gravage par paquet, qui permet d'utiliser les graveurs de CD comme des périphériques amovibles. Cette fonctionnalité est en effet encore à l'étude, elle sera sans doute disponible sous peu.

Notions de base sur le gravage sous Linux

Originellement, tous les graveurs de CD utilisaient l'interface SCSI. Ce n'est que plus tard que les graveurs sur port parallèle et les graveurs IDE ATAPI sont apparus. Actuellement, les graveurs externes connectés sur port parallèle sont de moins en moins vendus. Les graveurs IDE font une belle percée, mais les graveurs SCSI restent incontournables pour les vielles machines dont on n'est pas sûr des performances au niveau des disques. Les logiciels de gravage doivent donc être capable d'utiliser n'importe quel type de graveur, ce qui n'est pas simple. C'est pour cette raison qu'ils utilisent tous l'interface SCSI, aussi bien pour des raisons historiques que pour des raisons techniques. Cela ne signifie pas qu'il est impossible d'utiliser les graveurs ATAPI, car le protocole de communication ATAPI n'est rien d'autre qu'une traduction des commandes IDE en commandes SCSI au niveau matériel.

L'utilisation d'un graveur de CD SCSI ne posera donc pas de problèmes et se fera de manière directe. En revanche, les graveurs de CD IDE ATAPI devront être accédés par l'intermédiaire d'un émulateur SCSI, qui traduira les commandes SCSI en commandes ATAPI correspondantes. Cet émulateur est géré au niveau du noyau de Linux. Le problème est qu'il est impossible d'activer à la fois le support des CD-ROM IDE ATAPI et l'émulateur SCSI pour les périphériques IDE dans un même noyau. On devra donc faire le choix entre les deux solutions suivantes :

  • soit on n'utilise que l'interface SCSI pour accéder aux lecteurs de CD, et on ne risque aucun conflit ;

  • soit on active les deux fonctionnalités sous la forme de modules, et on n'utilise qu'une seule des interfaces à chaque instant.

La première solution est évidemment la plus simple (et surtout la plus sûre). La deuxième solution permet d'utiliser ses lecteurs de CD-ROM IDE ATAPI normalement avec leur interface native, sauf lorsqu'on désire graver un CD. Comme il n'y a pas de cas où l'interface SCSI est inférieure en terme de performances et de fonctionnalités à l'interface IDE, cette méthode est déconseillée.

Configuration du noyau

Vous allez encore une fois avoir à effectuer des choix de configuration dans le noyau pour activer la gestion des périphériques SCSI capables de piloter votre graveur. Les questions concernant les graveurs de CD-ROM sont récapitulées ci-dessous :

« Include IDE/ATA-2 CDROM support »

Cette option permet d'activer la gestion des lecteurs de CD IDE ATAPI. Vous ne devez pas répondre à cette question par 'Y', faute de quoi vous ne pourrez pas utiliser votre graveur de CD. Il vous est en revanche possible de répondre par 'M', pour n'activer la fonctionnalité qu'à la demande, sous la forme de module. La réponse recommandé est 'N', à moins que vous ne sachiez ce que vous faites. En effet, si vous activez cette fonctionnalité, vous risquez d'avoir des conflits avec l'émulation SCSI. Ce problème sera détaillé plus loin.

« SCSI emulation support »

Cette option permet d'activer la gestion des périphériques IDE ATAPI par l'intermédiaire de commandes SCSI. C'est cette option qui va vous permettre d'utiliser votre graveur de CD IDE avec les programmes qui ne peuvent gérer que des graveurs SCSI. Vous pouvez répondre 'N' à cette question si vous n'utilisez ni lecteur de CDROM SCSI ni graveur SCSI. Dans tous les autres cas, il est recommandé de répondre 'Y' à cette question afin d'accéder à votre matériel via l'interface SCSI. Vous pouvez activer cette fonctionnalité sous la forme de module en répondant par 'M' à cette question, cette solution est recommandée si vous avez activé la gestion des CD-ROM IDE ATAPI dans la question précédente.

« Loopback device support »

Cette option permet d'activer une fonctionnalité permettant d'utiliser un fichier comme un périphérique normal. Elle est très utile pour tester les images de CD, car il suffit simplement de monter le fichier image comme un périphérique « loopback ». Il est donc recommandé d'activer cette fonctionnalité, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalité peut être activée sous la forme de module ou non, la réponse recommandée est 'Y'.

« SCSI support »

Cette option permet d'activer la gestion des périphériques SCSI dans votre noyau. Il va de soi qu'il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalité peut être activée sous forme de module ou non. La réponse recommandée est 'Y'.

« SCSI CD-ROM support »

Cette option permet d'activer la gestion des lecteurs de CD SCSI. Il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Il est impératif d'utiliser les modules si vous avez activé la gestion des lecteurs IDE. Vous pouvez intégrer cette fonctionnalité au noyau sans risque sinon. Cette dernière solution est la méthode recommandée, aussi est-il conseillé de répondre 'Y' à cette question.

« Enable vendor-specific extensions (for SCSI CDROM) »

Cette option permet d'autoriser l'emploi d'extensions au protocole SCSI définies par les fabricants de matériels. Certains graveurs utilisent de telles commandes, c'est en particulier le cas des graveurs de CD HP. Toutefois, si vous ne disposez pas d'un tel graveur, il est peu probable que vous ayez à activer cette fonctionnalité. La réponse recommandée est donc 'N'.

« SCSI generic support »

Cette option permet d'utiliser le périphérique SCSI avec des commandes non standards, ce qui requiert l'emploi de programmes capables de communiquer directement avec les périphériques SCSI. C'est le cas pour les graveurs, qui seront pilotés directement par les logiciels de gravage. Il faut donc activer cette fonctionnalité, que l'on dispose d'un graveur SCSI ou IDE. La réponse recommandée est 'Y'.

« Probe all LUNs on each SCSI device »

Cette option permet, lorsqu'on dispose de périphériques SCSI capables de gérer plusieurs numéros d'unité logiques, de leur demander tous ces numéros. Ce type de périphériques est assez rare, et en général chaque périphérique n'utilise qu'un et un seul numéro d'unité logique. Il ne faut donc pas, en général, activer cette fonctionnalité. La réponse recommandée pour cette question est donc 'N'.

Enfin, il faut choisir le driver bas niveau permettant de gérer son graveur de CD. Pour les graveurs IDE ATAPI, la couche d'émulation suffira et il est inutile de sélectionner un autre driver. En revanche, pour les graveurs SCSI, il faut choisir le driver approprié.

Une fois cette configuration effectuée, il ne reste plus qu'à compiler le noyau et les modules et à les installer. Vous trouverez plus de détails à ce sujet dans le chapitre traitant de la compilation du noyau.

Configuration des modules du noyau

Vous aurez sans doute à modifier le fichier de configuration /etc/modules.conf si vous avez activé certaines fonctionnalités SCSI sous la forme de modules, afin de charger les modules nécessaires lorsqu'une commande sera effectuée sur un des fichiers spéciaux de périphériques SCSI. Si toutes les fonctionnalités SCSI sont intégrées au noyau, cette étape est bien entendue facultative. Les fichiers spéciaux utiles pour les périphériques blocs SCSI sont les fichiers scdx et sgx, où x est le numéro du périphérique. Les fichiers spéciaux du premier groupe sont de type bloc, et permettent d'accéder aux lecteurs de CD SCSI. Les fichiers du deuxième groupe en revanche sont de type caractère, et permettent d'accéder aux périphériques SCSI de manière générique. Les codes majeurs pour ces deux groupes de fichiers spéciaux sont respectivement 11 et 21, il faut donc ajouter les entrées du fichier modules.conf pour les modules nommés block-major-11 et char-major-21. Normalement, ces entrées sont déjà présentes dans le fichier fourni par votre distribution. Cependant, vous aurez à ajouter les lignes suivantes si vous utilisez un graveur de CD IDE ATAPI :

post-install sr_mod modprobe -k ide-scsi

après la ligne indiquant le module à charger pour les périphériques blocks de code majeur 11, et :

post-install sg modprobe -k ide-scsi

pour les périphériques SCSI génériques, de code majeur 21.

Ces deux lignes permettent de demander au noyau de charger également le module ide-scsi lorsque l'un des modules SCSI est chargé. Le module ide-scsi est le module qui se charge d'effectuer l'émulation SCSI pour les périphériques IDE ATAPI.

Il va de soi que lorsque vous aurez utilisé un des fichiers périphériques SCSI, le module ide-scsi sera chargé. Vous ne pourrez donc plus utiliser le module ide-cd, qui permet d'accéder aux lecteurs IDE par leur interface ATAPI. De même, si vous montez votre lecteur de CD par l'intermédiaire du fichier spécial de périphérique IDE correspondant, le module ide-cd sera chargé. Vous ne pourrez donc plus utiliser le module d'émulation SCSI. La solution est donc, dans ce cas, de décharger les modules inutilisés à l'aide de la commande rmmod. Il est évident que comme vous n'avez pas besoin d'utiliser l'interface IDE de vos lecteurs de CD dans la plupart des cas, le plus simple est simplement de toujours utiliser l'émulation SCSI et ainsi d'éviter tout conflit. Dans ce cas, vous pourrez répondre par 'N' à la question « Include IDE/ATA-2 CDROM support » de la configuration du noyau, surtout si vous ne maîtrisez pas Linux ou si n'avez pas bien assimilé le fonctionnement des modules.

Installation des logiciels de gravage

Lorsque cela aura été réalisé, il ne vous reste plus qu'à installer les logiciels de gravage. Les logiciels indispensables sont les suivants :

  • cdrecord, qui permet de piloter le graveur de CD et d'effectuer les tâches nécessaires pour le gravage ;

  • mkisofs, qui permet de créer des images disques ISO 9660 ;

  • mkhybrid, qui permet de créer des images disques ISO 9660 avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh). Ce programme est très pratique, car les CD ainsi créés pourront être lus correctement par plusieurs systèmes ;

  • cdda2wav, qui permet d'extraire les données numériques des CD audio.

Vous pourrez vérifier que votre configuration fonctionne correctement avec la commande suivante :

cdrecord -scanbus

Cette commande recherche tous les périphériques SCSI du système. Vous devrez normalement y trouver, en plus de vos autres périphériques SCSI, votre graveur de CD.

Utilisation des logiciels de gravage

Nous allons à présent voir les commandes permettant de faire les principales opérations ayant trait au gravage des CD. Bien que ce document soit consacré à l'installation de Linux et non à son utilisation, elles vous permettront de tester si tout fonctionne correctement.

La copie directe d'un CD peut se faire avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -isosize /dev/scdx

bus représente le bus SCSI sur lequel le graveur est branché, ID le numéro de périphérique du graveur sur ce bus SCSI et lun son numéro d'unité logique (« Logical Unit Number ». Le numéro du bus SCSI et le numéro de périphérique peuvent être obtenus avec la commande cdrecord -scanbus présentée ci-dessus. Le numéro d'unité logique est, dans la majorité des cas, 0. Le nombre n doit ici valoir le facteur multiplicateur de la vitesse de gravage. Vous pouvez essayer avec des valeurs faibles pour commencer, afin d'être sûr que tout se passe bien. Le fichier de périphérique /dev/scdx indiqué dans la ligne de commande de cdrecord doit bien entendu être le fichier de périphérique SCSI du lecteur de CD utilisé pour lire le CD-ROM. L'option -isosize permet de demander à cdrecord de lire la taille de la piste à graver dans le système de fichiers ISO9660 du CD source. Enfin, l'option -dummy permet de faire toutes les opérations en conservant le laser du graveur éteint, ce qui revient à faire un test. Si vous voulez réellement graver votre CD, il suffit de supprimer cette option.

Il va de soi que si vous ne disposez pas d'un lecteur de CD en plus de votre graveur, vous ne pouvez pas utiliser la commande précédente. Dans ce cas, vous devrez faire une image disque en extrayant toutes les données du CD source. Cela peut être réalisé avec la commande suivante :

dd if=/dev/scdx of=image
/dev/scdx est le fichier spécial de périphérique SCSI du lecteur utilisé pour faire l'image (donc, si vous ne disposez que d'un graveur, c'est le fichier spécial de périphérique SCSI de votre graveur), et image est le fichier image qui doit être créé.

Le gravage d'une image disque peut être réalisé avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -data image
où les options sont les mêmes que dans les commandes précédentes.

Si vous désirez créer une image disque à partir des fichiers de votre disque dur, vous pouvez utiliser mkisofs ou mkhybrid. Le premier programme permet de créer une image disque ISO9660, avec éventuellement les extensions Rock Ridge pour activer les fonctionnalités des systèmes de fichiers Unix (noms de fichiers plus longs, liens symboliques, droits...). Le deuxième programme permet de créer des images qui seront lisibles sur plusieurs systèmes d'exploitation, en fournissant les extensions Joliet sous Windows 95 et NT (noms de fichiers longs), Rock Ridge sous Unix et HFS sous Macintosh. Le prix à payer pour cette amélioration est la perte de quelques centaines de kilo octets, ce qui est dérisoire étant donné le gain en portabilité.

Les options des deux utilitaires mkisofs et mkhybrid sont similaires. La ligne de commande à utiliser pour créer une image disque est la suivante :

mkisofs  [-r | -R]  -V "nom" -o image répertoires
ou
mkhybrid [-r | -R] [-J] [-hfs] -V "nom" -o image répertoires
selon le programme utilisé.

Les options -r ou -R, -J et -hfs permettent respectivement d'utiliser les extensions Rock Ridge, Juliette ou HFS. mkhybrid est capable de prendre plusieurs de ces options simultanément, et de créer des CD hybrides qui fonctionneront sur plusieurs systèmes. La distinction entre l'option -r et l'option -R est que -r modifie les attributs des fichiers Unix afin que le CD puisse être utilisé sur un autre ordinateur que celui sur lequel le CD a été créé. En particulier, le propriétaire et le groupe des fichiers voient leurs valeurs fixées à 0. L'option -V permet de fixer le nom du volume dans l'image. Il est possible de placer ce nom entre guillemets. Cette fonctionnalité est intéressante si ce nom comprend des espaces. L'option -o permet de spécifier le nom du fichier image qui doit être créé.

Les paramètres suivants constituent la liste des répertoires et des fichiers qui doivent être insérés dans le CD-ROM. Par défaut, chaque répertoire ou fichier indiqué en paramètre est placé dans le répertoire racine du CD-ROM, et l'arborescence des sous-répertoires est respectée. Cependant, il est possible de placer un des répertoires ou fichiers indiqué en paramètre dans un autre répertoire du CD-ROM, à l'aide de la syntaxe suivante :

destination=source
destination est le répertoire destination du CD-ROM, et source le répertoire ou le fichier source à ajouter à l'image disque. De même, il est possible d'exclure certains sous-répertoires de l'image disque à l'aide de l'option -x :
-x répertoire

Les sous-répertoires du répertoire indiqué seront également supprimés de l'image disque.

Vous pouvez tester votre image disque en la montant par l'intermédiaire du périphérique loopback. Il faut pour cela que vous ayez activé la gestion de ce périphérique dans la configuration du noyau. La commande à utiliser pour monter ce type de périphérique est légèrement plus compliquée que pour les systèmes de fichiers classiques :

mount -t iso9660 -o ro,loop=/dev/loop0 image /cdrom
image est le nom de votre fichier image à tester. Cette commande monte le système de fichiers de cette image dans le répertoire /cdrom. La commande umount peut être utilisée pour démonter ce système de fichiers, et elle s'utilise alors exactement comme pour les autres systèmes de fichiers.

Les commandes présentées ci-dessus ne permettent pas de travailler avec des CD audio. Pour extraire les données audio d'un CD, vous devrez utiliser le programme cdda2wav» :

cdda2wav [-H] -B nom [-tdébut[+fin]] -O wav -D bus,ID,lun

L'option -H permet d'éviter la création des fichiers d'information .inf sur les pistes extraites par cdda2wav. L'option -B permet d'utiliser le nom nom complété d'un numéro pour les fichiers de données créés. Les pistes seront donc stockées dans des fichiers portant les noms nom_01, nom_02, etc. L'option -t permet d'indiquer la piste début et la piste fin afin de sélectionner les pistes dont les données audio doivent être extraites. Si la piste de fin n'est pas précisée, toutes les pistes depuis la piste de début jusqu'à la dernière piste du CD seront extraites. De même, si la piste de début n'est pas précisée, l'extraction commencera à partir de la première piste. L'option -O permet d'indiquer le type de fichier de sortie, wav indique ici que les fichiers créés seront au format WAV des fichiers sons de Windows. Il est également possible d'utiliser le type de fichier raw, avec lequel les fichiers seront prêts à être gravés tels quels. Enfin, l'option -D permet de spécifier le périphérique SCSI à utiliser pour lire les données audio. Ce périphérique est sélectionné par le numéro du bus SCSI sur lequel il se trouve, son numéro dans ce bus et son numéro d'unité logique.

Le gravage des pistes audio peut être réalisé avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -nofix -audio  piste1.wav \
    piste2.wav ...

L'option -nofix permet ici d'éviter de fermer la session. Elle doit être utilisée si l'on désire rajouter des pistes audio sur le CD-ROM ultérieurement. Si, en revanche, elle est omise, cdrecord fermera automatiquement la session après l'écriture de la dernière piste, et plus aucune donnée ne pourra être ajoutée. La commande suivante vous permettra de fixer le disque a posteriori :

cdrecord -dummy -v dev=bus,ID,lun speed=n -fix

Enfin, si vous disposez d'un graveur de CD réinscriptible, vous pourrez utiliser la commande suivante pour effacer un CDRW :

cdrecord -dummy -v dev=bus,ID,lun -blank=fast
bus,ID,lun représente toujours le périphérique SCSI à utiliser en tant que graveur.

Il est peu probable que vous ayez à utiliser ces commandes directement, car il existe un programme graphique capable de les piloter de manière conviviale. Ce programme se nomme xcdroast, et peut être récupéré sur Internet si votre distribution ne le comprend pas. Il est vivement recommandé de l'installer. Son utilisation est assez élémentaire et ne devrait pas poser de problème particulier.