Intéressé par des cours d'informatique en ligne ?
Visitez mon nouveau site https://www.yesik.it !

En standard Debian, comme de nombreuses autres distributions Linux ou Unix-like est livrée avec différents outils qui permettent de graver un CD en ligne de commande. D'un autre côté, si ces outils sont présents, il n'est pas toujours facile de se souvenir lequel utiliser ni dans quelles conditions. J'espère qu'à la lecture de cet article les choses seront plus claires.

Pourquoi en ligne de commande?

Si vous êtes un habitué des interfaces graphiques, vous pouvez vous demander pourquoi s'embêter à taper des commandes alors qu'il est si simple de faire un clic-droit ou encore d'utiliser l'application adéquate. Je ne vais pas rentrer dans le débat CLI (Commande Line Interface – Interface en ligne de commande) contre GUI (Graphical user interface – Interface graphique) – mais je peux tenter de résumer en quelques mots les arguments en faveur de la ligne de commande:

Meilleur contrôle
Grâce à l'accès à toutes les options proposées par les outils – et pas seulement celles prévues dans l'interface graphique
Meilleurs performances globales
Non pas que les outils en ligne de commande soit de façon inhérente plus performants que les outils graphiques – mais l'utilisation d'une interface graphique impose évidemment un surcoût en terme de consommation de ressources. Surtout que dans le monde Unix/Linux ces interfaces ne sont souvent que des front-end qui finissent par appeler les utilitaires en ligne de commande.
Plus rapide
Encore une fois, il n'y a rien qui fasse qu'un outil graphique soit intrinsèquement plus lent à accomplir sa tâche. Mais il est souvent plus rapide et efficace de taper une commande avec les bons arguments que de cliquer à droite et à gauche dans les différents écrans d'un outil graphique un peu complexe. Cette différence peut être négligeable si l'interface graphique est bien conçue et s'il s'agit d'une activité ponctuelle. À l'inverse, si vous devez enchaîner plusieurs exécutions successives il devient vite fastidieux de faire encore et encore les mêmes manipulations avec la souris.
Automatisation
Si exécuter une action se limite à l'appel de commandes, il devient possible d'automatiser certains traitements à l'aide de scripts. Tout comme pour l'argument précédent, celui-ci prend toute son ampleur pour les tâches répétitives ou qui doivent être effectuées sans surveillance de la part d'un utilisateur.

Cas d'un disque de données (ISO)

Dans le contexte du stockage de données, on parle de fichier ISO par abus de langage pour désigner l'image disque d'un média au format ISO 9660. Je dis par abus de langage, car en réalité on parle souvent de fichier ISO pour n'importe quelle image disque prête à graver sur un support optique comme un CD ou un DVD. Même si cette image contient un système de fichiers autre que ISO 9660.

Pas pour l'audio!

On ne peut pas faire un ISO d'un CD audio, car ceux-ci n'utilisent pas un système de fichiers (au sens Unix du terme), mais un système de pistes dont les caractéristiques sont décrites dans la table des matières (TOC) du CD. Pour copier ou graver un CD audio, vous devrez donc utiliser une autre technique, décrite un peu plus loin.

Créer l'ISO à partir d'un disque existant

Comme un fichier ISO est en fait une copie secteur par secteur (à l'identique) dans un fichier du contenu d'un disque, sous Linux ou un système Unix-like il est possible d'utiliser la commande dd pour faire la copie d'un disque inséré dans un lecteur:

# Faire une image ISO du disque contenu dans le lecteur correspondant à /dev/cdrom
# et enregistrer cette image sous le nom /path/to/image.iso
sh$ dd if=/dev/cdrom of=/path/to/image.iso

Remarque:

Ici la source est /dev/cdrom. C'est le pseudo-fichier qui désigne le lecteur de CD-ROM sur ma machine. Par ailleurs, si vous avez plusieurs lecteurs optiques, il est probable qu'un nombre soit ajouté à la fin du périphérique pour les différencier les uns des autres: /dev/cdrom0, /dev/cdrom1, ...

Selon votre distribution ou le bus (USB, IDE, ...) auquel est relié le lecteur optique, ce fichier peut aussi avoir un autre nom (tel que /dev/sr0, /dev/sr1, ...). Si vous ne trouvez par le pseudo-fichier correspondant à votre périphérique, renseignez-vous dans la documentation de votre distribution. Sous Linux, vous pouvez aussi tenter d'installer udev, qui dans la plupart des distributions se charge de créer automatiquement le lien symbolique /dev/cdrom vers le pseudo-périphérique correspondant au lecteur de CD.

Créer l'ISO à partir du contenu d'un répertoire

Accessoirement, si vous voulez créer un fichier ISO à partir de données situées dans un répertoire de votre disque dur (par exemple pour faire un backup sur CD-RW), vous utiliserez plutôt genisoimage (qui remplace mkisofs sous Debian pour des raisons de licence):

# Faire une image ISO contenant l'ensemble des fichiers du répertoire /chemin/vers/mes/fichiers/
# et enregistrer cette image sous le nom /path/to/image.iso
sh$ genisoimage -o /path/to/image.iso /chemin/vers/mes/fichiers/

Graver l'image

Voilà, vous avez un fichier ISO – c'est à dire un fichier prêt à graver. Sous Debian l'utilitaire spécifique est wodim (qui remplace cdrecord pour des raisons de licence). Dans la commande ci-dessous, l'option speed est facultative. Elle représente le facteur de vitesse: ici, speed=10 grave à 10× la vitesse de base (soit environ 10×150Ko/s pour un CD-ROM). Si elle est absente, wodim tentera d'utiliser la vitesse la plus rapide disponible sur le graveur:

sh$ wodim -dao speed=10 dev=/dev/cdrom /path/to/image.iso

Attention:

Pour peu que vous disposiez des permissions nécessaires pour accéder au périphérique en écriture (c'est le cas en général), vous n'avez pas besoin d'être root pour graver votre disque.

Néanmoins, il est parfois préférable d'utiliser l'identité du super-utilisateur afin de permettre au programme de gravure d'augmenter sa priorité d'exécution – voire, sur les systèmes qui le permettent, d'adopter une priorité temps réel. Ainsi même si la charge du système est importante ou augmente brusquement pendant la gravure, il y a beaucoup moins de risques que le tampon (buffer) de gravure ne se vide – et par conséquent beaucoup moins de risques de gâcher un CD...

Cas d'un disque audio ou mixte données/audio

Extraire les données (ripping)

Définition: Ripping

Dans le jargon informatique, le ripping est le processus qui consiste à extraire les données d'un support optique (CD, DVD) pour les enregistrer sur un ordinateur. On emploie aussi fréquemment le verbe ripper.

Voir:

Si vous désirez copier ou graver un disque audio, la solution résiderait plutôt dans la commande readom:

sh$ readom dev=/dev/cdrom f=/path/to/image.raw

Personnellement, je n'ai jamais eu de grand succès avec cette commande. Je ne la mentionne donc ici pour mémoire (et parce qu'il y est fait référence dans l'aide en ligne de wodim).

Habituellement cdrdao donne de bien meilleurs résultats. La différence réside dans le fait que cdrdao, comme son nom l'indique, tente de lire le disque dans le mode Disk At Once. Cette commande extrait à la fois les données à proprement parler du disque, mais également sa table des matières (TOC) qui permettra ultérieurement d'en reconstituer une copie conforme (ou plus ou moins conforme comme l'indique le manuel):

# Extrait la table des matières d'un disque audio dans /path/to/image.toc
# et enregistre le contenu du disque dans /path/to/image.raw
sh$ cdrdao read-cd --device /dev/cdrom \
                   --datafile /path/to/image.raw /path/to/image.toc

Device or resource busy

Peut-être allez-vous rencontrer pour cette commande le message d'erreur suivant:

Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
ERROR: Unable to open SCSI device /dev/cdom: Device or resource busy.
ERROR: Please use option '--device {[proto:]bus,id,lun}{{|}}device', 
e.g. --device 0,6,0, --device ATA:0,0,0 or --device /dev/cdrom 
ERROR: Cannot setup device /dev/cdrom.

Cela signifie que le périphérique est déjà utilisé et que cdrdao ne peut pas en obtenir l'usage exclusif. Très vraisemblablement, c'est simplement que le disque est monté sur le système de fichiers. Par exemple, parce que votre ordinateur est configuré pour monter automatiquement les sessions de données des disques mixtes audio/données. La solution est de démonter le disque:

sh$ umount /dev/cdrom

A l'issue de cette commande, vous obtiendrez deux fichiers – tous deux nécessaires pour reconstituer une copie du disque:

sh$ ls -ls /path/to/image.*
341484 -rw-r--r-- 1 sylvain sylvain 349330800 2011-01-11 16:21 image.raw
     4 -rw-r--r-- 1 sylvain sylvain      1115 2011-01-11 16:21 image.toc

Définition: Authoring

Dans le jargon de l'audio-visuel et de l'informatique, l'authoring est le processus qui consiste à rassembler les données de différentes sources pour les transférer sur un média optique.

L'authoring recouvre à la fois les tâches de mastering et de gravure. Dans le cas de production à grande échelle, le master est transféré à un industriel chargé de réaliser le pressage du disque.

Voir:

Graver le disque (authoring)

À en juger par sa taille, on comprend que le fichier .raw contient bien le contenu du disque. Quand au fichier .toc, c'est un simple fichier texte qui décrit les caractéristiques du disque et de ses différentes pistes. Il s'agit d'un fichier texte qu'il est tout à fait possible d'ouvrir et modifier à l'aide d'un éditeur de texte. Les plus aventureux pourront même s'amuser à le modifier pour réordonner les pistes ou pour créer leurs propres compilations à partir de plusieurs images.

Une fois en possession de votre (vos) image(s) et de la table des matières du disque, il est possible de graver celui-ci, à nouveau à l'aide de cdrdao:

sh$ cdrdao write --device /dev/cdrom /path/to/image.toc

Mastering créatif

Dans la dernière commande, vous voyez qu'on précise le nom du fichier .toc mais pas celui du .raw. Ce n'est pas nécessaire, car cette information fait partie de celles contenues dans le fichier .toc:

sh$ head -19 /path/to/moby-hotel.toc
CD_DA


// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAJH0403048"
FILE "/path/to/moby-hotel.raw" 0 01:55:20


// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAJH0403048"
FILE "/path/to/moby-hotel.raw" 01:55:20 03:46:00

En jouant sur ceci, il devient possible de compiler à la gravure des pistes provenant de plusieurs fichiers .raw. En fouillant dans la documentation de cdrdao vous verrez qu'il est aussi possible d'incorporer lors de la gravure des données provenant d'autres sources, comme des fichiers WAVE.

Ressources