Graver des CD's

Sommaire

 

Prenons l'exemple du gars qui veut faire une copie de sauvegarde d'un CD audio.

Premièrement, il est vivement conseillé d'avoir un graveur SCSI, car c'est le seul type de graveur bien reconnu par Linux. Si vous possédez un graveur en IDE, pas de panique, vous pourrez certainement y arriver grâce à ce que l'on appelle un émulateur, c'est-à-dire un programme qui va "simuler" du SCSI, et Linux n'y verra que du feu... Cette partie ne sera pas traitée ici, car ayant un graveur SCSI, je n'ai pas eu à l'expérimenter, mais la doc ne manque pas à ce sujet.

 Deuxièmement, avant d'arriver à brûler un CDR avec une interface graphique comme Xcdroast, gcombust ou gtoaster, il va falloir se taper l'étude de ladite interface, avec ses nombreux boutons, ses champs à paramètrer, des " dev/hdc" ou " /mnt/cdrom " à rentrer à droite et à gauche. Tout ça pour s'apercevoir qu'aucune interface graphique de programme de gravure sous Linux ne permet d'écrire un CDR en vitesse 8x pour le moment. Qu'à cela ne tienne, on va utiliser le mode console...

Il suffit d'ouvrir un terminal et de suivre la procédure :

 

 
 
 
 
 

1°) Vérifier que l'on peut extraire et graver avec sa configuration.

Pour cela, on introduit un CDR audio dans le lecteur CDROM, et dans un terminal, on tape à la suite prompt (signe # nous invitant à saisir une commande) :

               cdparanoia -vsQ

cdparanoia est un programme livré avec toute distribution qui se respecte, et il permet l'extraction des pistes audio du disque.

 L'option -v affiche la progression du processus

          -s détecte le lecteur le plus adapté à extraire les piste audio (en général le lecteur CDROM ou DVD ROM)

           -Q affiche le contenu du CD : fichiers audio avec leur durée

Si la sortie de cette commande vous renvoie un résultat positif ( DVD ROM ATAPI etc...  ainsi que le contenu du CD introduit), on peut passer à la détection du graveur.

Il suffit juste de taper dans un terminal :   cdrecord -scanbus

          cdrecord est lui aussi distribué avec Linux, et permet comme son nom l'indique, d'écrire sur les CDR.

     L'option -scanbus détecte les bus SCSI

 Normalement, cette commande renvoie un truc du genre :    blabla...   scsi0 :  0, 1, 0   Yamaha .....

Cette ligne vous donne les coordonnées virtuelles de votre matériel SCSI :   0 : channel,   1:  ID,  0 : lun

On n'aura pas à modifier ces paramètres, c'est juste pour dire que tout va bien, mais attention si vous avez plusieurs périphériques  connetés sur votre carte SCSI, les réglages peuvent devenir plus délicats...

 

 
 
 
 
 

2°) Passer aux choses sérieuses...

 Si vous avez passé les étapes de détection matérielle sans trop de problème, ça devrait continuer ainsi pour la suite.

On place un répertoire nommé GRAVURE, de préférence sur la partiton /home de votre disque, pour ne pas encombrer la partition racine /  , sachant que les fichiers *.cdda.wav sont très volumineux.

On introduit un disque audio dans le lecteur détecté pour l'extraction audio-numérique, on ouvre un terminal et on tape :

          cdparanoia -B

 Cette commande va lancer l'extraction audio-numérique des pistes du CD sous la forme de fichiers track01.cdda.wav, track02.cdda.wav, etc...  dans le répertoire courant, c'est-à-dire dans /home/GRAVURE pour cet exemple.

On peut suivre la progression du processus, puisque celle-ci s'affiche automatiquement pour nous dire que chaque piste est extraite dans un fichier track*.cdda.wav.

On attend quelques minutes (ça dépend de la vitesse de votre lecteur extracteur ! ), et on peut vérifier la présence effective d'autant de fichiers *.cdda.wav dans /home/GRAVURE, qu'il y a de pistes sur notre disque : ça a marché !  Maintenant, il faut les graver.

On introduit un CDR vierge dans le graveur (attention à la durée de celui-ci !), toujours en mode console, et surtout dans le répertoire GRAVURE , on tape :

       cdrecord -v -dao dev=3,0  speed=8 track*.cdda.wav

   -v affiche la progression

  -dao  indique la gravure en mode disc-at-once (sans silence entre les pistes)

   dev=3,0  ou dev=0,3,0   vous reconnaissez les coordonnées virtuelles de votre graveur

   speed=8  indique la vitesse d'écriture (1,2,4,6,8...selon les possibilités de l'engin)

   track*.cdda.wav  indique les fichiers du répertoire courant qui doivent être écrits.

 Normalement, à ce stade, vous serez fixés dans quelques secondes : si ça ne marche pas, tout s'arrête, et Linux vous le dit.

Si c'est bon, le processus continue, et l'affichage vous renseigne sur la progression de l'opération... et surtout vous entendez le  son chirurgical de votre laser en train de griller la surface du CDR encore vierge. C'est magnifique, ça marche, même en vitesse 8x !

ATTENTION :

 Il se peut que l'extraction provoque la création d'un fichier track00.cdda.wav, ce qui posera problème, car les pistes doivent avoir une taille multiple de 2352 Ko, ne cherchez pas pourquoi, c'est comme ça.  On règle cet inconvénient en ajoutant l'option -pad dans notre ligne de commade, qui devient donc :  cdrecord -v -dao -pad dev=3,0  speed=8 track*.cdda.wav

Alors, toujours perplexe quant à l'avantage du travail en ligne de commande ? Qui peut faire ça sous Windown ou sous DOS ?

De plus, on peut faire les mêmes manips' en mode console virtuelle (attention pas pareil que le terminal sous X Window, Voir Rubrique  Base/Modes console et interfaces graphiques )), en appuyant sur Alt+Ctrl+F1.

 Ou bien on sort carrément de X Window en choissant l'option "mode console" à l'interface de connection graphique.

Dans tous les cas, ne vous inquiétez pas, ça marchera, car Linux est puissant et très souple !

 

Options d'expert pour l'extraction audionumérique 

Il arrive souvent que l'on veuille n'extraire qu'une partie d'une piste (pour raison de pas assez de place sur la galette ou autre...). Nous allons ici détailler quelques trucs partiques. Par exemple, pour extraire les pistes 5 à 9 d'un disque, on tapera dans un terminal :

 cdparanoia 5-9 tandis que cdparanoia -4 n'extrait que les pistes 1 à 4, et cela dans un seul et  unique fichier cdda.wav.

On peut avoir besoin de préciser le point de départ au niveau même de la piste, exprimé en heures, minutes, secondes, et format de secteur : [hh:mm:ss.ff] 

Les champs laissés vides correspondent évidemment à des valeurs nulles, ainsi [10:] signifie 10 minutes, [::20], [:20], [20] et [20.] seront tous interprétés comme 20 secondes et [.35] correspond à 35 secteurs, et [20.35] à 20 secondes et 35 secteurs. Le plus couramment, on utilise le format minutes/secondes de la forme [10:20].

Ainsi, on a  cdparanoia -- "-13[6:]" qui demande d'extraire du début du disque (piste 1) jusqu'à la piste 13, plus 6 minutes (la piste 13 faisant 10 minutes par exemple). Attention, le tout sera placé dans le répertoire courant, dans un fichier nommé cdda.wav. Pour les placer dans des fichiers séparés, on saisira plutôt :

 cdparanoia -B -- "-13[6:]" 

cdparanoia "1[30.]-1[3:25]" extrait un morceau de la piste 1, en commençant après 30 secondes écoulées, jusqu'à 3 min 25 sec.

cdparanoia "1[30.]-" extrait de la piste 1, écoulée de 30 secondes, juqu'à la fin du disque.

 

 

3°) Le script bash  (c'est un petit programme qui utilise les commandes du shell (interpréteur de commandes passées dans un terminal). On le créé avec un simple éditeur de texte.)

On peut "automatiser" cette affaire de gravure, même à notre niveau de débutant (il faut bien expérimenter pour progresser...!)

Nous allons créer un petit script bash, qui va dans un premier temps extraire les pistes audio du CD original, puis dans un second temps, graver ces pistes sur un disque vierge, sans l'intervention de l'utilisateur entre les deux opérations. C'est t'y pas génial...? ! 

Oui, mais vous me direz, plus haut j'ai parlé d'une histoire de track00 qui nécessitait une option -pad dans la ligne de commande cdrecord.

Il faut donc tester la présence de ce fichier track00.cdda.wav, et adapter la ligne cdrecord en fonction du résultat : bien vu les p'tits loups !

Donc, on tape ouvre un éditeur de texte quelconque, et on tape :   (les lignes précedées de # sont des commentaires, sauf la première !)

#!/bin/bash

# Extraction audio-numérique des pistes

cdparanoia -B

# test de la présence de track00.cdda.wav

if test -e track00.cdda.wav                                              ( teste si on a un fichier track00.cdda.wav présent)

then cdrecord -v -dao -pad dev=3,0 speed=8 track*.cdda.wav   ( alors cdrecord avec -pad)

else cdrecord -v -dao dev=3,0 speed=8 track*.cdda.wav          ( sinon cdrecord sans -pad)

# Voilà, c'est tout !!

NB : test est une fonction qui renvoie un booléen (0 ou 1, vrai ou faux). Mais avec le shell linux, nous avons à faire à des codes d'erreurs, donc si la condition est vérifiée, la sortie est 0 (pour signifier : pas d'erreur).

On enregistre sous le nom de afew (pour AudioFilesExtractWrite, c'est de moi),

puis  :   chmod +x afew    dans un terminal pour le rendre exécutable....

Il faut toujours placer afew dans le répertoire de travail dans lequel on veut extraire les pistes audio....

On vérifiera qu'il n'y a pas d'autres fichiers *.wav ou *.cdda.wav  (résidus d'une autre extraction)

S'il y a un problème, à partir du moment où les pistes ont au moins été extraites jusqu'aubout avec cdparanoia,

on peut utiliser cdrecord "normalement"...

Pour exécuter afew :    ./afew

Il y aura alors extraction des pistes audio, puis enchaînement direct avec l'écriture des fichiers track*.cdda.wav

sur le disque vierge. Ce petit script peut bugger, mais il a fonctionné 7 fois sur 10 quand je l'ai utilisé.

Il existe bien sûr la solution plus directe, qui consiste à brûler la galette à la volée. La commande suivante saisie dans un terminal réalise cette opération : 

cdrecord -v -dao dev=3,0 speed=8 /dev/hdc qui indique au matériel de graver le contenu de /mnt/cdrom à la vitesse 8x, sur l'appareil détecté aux coordonnées 3,0 en mode disc-at-once, avec affichage de la progression des opérations.

 

Graver à l'aide d'une image générée par mkisofs

Il est possible de graver un ensemble de fichiers, en créant dans un premier temps une image des fichiers avec le prog' mkisofs, puis en gravant cette image sur le CD vierge avec cdrecord. Nous verrons ici comment réaliser un CD monosession, et comment effacer un CDRW (disque réinscriptible).

Je vous invite à lire les pages man de mkisofs avec : man mkisofs , car il y a de nombreuses options (comme souvent sous linux...) qui permettent de créer différents types de CD : Joliet (microsoft) , Rockridge... Pour le moment, nous créons un CD au format iso9660, en une seule session (monosession).

Imaginons tout d'abord que nous voulons faire une sauvegarde des fichiers contenus dans un dossier /root/moms.

On va créer une image *.iso à partir de tous ces fichiers, avec la commande suivante saisie dans un terminal : 

mkisofs -o nom.iso -J -r -v /root/moms ceci va créer un fichier nom.iso, dans le répertoire courant, à partir de tous les fichiers contenus dans /root/moms. -J indique un format Joliet, -r un format Rockridge et -v affiche la progression du processus. Le CD devrait donctourner à la fois sous Win et sous Linux.

 

Pour graver cette image, on tape : 

cdrecord -v dev=3,0 speed=8 nom.iso

NB : on peut monter l'image iso avant de la graver, afin de vérifier qu'elle est "correcte", avec la commande : 

mount -o loop nom.iso /mnt/iso 

Il faut au préalable créer le répertoire /mnt/iso, pour pouvoir visualiser le contenu de nom.iso, tout comme le répertoire /mnt/cdrom permet de visualiser celui d'un CDROM. Ceci s'avère donc très pratique. 

 

Pour effacer un CDRW, c'est très simple, il suffit d'introduire le CD réinscriptible, et de taper dans un terminal :

cdrecord blank=all dev=3,0

Pour faire un CD mutlisession, c'est un peu plus compliqué, et nous verrons ça plus tard.

 

Sommaire