|
Il y a actuellement 7 visiteurs connectés sur le site !
Graver en ligne de commande
|
Graver en ligne de commande
|
|
Introduction
Pour exploiter pleinement les possibilit�s de gravure sous Linux, il est n�cessaire de conna�tre quelques rudiments sur les outils de base dont les principaux sont cdrecord , cdrdao, cdparanoia, readcd et cdparanoia.
Tous les logiciels graphiques destin�s � la gravure ne sont en fait que des interfaces qui utilisent ces outils.
Ces programmes figurent normalement sur toute distribution.
Les quatre premiers programmes font partie du package cdrtools dont les sources sont disponibles ici ou encore sur cette page qui contient d'autres informations, notamment une liste des graveurs compatibles.
Note de Jice : sous Mandrake, les packages correspondants sont cdrecord, cdrdao et cdparanoia.
Configuration de la machine
Pour graver, il faut disposer d'un graveur SCSI ou d'un graveur IDE avec une �mulation SCSI.
Le noyau
Note de Jice : Si vous avez une distribution r�cente (Mandrake 8.x, etc.), vous pouvez passer ce paragraphe.
Pour cela, dans la configuration du noyau, les options suivantes doivent �tre activ�es (par exemple en module) :
* SCSI emulation support (le module ide-scsi.o dans la rubrique ATA/IDE/MFM/RLL support de IDE/ATA and ATAPI Block devices pour un noyau 2.4.17 ou dans la rubrique Block devices pour d'autres noyaux)
* SCSI support (le module scsi_mod.o dans la rubrique SCSI support)
* SCSI CD-ROM support (le module sr_mod.o dans la m�me rubrique ; celui-ci n'est pas indispensable pour la gravure mais est n�cessaire pour pouvoir monter le p�riph�rique)
* SCSI generic support (le module sg.o dans la m�me rubrique)
Il peut aussi �tre utile d'activer l'option Loopback device support dans la rubrique Block Devices. Ceci permet de monter les images de disques afin d'en visualiser le contenu.
L'�mulation SCSI
Enfin, il faut ajouter une entr�e du type append="hdc=ide-scsi" dans le fichier /etc/lilo.conf (quelque part sous la ligne image=fichier_du_noyau).
Pour obtenir le nom du fichier de p�riph�rique du graveur (hdc dans l'exemple ci-dessus), on tape dmesg|less dans une console et on rep�re une ligne du type hdc: nom du graveur.
Enfin, pour activer l'�mulation SCSI, il suffit de charger le module ide-scsi par la commande modprobe ide-scsi (les autres modules seront charg�s automatiquement si l'option Kernel module loader de la rubrique Loadable module support est activ�e dans le noyau).
Dans certaines situations, il est n�cessaire de disposer �galement d'un lecteur de CD-Rom SCSI (ou �mul�).
C'est le cas par exemple pour la copie directe de Cd-Rom audio avec cdrdao.
Pour qu'un lecteur ou un graveur IDE soit �mul� en SCSI, il suffit de modifier l'entr�e dans le fichier /etc/lilo.conf pour obtenir quelque chose du genre :
append="hdc=ide-scsi hdd=ide-scsi" avec ici hdc le lecteur de Cd-Rom et hdd le graveur (selon la configuration).
Les p�riph�riques seront alors accessibles, selon les distributions, � travers /dev/scd0 et /dev/scd1 (ou /dev/sg0 et /dev/sg1, cela d�pend des distributions), au lieu de /dev/hdc et /dev/hdd.
La plupart des programmes ne sont utilisables qu'en mode super-utilisateur.
Pour les utiliser en mode utilisateur, on peut utiliser par exemple la commande sudo, ou su.
Obtenir l'adresse SCSI du graveur
Avant toute chose, il faut obtenir cette information en interrogeant le bus SCSI. Pour cela, on tape dans une console :
cdrecord -scanbus
Celui-ci va renvoyer un certain nombre de lignes du type :
0,0,0 0) 'Nom du graveur' Removable Cd-Rom
Ce sont les trois premiers chiffres qui nous int�ressent.
Ces trois chiffres correspondent respectivement au num�ro de l'adaptateur (scsibus), au num�ro d'identification du p�riph�rique ou de la cible (target) et au num�ro d'identification dans la cha�ne SCSI (lun, Logical Unit Number).
Ces trois chiffres seront indispensables pour la suite.
Par exemple, le programme cdrecord devra toujours �tre lanc� avec l'option dev=x,y,z avec x le premier chiffre (scsibus), y le deuxi�me (target) et z le troisi�me (lun).
En fait, s'il n'y a qu'un seul bus SCSI, il suffit d'entrer les deux derniers.
Ainsi, si les trois chiffres sont 0,1,0, on entrera cdrecord dev=1,0 etc.
Par la suite, on utilisera la notation dev=y,z et il faudra remplacer y et z par leur valeur.
C'est la m�me chose avec le programme readcd (on entrera donc readcd dev=y,z etc).
Pour cdrdao, l'option s'�crit --device y,z. Il est possible �galement que le programme ne reconnaisse pas votre graveur. Choisissez alors un pilote dans la liste qu'il proposera dans ce cas (par exemple, l'option --driver generic-mmc).
Attention : vous pouvez tr�s bien avoir plusieurs bus SCSI sans le savoir. Par exemple, si vous utilisez le module usb-storage (pour un lecteur ZIP USB), celui-ci cr�e un bus SCSI.
Et bien s�r, si vous avez une carte SCSI, vous avez encore un autre bus SCSI. Bref, dans ce cas, vous devrez donner en param�tres aux programmes les 3 chiffres. Par exemple cdrecord dev=0,1,0.
Configuration des programmes
Le programme cdrecord lit un fichier de configuration dans un fichier nomm� /etc/default/cdrecord.
Si l'on doit passer souvent les m�mes param�tres, il est pratique de les entrer dans ce fichier (si d'autres valeurs de param�tre sont pass�es en ligne de commande par la suite, celles du fichier correspondantes seront ignor�es).
Par exemple, si l'on grave � partir du m�me p�riph�rique dont les num�ros SCSI sont x,y,z, alors il faut cr�er le r�pertoire /etc/default s'il n'existe pas ainsi que le fichier /etc/default/cdrecord (par exemple, en tapant touch /etc/default/cdrecord), et saisir dans ce fichier la ligne :
CDR_DEVICE=x,y,z
La page de manuel explique les autres options pour ce fichier.
En ce qui concerne cdrdao, ces options sont stock�es dans le fichier cdrdao.conf dans le r�pertoire /etc (on peut aussi le placer dans /etc/defaults/cdrdao ou utiliser le fichier $HOME/.cdrdao).
Oui, les pages de man indiquent bien /etc/default/cdrecord pour cdrecord (default sans 's') et /etc/defaults/cdrdao pour cdrdao (default avec un 's')...
Un petit lien symbolique (cr�� par : ln -s /etc/default /etc/defaults) permet d'avoir tout dans le m�me r�pertoire.
Si l'on utilise un graveur en x,y,z, g�r� par le pilote generic-mmc, alors ce fichier doit avoir la forme :
write_device: "x,y,z"
write_driver: "generic-mmc"
read_driver: "generic-mmc"
Tout ceci est expliqu� dans la page de manuel.
On peut �galement entrer les informations sur le lecteur (par exemple read_device=0,1,0).
Il ne faut toutefois pas saisir cette ligne si l'on compte lire et copier un disque � partir du seul graveur car la commande copy de cdrdao ne fonctionne pas si les param�tres source-device et device ont les m�mes valeurs.
Dans ce cas, il faudra pr�ciser le p�riph�rique pour les commandes de lecture comme read-cd ou read-toc (par exemple, l'option --device y,z).
Quelques commandes utiles
D�bloquer le graveur
Si pour une raison ou pour une autre le graveur ne r�pond plus � aucune commande, renvoie des messages d'erreur et refuse de s'ouvrir m�me ne appuyant sur le bouton d'�jection, alors vous pouvez utiliser cdrdao pour le r�initialiser :
cdrdao unlock --device y,z
Effacer un CD-RW.
Pour effacer un disque, utilisez cdrecord :
cdrecord dev=y,z blank=fast
ce qui lancera un effacement rapide du disque (il efface notamment la TOC, la PMA et les marques d'intervalle entre pistes, ce qui est g�n�ralement suffisant).
Pour effacer compl�tement le disque, il faut remplacer l'option fast par all
Obtenir de l'information sur le Cd-Rom
Avant de graver un Cd-Rom de donn�es, il est important d'obtenir quelques informations, notamment pour savoir s'il s'agit d'un disque mono-session ou multi-sessions.
On entre alors dans une console :
cdrdao disk-info --device y,z
Il faut pour cela utiliser le graveur (un lecteur de Cd-Rom n'est g�n�ralement pas capable d'extraire ces informations).
Ceci va permettre de savoir notamment s'il s'agit d'un disque r�inscriptible (CD-RW: yes), si le disque est vide (CR-R empty: yes,) s'il est fix� (appendable: no, on ne peut plus rien ajouter; dans ce cas, le programme renvoie �galement le d�but de la nouvelle session et la capacit� restante sur le disque) et de conna�tre la capacit� totale du disque, la plage de vitesse acceptable (pour un disque r�inscriptible), le nombre de sessions et le num�ro de la derni�re piste (si le disque ne comporte qu'une seule session, ceci correspond au nombre de pistes sur le disque).
Structure d'un Cd-Rom
Sur un Cd, les informations sont grav�es en spirale en partant du centre sur des pistes, elles-m�mes regroup�es dans une session. Ainsi, un disque contient au moins une session comprenant au moins une piste. Beaucoup de graveurs n'acceptent de graver des pistes que si leur dur�e est d'au moins 4 secondes ou 300 secteurs.
En effet, l'unit� de base sur un disque est le bloc ou secteur qui occupe 2352 octets, qu'il s'agisse de musique ou de donn�es (l'occupation n'est toutefois pas la m�me).
Lorsqu'il s'agit de Cd de donn�es, un secteur repr�sente toujours 2352 octets mais seuls 2048 d'entre eux sont utilis�s pour stocker les donn�es, le reste �tant utilis� en grande partie pour la correction d'erreurs.
Ainsi, pour stocker un Mo de donn�es, soit 1024000 octets (1 Ko repr�sente 1024 octets), il faudra 1024000/2048=500 secteurs.
Sur un disque audio, les 2352 octets d'un secteur sont occup�s par la musique car la correction d'erreurs s'effectue � un autre niveau sur le disque (les couches C1 et C2 d'apr�s les sp�cialistes).
La conversion analogique-num�rique s'effectue par �chantillonnage. Le Red Book (norme qui sp�cifie le standard des disques audio) pr�cise que la fr�quence d'�chantillage doit �tre de 44100 Hz (hertz) ce qui repr�sente 44100 �chantillons par secondes, et que chaque �chantillon doit �tre au format 16 bit, st�r�o, PCM ("Pulse Code Modulation").
Ceci permet de reproduire des sons d'une fr�quence variant entre 0 et 20000 Hz, avec une petite marge, qui est la fr�quence audible de l'oreille humaine.
D'apr�s certains How-To, pour repr�senter correctement un son d'une fr�quence F, il faut une fr�quence d'�chantillonage d'au moins 2F Hz (ceci doit �tre la cons�quence entre autre du th�or�me de Shannon qui indique que l'on peut reproduire un signal qui contient des fr�quences inf�rieures � F si on le conna�t aux instants multiples de 1/2 F).
Au total, une seconde de musique repr�sentera 44100x16x2=1411200 bits, soit 1411200/8=176400 octets, soit encore 176400/2352=75 blocs ou secteurs.
Les disques audio ne contiennent en g�n�ral qu'une seule session car les lecteurs ne sont capables que de lire la premi�re session.
Il est toutefois possible de cr�er des disques m�langeant des pistes de donn�es ou des pistes audio. C'est le cas par exemple des Cd mixtes qui contiennent en g�n�ral une piste de donn�es et des pistes audio (par exemple, des Cd de jeux).
C'est le cas �galement des Cd Extra qui contiennent une premi�re session audio et une deuxi�me session de donn�es. Ceci se r�v�le pratique pour stocker des informations relatives � la musique enregistr�e, par exemple des fichiers video, sans que le lecteur audio n'affiche la piste comme une autre piste audio (le lecteur n'a acc�s qu'� la premi�re session audio et ne voit pas la session de donn�es qui reste n�anmoins accessible par un ordinateur). Ce n'est pas le cas avec un Cd mixte: la premi�re piste est consid�r�e comme une piste audio par un lecteur (on pourrait cr�e une premi�re session pour les donn�es et une deuxi�me pour l'audio mais la deuxi�me session ne serait pas accessible par le lecteur audio).
Chaque session contient une zone de donn�es dans laquelle sont stock�es les pistes de donn�es ou les pistes audio. Elle est pr�c�d�e d'une en-t�te, le Lead-In, qui contient la TOC ("Table of Contents" ou Table des Mati�res) ainsi que l'adresse �ventuelle de la prochaine session. Elle se termine par une zone de fin, le Lead-Out qui ne contient rien mais sert � indiquer la fin de session. Cette zone de fin occupe 6750 secteurs pour la premi�re session et 2250 pour la suivante.
La zone d'en-t�te n'est �crite que lorsque la session est cl�tur�e et peut occuper jusqu'� 4500 secteurs. Tant que la session n'est pas finie, la TOC est �crite dans la PMA ("Program Memory Area" ou Zone de M�moire Programme).
La Table des Mati�res contient la longueur totale de la zone de donn�es, le nombre de pistes et l'adresse de ces pistes sur le disque.
Il existe deux grandes fa�ons de cr�er un disque: le mode Track At Once (une piste � la fois) ou le mode Disc At Once (le disque en une seule fois).
En mode Track At Once (TAO), on �crit les pistes une par une. En fait, le graveur �teint le laser � la fin de chaque piste ce qui laisse quelques secteurs vides entre les pistes qui en g�n�ral sont silencieux (des run-in et run-out).
Cette m�thode est utile si l'on souhaite par exemple graver quelques pistes d'un disque et rajouter quelques pistes plus tard. Dans ce cas, il ne faut pas fermer la session mais le disque ne pourra �tre lu par un lecteur audio car la TOC ne sera pas g�n�r�e.
Cette m�thode est dans certains la seule possible avec certains anciens graveurs. En outre certains d'entre eux laissent automatiquement un espace de 2 secondes entre les pistes.
En mode Disc-At-Once (DAO), les pistes sont grav�es en une seule fois sans que le laser ne soit �teint. Ceci permet d'obtenir des disques sans espace entre les pistes (par exemple un concert).
C'est la m�thode la plus s�re pour r�aliser une copie qui soit la plus proche possible de l'original.
Il existe �galement un mode dit Session At Once (une session � la fois), qui est une variante du mode DAO. Par exemple, on grave en une seule fois une premi�re session audio en mode multissesion et l'on grave ensuite une deuxi�me session de donn�es afin de cr�er un Cd-Extra (on peut �galement de graver une premi�re session de donn�es en mode DAO, mais cela ne semble pas possible pour une autre (cdrecord refuser cela).
Graver une image ISO
En ces temps de connexion internet par ADSL ou c�ble, les personnes qui peuvent t�l�charger des images ISO (c'est � dire un fichier contenant l'image de ce qui se trouve sur un CD) sont de plus en plus nombreuses.
On peut par exemple t�l�charger les CD d'une distribution Linux, etc.
Graver l'image ISO
Oui, mais... Comment graver le fichier image.iso ?
Une ligne de commande suffit :
cdrecord -v -dao speed=8 dev=x,y,z /chemin/image.iso
avec :
* speed : la vitesse du graveur 8 pour 8x par exemple,
* dev : l'adresse sur le bus SCSI du graveur, obtenue avec la commande cdrecord -scanbus
Si vous avez aussi t�l�charg� le fichier md5sums (lorsqu'il existe), vous pouvez tester votre image avant de la graver par la commande :
md5sum -c md5sums
Note 1 : Sous Windows, utilisez votre logiciel de gravure, et choisissez la fonction "graver une image". Ouvrez alors le fichier contenant l'image ISO, et gravez-le.
Il para�t que Nero (Les fichiers .nrg de Nero seraient en fait des images ISO) et Easy CD Creator savent le faire.
Note 2 : une erreur classique consiste � graver le fichier image.iso sur le syst�me de fichiers du CD (i.e. le CD contient un seul fichier, votre image ISO). Dans ce cas, vous pouvez toujours vous en servir en montant le CD, puis en montant l'image en loopback, mais c'est de la bidouille, et surtout c'est fichu pour booter sur le CD (ex : CD d'une distribution Linux).
Tester l'image ISO
Il est en effet possible de monter l'image dans un r�pertoire pour en v�rifier le contenu.
Par exemple, pour monter l'image dans le r�pertoire /mnt/cdrom, on fera :
mount image.iso -t iso9660 -o loop,ro /mnt/disk
et il suffira d'aller visiter le r�pertoire /mnt/disk pour consulter le contenu de notre image ISO.
Cr�ation d'un disque de donn�es
Pour l'instant, on ne s'int�resse qu'� la cr�ation d'un disque mono-session pour sauvegarder des donn�es stock�es sur le disque dur (voir plus loin pour la cr�ation d'un Cd-Rom multi-sessions).
Il existe pour cela deux m�thodes : soit on passe par la cr�ation d'une image sur le disque qui est ensuite grav�e sur le Cd-Rom, soit on grave directement les donn�es � partir des fichiers pr�sents sur le disque dur.
Par ailleurs, qu'il s'agisse d'un disque mono ou multi-sessions, chaque session ne doit comporter qu'une seule piste.
Cr�ation d'une image ISO-9660
On a vu ci-dessus comment graver une telle image, mais il est bien plus int�ressant de cr�er soi-m�me ses propres CD !
La m�thode consiste � cr�er une image disque � partir des donn�es � sauvegarder, c'est-�-dire un fichier qui pourra �tre reconnu par le logiciel de gravure, et qui repr�sente le futur contenu d'un CD. On utilise pour cela le programme mkisofs. Par exemple, si l'on souhaite faire une image nomm�e image.iso contenant les fichiers du r�pertoire /home/copie, alors on fera :
mkisofs -R -o image.iso /home/copie
On peut ignorer les �ventuels messages du type
Using FICH000.TXT;1 for /home/copie/fichier.txt~ (fichier.txt)
Ceci signifie qu'il existe un fichier nomm� fichier.txt et un autre nomm� fichier.txt~ (qui est par exemple une sauvegarde du premier r�alis�e par Emacs).
Le programme mkisofs fait cette transformation pour que le syst�me de fichier soit conforme � la norme ISO-9660 mais l'extension Rock Ridge assure que le fichier sera visible � la lecture sous sa forme initiale (en fait, le fichier fichier.txt est sauvegard� sous le nom FICHI000.TXT dans l'arborescence du disque et le ;1 signifie qu'il s'agit d'une version du premier).
L'image sera alors grav�e par :
cdrecord -v -dao speed=8 dev=y,z image.iso
Si cdrecord n'est pas lanc� � partir du r�pertoire dans lequel se trouve le fichier image.raw, il faut pr�ciser le chemin.
L'option -v est optionnelle. Elle active le mode bavard ( verbose ) ce qui permet de voir la progression du processsus de gravure.
L'option -dao est �galement optionnelle. Elle permet de graver l'image en mode Disc at Once. Si elle n'est pr�sente, le Cd-Rom sera grav� en mode Track at Once et le graveur ajoutera � la fin de la piste 2 blocs qui seront illisibles, ce qui peut poser des probl�mes si l'on veut par la suite faire une image de ce disque (ce probl�me peut toutefois �tre facilement r�solu, voir plus loin).
L'option speed=8 s�lectionne une vitesse de 8x. Si cette option n'est pas pr�cis�e, cdrecord va essayer de lire la vitesse acceptable sur le disque (celle-ci est inscrite sur les CD-RW mais pas sur les CD-R). Au demeurant, si l'on entre une vitesse sup�rieure � celle acceptable par le support, le programme va automatiquement l'ajuster. Toutefois, si aucune vitesse n'est inscrite, le disque risque d'�tre inutilisable.
De fa�on g�n�rale, la syntaxe de mkisofs est la suivante :
mkisofs options r�pertoire_�_sauvegarder
Ici, l'option -o image.iso signifie que l'image portera le nom image.iso et sera stock�e dans le r�pertoire courant (si l'on veut stocker l'image ailleurs, il faut pr�ciser le chemin). Le nom de l'image est peu important. Il faut seulement savoir que cdrecord est par d�faut lanc� avec l'option -data qui indique qu'il s'agit d'un Cd de donn�es (CD-Rom mode 1) sauf si l'extension du nom de l'image .au ou .wav auquel cas cdrecord est lanc� avec l'option -audio.
L'option -R signifie que l'on utilise l'extension Rock Ridge du syst�me de fichiers, qui d�finit l'organisation des donn�es sur le Cd-Rom. init
ialement, la premi�re norme d�finissant un syst�me de fichiers pour Cd-Rom est la norme ISO-9660 qui, au niveau 1, n'autorise notamment que des noms de fichiers comportant 8 caract�res (en majuscules) avec une extension de 3 caract�res (le format 8.3). Il existe par ailleurs un certain nombre d'autres restrictions.
L'extension Rock-Ridge a �t� mise en place en 1990 pour les syst�mes Unix. Elle autorise les noms de fichiers longs (jusqu'� 255 caract�res), les liens symboliques et permet de sauvegarder les identifiants d'utilisateur et de groupe ainsi que les permissions.
Attention : un tel disque ne sera par lu correctement sous Windows. Les noms de fichiers n'appara�tront qu'avec 8 caract�res. Si l'on veut que le Cd-Rom soit �galement lisible sous ce syst�me, il faut ajouter l'option Joliet (noms longs sur CD-Rom pour windows) avec : -J (mkisofs -R -J etc).
On peut si l'on pr�f�re utiliser l'option -r � la place de l'option -R. Avec celle-ci, les identifiants d'utilisateur et de groupe sont mis � z�ro (ce qui correspond � l'utilisateur et au groupe Root). En effet, l'option -R sera utile si le disque est lu sur la m�me machine mais donnera des r�sultats non souhaitables s'il est lu sur une autre machine (par exemple, des fichiers appartiendront � un utilisateur inconnu si le num�ro d'identifiant ne correspond � aucun utilisateur ou � un utilisateur qui aura le m�me num�ro que celui de la machine d'origine, ce qui n'est probablement pas ce que l'on souhaite).
L'option -r active �galement les droits en lecture pour tous, supprime tous les droits en �criture et autorise l'ex�cution pour tous si elle est autoris�e pour un (propri�taire, groupe ou autres) sur le fichier initial.
Il est possible de cr�er une image � partir de plusieurs r�pertoires. Par exemple, si l'on veut sauvegarder l'ensemble des fichiers des r�pertoires /home/rep1 et /home/rep2, alors on fera :
mkisofs -o image.iso /home/rep1 /home/rep2
Quelques options pratiques de mkisofs
* L'option -no-bak exclut tous les fichiers qui contiennent les caract�res ~ ou # ainsi que les fichiers qui se terminent par .bak.
* L'option -m permet d'exclure certains fichiers. Par exemple, si l'on veut exclure de l'image les fichiers /rep/file1 et /rep/file2, on lancera mkisofs avec les options -m /rep/file1 -m /rep/file2. Pour exclure tous les fichiers qui se terminent par .ext, on utilisera l'option -m '*.ext'.
* L'option -exclude-list permet d'exclure une liste de fichiers contenus dans un fichier. Par exemple, on cr�era un fichier nomm� liste, contenant un ensemble de fichiers (un fichier par ligne) et on lancera mkisofs avec l'option -exclude-list liste.
* L'option -x permet d'exclure un r�pertoire. Par exemple, pour exclure les r�pertoires /home/rep1 et /home/rep2, on utilisera l'option -x /home/rep1 -x /home/rep2.
* Enfin, l'option -graft-points permet de cr�er une arborescence sur le Cd-Rom. Par exemple, si l'on souhaite sauvegarder les fichiers des r�pertoires /home/dir1 et /home/dir2 et que l'on souhaite les mettre respectivement dans les r�pertoires /rep1/sous_rep1 et /rep2/sous_rep2, alors on lancera mkisofs avec l'option -graft-points
/rep1/sous_rep1=/home/dir1 /rep2/sous_rep2=/home/dir2 .
Ceci fonctionne aussi avec les fichiers. Ainsi, l'option -graft-points /home/dir1/readme=/rep1/readme.txt copiera le fichier readme du disque en fichier readme.txt dans le r�pertoire rep1.
Il existe beaucoup d'autres options qui sont document�es dans la page de manuel.
Il convient de signaler �galement que mkisofs est par d�faut lanc� avec l'option -pad qui rajoute 16 blocs ou secteurs � la fin de la piste (soit 32ko) et en ajoute un certain nombre pour que la taille de l'image soit un multiple de 16. D'apr�s la documentation, ceci est n�cessaire pour assurer une lecture correcte des derniers fichiers du Cd-Rom sous Linux.
Attention : tous les fichiers seront sauvegard�s � la racine du CD (voir plus loin l'option -graft-points si l'on veut recr�er une arborescence diff�rente sur le disque).
Il est possible de monter l'image dans un r�pertoire pour en v�rifier le contenu. Par exemple, pour monter l'image dans le r�pertoire /mnt/cdrom, on fera :
mount image.iso -t iso9660 -o loop /mnt/disk
Gravure directe des donn�es
La m�thode consiste � rediriger directement la sortie de mkisofs vers cdrecord sans passer par un fichier image interm�diaire. Il faut auparavant obtenir la taille de l'image � graver. Pour cela, si les donn�es � sauvegarder se trouvent par exemple dans le r�pertoire /home/copie , on tape dans une console :
mkisofs -R -q -print-size /home/copie
L'option -R sert � cr�er une image au format Rock Ridge, l'option -q (quiet) sert � limiter les informations qui seront affich�es et l'option -print-size va donner la taille de l'image.
Ceci renvoie la taille de l'image en nombre de secteurs. On relance ensuite mkisofs en redirigeant la sortie standard vers cdrecord. Par exemple, si la taille de l'image est de 1000 blocs, on saisira :
mkisofs -R /home/original 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=1000s -
La directive 2>/dev/null permet de rediriger les messages de mkisofs (la sortie stdout) vers le p�riph�rique vide /dev/null afin qu'ils ne soient pas affich�s (ceci n'est pas indispensable).
Les options -v et -dao sont optionnelles.
L'option tsize permet de sp�cifier la taille de l'image.
Le "s" � la fin sert � sp�cifier qu'il s'agit de secteurs (ou blocs). Si on l'omet, il faut sp�cifier la taille en octets (1 secteur ou bloc est �quivalent � 2048 octets de donn�es).
Enfin le signe - � la fin est obligatoire et permet de dire � cdrecord de rechercher les donn�es dans la sortie de mkisofs.
Certains graveurs acceptent de graver sans conna�tre la taille de l'image. Dans ce cas, il est inutile de pr�ciser l'option tsize (cela risque malgr� tout de ne pas fonctionner en mode DAO).
Si l'on souhaite automatiser cela dans un script, on peut utiliser une variable pour stocker la taille de l'image. Par exemple, on pourra avoir quelque chose du type :
taille=`mkisofs -R -q -print-size /home/copie`
Le symbole ` est obtenu par Alt Gr 7.
On r�cup�re l'information dans cdrecord par :
mkisofs -R /home/copie 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=${taille}s -
Copie d'un Cd-Rom de donn�es
Il existe deux m�thodes pour cela : la copie directe d'un lecteur vers le graveur et la copie indirecte par cr�ation d'images.
Avant de commencer, il faut s'assurer qu'il s'agit d'un disque mono-session (le cas d'un disque multi-session est abord� plus loin). En effet, si le disque comporte plusieurs sessions, seule la premi�re sera copi�e. Utilisez cdrdao avec l'option disk-info pour obtenir le nombre de sessions sur le disque (utilisez le graveur pour que cdrdao lise les informations).
Copie d'un Cd-Rom de donn�es
Copie avec cdrecord
La m�thode la plus simple pour copier un Cd dans ce cas est d'utiliser cdrecord. Par exemple, si le disque � copier se situe dans le lecteur dont le fichier de p�riph�rique est /dev/hdc, alors on tapera :
cdrecord -v -dao -isosize speed=12 dev=y,z /dev/hdc
L'option -dao �vite qu'il y ait deux secteurs illisibles en fin de piste (ceci n'est pas indispensable).
Avec l'option -isosize, cdrecord utilise la taille du syst�me ISO-9660 comme taille de l'image qui sera grav�e. Ceci �vite de lire les deux secteurs illisibles �ventuels si le disque original a �t� grav� en mode Track at Once et des risques de buffer under run.
La taille de la piste copi�e sera ainsi inf�rieure � celle du disque original (outre les deux secteurs, d'autres secteurs vides ajout�s en fin ne seront pas non plus copi�s).
Si l'on veut faire une copie exacte du Cd-Rom (pistes de m�me taille), il faut supprimer cette option (si le graveur accepte la copie) et supprimer �galement l'option -dao si le disque original a �t� cr�� en mode Track at Once.
Copie avec cdrdao
Une autre fa�on de faire consiste � utiliser cdrdao. Si par exemple, les deux derniers chiffres SCSI du lecteur sont 0,0 et ceux du graveur 1,0, alors on entre dans une console :
cdrdao copy --source-device 0,0 --device 1,0 --on-the-fly
Il faut pr�ciser les options --source-driver et --driver si le lecteur et le graveur ne sont pas reconnus (ou entrer ces valeurs dans le fichier de configuration, voir la section Configuration des programmes plus haut).
On obtient une copie exacte si le disque original a �t� cr�e en mode Disc at Once sinon cdrdao va ajouter deux secteurs vides mais lisibles � la place des deux secteurs illisibles de fin de piste (en affichant un message du type "Warning: Padding with 2 zero sectors"). Pour qu'il ne cr�e pas ces deux secteurs, il faut activer l'option --tao-source.
Si l'option --on-the-fly n'est pas pr�cis�e, cdrdao va cr�er une image sur le disque qui sera effac�e par la suite (pour la conserver, entrer l'option --keepimage).
Copie indirecte (utilisation d'une image)
C'est la m�thode qu'il faut suivre si l'on ne dispose que d'un graveur qui est utilis� �galement comme lecteur.
M�thode simple
Le plus simple est alors d'utiliser cdrdao. Par exemple, si le disque original est dans le graveur, il suffit de taper dans une console :
cdrdao copy --device y,z
Le programme cr�e une image qui est effac�e � la fin (voir plus haut pour la conserver). A la fin de la lecture, cdrdao va demander d'entrer un disque dans le graveur. On peut ignorer le message �ventuel, "Error: cannot determine disk status: hit enter and try again". La copie sera exacte si le disque original a �t� cr�� en mode Track at Once et cdrdao ajoutera deux secteurs vides dans le cas contraire (voir plus haut).
Et pour les H4x0rz ;-) ... (utilisation avanc�e)
On peut utiliser �galement les programmes dd ou readcd pour cr�er une image d'un disque. Pour cela, on tape dans une console pour dd, si le lecteur est /dev/hdc et que l'on souhaite cr�er une image nomm�e image.raw dans le r�pertoire courant :
dd if=/dev/hdc of=image.raw
ou avec readcd (il faut alors un lecteur SCSI ou �mul� SCSI) :
readcd dev=y,z f=image.raw
Il est pr�f�rable d'utiliser readcd car celui-ci fait plusieurs essais si la lecture sur le disque est difficile du fait d'un endommagement, ce que dd ne fait pas.
Dans les deux cas, il faut pr�ciser le chemin si l'on ne souhaite pas que l'image soit cr��e dans le r�pertoire courant. Par ailleurs, le nom de l'image et l'extension (optionnelle) n'importent pas.
On grave ensuite l'image avec cdrecord :
cdrecord -v -dao dev=0,0 image.raw
Il est possible que les deux programmes signalent des erreurs d'entr�e-sortie ("Input/output error"). Ceci vient probablement de ce que le disque initial a �t� cr�� en mode Track at Once, les deux programmes ne pouvant lire les deux secteurs illisibles en fin de piste. Normalement, les images sont utilisables. Si l'on veut �viter ces erreurs, il faut d�terminer la longueur de la piste avec cdrdao :
cdrdao read-toc --device y,z image.toc
Avec la commande read-toc, cdrdao lit la Table des Mati�res (la TOC) et renvoie les informations de d�but et de fin de piste � l'�cran. Il faut imp�rativement pr�ciser un fichier (dont le nom importe peu) dans lequel sera stock�e la longueur de la piste.
L'image est par d�faut stock�e dans le r�pertoire courant si l'on ne pr�cise aucun chemin. Si l'on veut �viter que cdrdao cr�e ce fichier qui n'est pas utile ici et qu'il faudra effacer, il suffit de donner un nom de r�pertoire qui n'existe pas (cdrdao signale une erreur mais affiche les informations n�cessaires � l'�cran).
Les valeurs sont donn�es au format mm:ss:bb avec mm le nombre de minutes, ss le nombre de secondes et bb le nombre de blocs � ajouter. Une seconde d'enregistrement repr�sente 75 blocs et une minute 60 secondes. La conversion en nombre de blocs est donn�e par cdrdao entre parenth�ses.
Par exemple, si cdrdao renvoie les valeurs 00:00:00 (0) dans la colonne Start et les valeurs 00:42:55 (3205) dans la colonne Length, ceci signifie que la piste d�bute au secteur 0 et a une longueur de 3205 blocs (42x75 + 55).
Comme le disque a �t� �crit en mode Track at Once, il faut retirer les deux secteurs illisibles et copier 3203 secteurs.
Pour cela, on utilise uniquement readcd car dd continue de signaler des erreurs d'entr�e-sortie :
readcd dev=y,z sectors=0-3203 f=image.raw
qui demande � readcd de lire du secteur 0 au secteur 3202 inclus, soit 3203 secteurs (il faut entrer sectors=0-3203 car readcd arr�te la lecture au d�but du secteur 3203 et lit ainsi jusqu'au secteur 3202).
Il suffit ensuite de graver l'image avec cdrecord comme indiqu� plus haut (avec le param�tre -dao si l'on veut un Cd en mode Disc at Once, sans si l'on veut faire une copie exacte du disque et conserver un disque en mode Track at Once (les deux secteurs illisibles seront alors rajout�s)).
On peut chercher � savoir au d�part s'il s'agit d'un disque grav� en mode DAO ou en mode TAO. Pour cela, on r�cup�re les informations de d�but et de longueur de piste avec cdrdao puis l'on essaie de lire les deux derniers secteurs avec readcd (pour l'exemple pr�c�dent, readcd dev=y,z sectors=3203-3205 f=essai, effacer ensuite le fichier essai). En cas d'errreur, il s'agit d'un disque grav� en mode TAO (� moins que le disque d'origine ne soit endommag�).
Une autre m�thode consiste � utiliser cdrdao pour faire une image et la graver (ou cdrecord pour la graver) :
cdrdao read-cd --device y,z --datafile image.raw image.toc
Il faut imp�rativement pr�ciser le nom d'un fichier pour la Table des Contenus (TOC).
Si l'option --datafile n'est pas pr�cis�e, l'image sera stock�e sous le nom data.bin dans le r�pertoire courant.
L'image sera conforme au disque initial si celui-ci a �t� grav� en mode DAO et deux secteurs vides termineront la piste s'il a �t� r�alis� en mode TAO (sauf si l'option --tao-source est activ�e).
L'image est ensuite grav�e en utilisant le fichier TOC :
cdrdao write /home/image.toc
Il ne faut pas pr�ciser le nom de l'image car celui-ci est pr�sent dans le fichier image.toc.
L'image peut �galement �tre grav�e avec cdrecord (avec l'option -dao, cela conduit au m�me r�sultat et sans, l'image comportera 4 secteurs de plus que la piste du disque original (les 2 secteurs vides rajout�s par cdrdao et les 2 secteurs illisibles du au mode TAO)).
Copie logique
Enfin, une derni�re fa�on de proc�der est possible. Elle consiste � monter le disque � graver dans un r�pertoire, � en faire une image avec mkisofs puis � la graver.
Note de Jice : je nomme cette copie "logique", par opposition � "physique", car on n'a alors pas une copie parfaite ou quasi parfaite du CD d'origine, mais la copie conforme de tous les fichiers et r�pertoires (ce qui est quand m�me le but recherch� !).
Par exemple, on pourra faire si le disque original est sur /dev/hdc :
mount -t iso9660 /dev/hdc /mnt/cdrom
mkisofs -R -J -q -print-size /mnt/cdrom
mkisofs -R -J /mnt/cdrom 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=5000s -
si mkisofs renvoie 5000 comme taille de l'image (voir plus haut) et pour une image au format Rock Ridge (-R) et Joliet (-J).
Les tailles de piste entre le disque original et la copie diff�reront probablement mais toutes les donn�es seront sauvegard�es.
Cdrom multi-sessions
Si on veut par exemple utiliser le m�me disque pour faire plusieurs sauvegardes successives, il faut cr�er un disque multi-sessions. Cela permet de cr�er un disque que l'on pourra lire entre temps et sur lequel on pourra par la suite rajouter des donn�es.
Chaque session contient une piste de donn�es ainsi qu'une Table des Mati�res qui est li�e � la suivante, ce qui permet d'avoir acc�s � l'ensemble du contenu du disque.
Cr�ation d'un disque multi-sessions
La cr�ation d'un Cd-Rom de donn�es multi-sessions est tr�s simple. Il suffit d'ajouter quelques options � mkisofs et cdrecord.
Prenons un exemple :
Dans un premier temps, on cherche � sauvegarder le contenu du r�pertoire /home/session1. Pour cela, on r�alise l'image de la fa�on habituelle :
mkisofs -R -o session1.raw /home/session1
D'apr�s la documentation, il est indispensable de graver l'image au format Rock Ridge (l'option -R).
On grave ensuite l'image sous cdrecord avec l'option -multi :
cdrecord dev=y,z -v -multi session1.raw
L'option -dao peut �tre activ�e mais seulement pour la premi�re session (cela ne semble pas fonctionner pour les autres avec cdrecord).
La premi�re session est ainsi grav�e et lisible comme n'importe quel autre CD-Rom.
Si l'on veut ensuite rajouter une autre session, il faut obtenir quelques informations sur le Cd-Rom. Pour cela, on place le Cd-Rom � graver contenant les premi�res sessions dans le graveur et on tape dans une console :
cdrecord -msinfo dev=y,z
Ceci donne deux chiffres qui sont respectivement le num�ro de bloc du d�but de la derni�re session et le num�ro de bloc du d�but de la prochaine session En f
ait, en multi-sessions, chaque Table des Mati�res est li�e � la suivante). On note respectivement ces deux chiffres xxx et yyy.
Maintenant, si on souhaite graver une autre session qui contiendra le contenu du r�pertoire /home/session2, il faut inclure ces informations dans mkisofs. Si le disque contenant les sessions pr�c�dentes se trouve dans le graveur (dont le fichier de p�riph�rique est /dev/scd0), on entre :
mkisofs -R -o session2.raw -C xxx,yyy -M /dev/scd0 /home/session2
Note : il est m�me possible de remplacer le param�tre -M /dev/scd0 par -M session_precedente.raw si session_precedente.raw est l'image de la derni�re session grav�e (bien s�r, en g�n�ral on ne dispose plus de ce fichier).
On grave ensuite cette nouvelle session de fa�on habituelle :
cdrecord -v -multi dev=0,0 session2.raw
Note : on peut supprimer l'option -multi si l'on ne souhaite plus rajouter de nouvelle session par la suite.
Copie d'un cdrom multi-sessions
a fa�on la plus simple de proc�der est de monter le Cd-Rom sur un r�pertoire, d'en faire une image avec mkisofs puis de la graver avec cdrecord (�ventuellement avec l'option -multi si l'on souhaite ajouter d'autres sessions par la suite).
Le nouveau disque ne comportera qu'une seule session mais contiendra l'ensemble des fichiers du disque original, ce qui est le plus important. Voir le paragraphe Copie logique.
Si l'on souhaite malgr� tout faire une copie du disque original qui contienne le m�me nombre de sessions, il faut obtenir les informations sur le d�but et la longueur de chaque session et savoir si les sessions ont �t� grav�es en mode DAO ou en mode TAO.
Dans un premier temps, on d�termine le nombre de sessions sur le disque avec la commande cdrdao disk-info --device y,z.
Ensuite, on cherche le d�but et la longueur de chaque session. Par exemple, supposons que le disque original soit constitu� de deux sessions. On tape alors dans une console :
cdrdao read-toc --device y,z --session 1 session1.toc
avec session1.toc le nom du fichier qui sera cr��, le param�tre --session 1 permettant de lire les informations sur la premi�re session (si l'on ne veut pas que cdrdao cr�e le fichier session.toc qui est inutile ici, il suffit d'entrer un nom de chemin inexistant (cdrdao renvoie un message d'erreur mais affiche les informations n�cessaires)).
Supposons que sous la colonne Start, soit inscrit 00:00:00 et sous la colonne Length 03:00:06 (13506).
Ceci signifie que la premi�re session d�bute au bloc 0 et � une longueur de 13506 blocs ((3x60x75)+6).
On fait de m�me pour la deuxi�me session :
cdrdao read-toc --device y,z --session 2 session2.toc
Supposons que cdrdao renvoie un d�but de deuxi�me session au bloc 24906 et une longueur de 14568 blocs et une fin de piste en 39474 (la colonne Start=, et la ligne lout) ce qui correspond �galement � la somme des deux premiers.
On peut alors savoir si les sessions ont �t� grav�es en mode DAO ou en mode TAO en essayant de lire les deux derniers secteurs de chacune d'entre elles. Par exemple, pour la premi�re session, on fera :
readcd dev=y,z sectors=13504-13506 f=result
Si le disque a �t� grav� en mode TAO, readcd va renvoyer un message d'erreur (effacer le fichier result dans le cas contraire). Il n'est peut �tre pas n�cessaire de faire cela pour les autres sessions car elles ont probablement �t� cr��es en mode TAO.
On r�alise ensuite les images des deux sessions � partir du disque original en supprimant le cas �ch�ant les 2 blocs de fin (les blocs illisibles li�s � la gravure en TAO) :
readcd dev=y,z sectors=0-13504 f=session1.raw
readcd dev=y,z sectors=24906-39472 f=session2.raw
On grave ensuite la premi�re session avec cdrecord :
cdrecord -v -multi dev=y,z session1.raw
On peut ensuite v�rifier, par exemple avec cdrdao que la premi�re session grav�e d�bute en 0 pour se terminer en 13506 et que la deuxi�me session d�bute en 24906 pour finir en 39474.
Note : il est possible de graver la premi�re session avec cdrdao mais il faut ensuite utiliser cdrecord pour les suivantes car cdrdao d�cale la suivante de deux secteurs (la deuxi�me session est alors illisibles car les liens entre les deux ne sont plus corrects).
Par ailleurs, si l'on enregistre la premi�re session avec cdrdao, celle-ci sera enregistr�e au format Mode 2, Forme 2 avec 2336 octets par secteur. La deuxi�me session, s'il s'agit de la derni�re, sera en revanche enregistr�e au format de donn�es avec 2048 octets par secteurs. La premi�re session doit alors �tre grav�e avec cdrado avec l'option --multi mais la deuxi�me doit l'�tre avec cdrecord.
Copie d'un cd audio
La copie d'un disque audio peut se faire d'au moins trois fa�ons: avec cdrdao, en combinant cdda2wav et cdrecord ou encore en combinant cdparanoia et cdrecord.
M�thode 1 : cdrdao
Ce logiciel permet de faire une copie directe du lecteur vers le graveur. Il faut que les deux soient reconnus comme des p�riph�riques SCSI (par �mulation ou non). Pour ce, si par exemple les deux derniers chiffres SCSI du lecteur sont 0,0 et les deux derniers du graveur 1,0, il suffit de faire :
cdrdao copy --source-device 0,0 --device 1,0 --on-the-fly
L'option --speed suivie de la vitesse permet de r�gler la vitesse de gravure.
Pour faire une copie indirecte du graveur vers le graveur, il suffit de taper :
cdrdao copy --device y,z fichier.toc
Il faut imp�rativement pr�ciser un nom de fichier (ici fichier.toc, le nom peut �tre quelconque) dans lequel cdrdao va enregistrer des informations sur la Table des Mati�res (la TOC).
Le programme cdrdao va lire les pistes et cr�er une image dans le r�pertoire courant (nomm�e cddaxxx.bin, xxx �tant un nombre al�atoire). Pour conserver cette image, il faut utiliser l'option --keepimage.
A la fin de la lecture, il demande d'ins�rer un disque et d'appuyer sur la touche Entr�e. A priori, on peut ignorer les erreurs du type "ERROR: Cannot determine disk status - hit enter to try" ou encore "Cannot read CD text data - maybe not supported by drive" (dans ce dernier cas, c'est que le graveur ne peut pas lire les informations CD-Text qui contiennent le nom de l'artiste, le titre de l'album et le titre des pistes, ou que ces informations ne sont pas pr�sentes sur le disque).
Le fichier de TOC contient un certain nombre d'informations importantes. En voici un exemple pour les trois premi�res pistes d'un disque :
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
SILENCE 00:00:32
FILE "data.wav" 0 04:04:46
START 00:00:32
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 04:04:46 03:03:68
START 00:02:42
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 07:08:39 04:20:50
START 00:02:06
Les dur�es sont exprim�es au format mm:ss:bb, avec mm le nombre de minutes, ss le nombre de secondes et bb le nombres de blocs ou secteurs. Une seconde audio repr�sentant 75 blocs, ce dernier compteur va de 0 � 74 (� 75, on le met � 0 et on incr�mente le compteur de secondes qui va de 0 � 59).
La ligne SILENCE 00:00:32 signifie que la piste un d�bute par un silence de 32 secteurs (il s'agit d'un "pre-gap"). La ligne FILE "data.wav" 0 04:04:46 indique que le d�but de la piste 1 est fix� � 0 et qu'elle � une longueur de 04:04:46. Enfin, la ligne START 00:00:32 indique que le titre d�bute apr�s 32 secteurs.
En fait, la piste est positionn�e au secteur 0 du disque, le lecteur va lire depuis le d�but du disque et commencer � d�compter le d�but du titre (de la chanson par exemple) � partir du secteur 32. Puis, le compteur va tourner pendant une dur�e de 04:04:46 avant de commencer le d�compte de l'intervalle avant le deuxi�me titre.
Celui-ci a une dur�e de 00:02:46 comme indiqu� sur la ligne START de la piste 2. Le titre dure lui 03:03:68.
Physiquement, la piste 1 commence au secteur 0 et � une longueur �quivalente � une dur�e de 04:07:13 (04:04:46+00:02:42) ce qui correspond � 18538 secteurs (soit ((4x60)+07)x75+13) car l'intervalle avant la prochaine piste est inclut dedans.
La piste 1 d�butant en 0, elle se termine au secteur 04:07:12 et la piste 2 d�bute au secteur 04:07:13. Elle a une longueur de 03:03:32 (03:03:68-00:02:42+00:02:06). La piste 3 commencera ainsi physiquement au secteur 07:10:45 (04:07:13+03:03:32).
La ligne SILENCE 00:00:32 aurait pu �tre omise. Dans ce cas, on aurait eu pour la piste 1 les lignes FILE "data.wav" 0 04:05:03 et START 00:00:32 et pour la piste 2 FILE "data.wav" 04:05:03 03:03:68 et START 00:02:42.
La piste 1 aurait toujours eu une longueur de 04:07:13 (04:05:03-00:00-32+00:02:42).
La diff�rence avec la version pr�c�dente est que les 32 secteurs de silence initial sont inclus dans l
e fichier data.wav
On peut r�cup�rer ces informations sur la TOC en utilisant la commande read-toc :
cdrdao read-toc --device y,z file.toc
qui va se contenter de cr�er le fichier file.toc.
Si l'on ajoute l'option --fast-toc, le fichier obtenu ne contient que la dur�e totale des pistes ainsi que leur secteur de d�but, les indications sur les intervalles entre pistes �tant omises. Un disque copi� avec cette m�thode aura perdu ces informations.
La commande show-toc permet elle d'afficher les informations contenues dans un fichier. Par exemple :
cdrdao show-toc file.toc | less
affichera notamment la dur�e des intervalles (pregap), le secteur de d�but de la piste et le secteur de fin sur le disque.
Il est possible �galement d'enregistrer d'abord l'image sur le disque puis de la graver ensuite. On cr�e l'image par la commande :
cdrdao read-cd --device y,z file.toc
et on la grave ensuite par :
cdrdao write --device y,z file.toc
L'option --datafile suivie du nom � donner permet de donner un nom � l'image autre que le nom par d�faut.
L'image qui est cr��e contient les pistes sous forme brute, c'est-�-dire le contenu des secteurs audio du secteur 0 au secteur de fin de disque, y compris les silences entre pistes. Elle sera multiple de 2352 puisque un secteur audio utilise les 2352 octets d'un secteur.
En fait, si l'on fait la somme de la dur�e totale des pistes et qu'on les convertit en octets, on obtient la longueur du fichier image. Par exemple, si le disque pr�c�dent est limit� au trois pistes alors, la piste 3 ayant une dur�e de 04:21:28, la dur�e totale de l'image est de 11:31:73 (04:07:13+03:03:32+04:21:28) ce qui correspond � 51898 secteurs.
Ceci occupe 122064096 octets sur le disque (51898x2352). Dans les deux cas pr�c�dents, les 32 secteurs de silence de 32 secteurs au d�but du disque ne sont pas inclus dans l'image.
Une derni�re chose m�rite d'�tre signal�e. Comme le pr�cise le manuel de cdrdao, la copie effectu�e sera plus ou moins exacte. Par exemple, avec certains graveurs, la dur�e physique des pistes est la m�me mais la dur�e du titre est augment�e d'un secteur, celui de l'intervalle �tant r�duit du m�me secteur. Ceci affecte seulement le moment o� le lecteur indique la fin de la piste (il indique la fin de la piste un secteur plus tard) mais cela ne change rien � ce que l'on entend.
M�thode 2 : cdda2wav et cdrecord
La m�thode consiste � extraire les pistes audio avec cdda2wav pour en faire des fichiers d'ondes (qui ont souvent l'extension .wav) puis � les graver avec cdrecord . Si le lecteur audio correspond au fichier de p�riph�rique /dev/hdc, on enregistre les pistes avec :
cdda2wav -v255 -B -D/dev/hdc
On grave ensuite les pistes par :
cdrecord -v -dao -useinfo dev=y,z audio_*.wav
Tout ceci m�rite quelques explications. Commen�ons par cdrecord.
L'option -dao demande de graver le disque en mode Disc at Once, l'option -useinfo indique qu'il faut utiliser les fichiers inf cr��s par cdda2wav et l'argument audio_*.wav pr�cise que les pistes � graver correspondent aux fichiers indiqu�s.
En effet, cdda2wav sauvegarde les pistes dans des fichiers audio_xx.wav avec xx un nombre allant de 01 au nombre total de pistes sur le disque.
En ce qui concerne ce dernier, l'option -D s�lectionne le lecteur sur /dev/hdc (il est �galement possible de s�lectionner un p�riph�rique SCSI, par exemple en entrant par exemple -D y,z).
L'option -v255 active le mode bavard au niveau maximal (pour les diff�rents niveaux possibles, consulter la page de manuel, sachant qu'il faut additionner les chiffres correspondant � chaque niveau). Il faut l'activer au moins au niveau 4 pour que cdda2wav enregistrer les marques de fin de piste (pour les intervalles).
Dans le cas contraire, la copie contiendra des pistes de longueur physique �gale � celles de l'original mais tous les intervalles entre les pistes auront une longueur de 2 secondes (en fait 00:01:74) pour �tre conforme � la norme d�finie dans le Red Book qui d�finit les Cd audio.
L'option -B permet de cr�er un fichier .wav pour chaque piste. En l'absence de cette option, un seul fichier sera cr�� pour l'ensemble du disque et la copie ne contiendra qu'une seule piste.
Il existe un certain nombre d'options document�es dans la page de manuel ou dans la documentation de cdda2wav. Par exemple, l'option -t2 sauvegarde les pistes de la deuxi�me � la derni�re. L'option -t2+4 sauvegarde les pistes 2 � 4 et l'option -t2+2 sauvegarde uniquement la piste 2. L'option -S suivie de la vitesse permet de s�lectionner la vitesse du lecteur (ne pas d�passer la vitesse maximale indiqu�e par le constructeur pour �viter les erreurs de lecture).
L'option -J permet de cr�er uniquement les fichiers inf (faire par exemple cdda2wav -J -D/dev/hdc). Par d�faut, le mode bavard est activ� pour sauvegarder les marques de fin de pistes. Il faut activer l'option -vX avec X<4 si l'on ne veut pas les enregistrer.
Ces fichiers nomm�s par d�faut audio_xx.inf ( xx allant de 01 au nombre total de pistes) contiennent un certain nombre d'informations importantes comme le titre de l'album, le titre des pistes, le d�but de la piste ("Trackstart") ou la longueur de la piste ("Tracklength"). Ces fichiers contiennent �galement une ligne "Index0" qui contient le d�but de l'intervalle entre pistes. Toutes les longueurs sont exprim�es en blocs (ou secteurs).
Avec cette m�thode, la copie peut �tre plus ou moins parfaite. Par exemple, avec certains graveurs, la dur�e des titres est sup�rieure de 8 secteurs � celle de l'originale et la longueur de l'intervalle r�duite de 8 secteurs. Ceci ne change strictement � la dur�e totale des pistes mais affecte seulement les dur�es affich�es par le lecteur.
M�thode 3 : cdparanoia et cdrecord
Cette m�thode est identique � la pr�c�dente � la diff�rence que l'on perd les informations sur les intervalles.
cdparanoia a ceci de diff�rent par rapport � cdda2wav qu'il permet de faire de la correction d'erreurs, ce qui peut �tre int�ressant dans le cas d'un CD audio ray�. Si vous entendez des craquements dans les CD copi�s avec cdda2wav, essayez cdparanoia. La contre-partie est un temps de copie des pistes audio qui peut �tre plus long.
On lance cdparanoia pour sauvegarder les pistes par :
cdparanoia -v -B -d /dev/hdc
Ceci va cr�er un ensemble de fichiers nomm�s trackxx.cdda.wav avec xx un nombre compris entre 01 et le nombre total de pistes. Ces fichiers sont cr��s dans le r�pertoire courant.
L'option -v active le mode bavard, l'option -B permet de cr�er un fichier par piste (en son absence, un seul fichier wav est cr��, correspondant � la dur�e totale du disque) et l'option -d permet de s�lectionner le lecteur.
Il est possible que cdparanoia cr�e un fichier track00.cdda.wav.
Ce sera le cas avec l'exemple pr�c�dent du fait du silence de 32 secteurs avant le d�but r�el de la piste 1. Il est pr�f�rable de le supprimer afin d'�viter d'avoir une piste vide au d�but du disque. De plus, si la dur�e de la piste est inf�rieure � 4 secondes (300 secteurs), il est fort possible que le graveur refuse de la graver et g�n�re une erreur.
On les grave ensuite par :
cdrecord -v -dao dev=y,z track*.cdda.wav
Par d�faut, si l'extension des fichiers est wav ou au, cdrecord consid�re qu'il s'agit de fichiers audio et l'option -audio est activ�e par d�faut. Il faut l'activer si l'extension des fichiers est diff�rente.
Avec cette m�thode, les intervalles entre les pistes sont tous �gaux � 2 secondes (ce qui ne change rien � l'�coute du disque mais modifie seulement la fa�on dont le lecteur affiche les dur�es).
Si l'on veut supprimer ces intervalles, il faut ajouter l'option defpregap=0 . De fa�on g�n�rale, l'option defpregap indique l'intervalle entre toutes les pistes en secteurs (sans modifier le d�but de la premi�re). Si l'on veut d�finir s�par�ment chaque intervalle, il faut utiliser l'option pregap=# qui d�finit l'intervalle avant la prochaine piste exprim� en nombre de secteurs (par exemple cdrecord -v -dao dev=y,z track01.cdda.wav pregap=75 track02.cdda.wav pregap=150 track03.cdda.wav pour un intervalle de 1 seconde entre la premi�re piste et la deuxi�me et un intervalle de 2 secondes entre la deuxi�me et la troisi�me).
Le programme cdparanoia permet �galement de tester la capacit� d'extraction du lecteur. Pour cela, il suffit de taper :
cdparanoia -vQ /dev/hdc
qui va afficher le message "Verifying drive can read CDDA..." puis, si l'extraction audio est possible, le message "Expected command set reads OK" et afficher la TOC.
Comme pour cdda2wav, il existe un certain nombre d'autres options. Il est par exemple possible de n'extraire qu'une partie d'une piste. On peut �galement signaler l'option -pad qui compl�tera les pistes si leur longueur n'est pas multiple de 2352, �vitant ainsi des erreurs de gravure (ce peut �tre le cas dans des cas autres que la copie, par exemple si les fichiers ont �t� obtenus par conversion � partir de fichiers mp3).
Les fichiers d'ondes cr��s par cdda2wav ou par cdparanoia sont strictement identiques. Leur longueur est �gale au nombre de blocs multipli� par 2352, auquel il faut ajouter 44 octets d'en-t�te du fichier.
Il est enfin possible de combiner les deux m�thodes pr�c�dentes en enregistrant les pistes � partir de cdparanoia, en r�cup�rant les informations sur les marques de fin avec cdda2wav et en gravant les pistes avec cdrecord.
Pour cela, on proc�de par exemple en trois �tapes.
On cr�e les fichiers inf par :
cdda2wav -J -D /dev/hdc track
Le param�tre track permet de cr�er des fichiers nomm�s track_*.inf.
On enregistre ensuite les pistes par
cdparanoia -B -d /dev/hdc 1- wav
Ceci permet cr�er des fichiers qui seront nomm�s track*.wav du fait de la pr�sente du param�tre track . L'option 1- est indispensable avec le param�tre wav , elle permet de sauvegarder toutes les pistes (de la 1 � la derni�re).
Comme on veut utiliser les fichiers inf, il faut renommer tous les fichiers track_*.inf en track*.inf.
On utilise pour cela la commande suivante :
for i in *.inf ; do j=$(echo $i | tr -d '_') ; mv $i $j ; done
La commande tr -d '_' permet de supprimer le caract�re de soulignement. Si l'on a enregistr� les pistes sous le nom track*.cdda.wav (l'option par d�faut de cdparanoia ), il faut ensuite lancer la commande suivante :
for i in track??.inf ; do j=$echo( $i | tr -d '.inf').cdda.inf ; mv $i $j ; done
On grave ensuite les pistes par :
cdrecord -v -dao -useinfo dev=y,z track*.wav
Les CD mixtes
Il existe certains disques qui m�langent donn�es (notamment des fichiers video) et audio d'une fa�on particuli�re, c'est-�-dire sur une m�me premi�re piste. Ainsi, sur un disque, cdrdao indique une premi�re piste audio avec un d�but en 15:15:15. Le d�but de la piste est constitu� de donn�es lisibles avec dd ou avec readcd.
La copie d'un tel disque avec cdrdao ne semble pas possible : les donn�es sont illisibles et les pistes audio sont d�cal�es (la piste 1 devient la piste 4 et les derni�res pistes ne sont pas copi�es). Ceci para�t normal dans la mesure o� donn�es et audio n'occupent pas le m�me espace sur un secteur.
Au demeurant, les donn�es ont �t� enregistr�es dans le format hybride hfs, lisibles par un PC (ici Joliet) et par un Macintosh.
Le plus simple si l'on souhaite conserver les donn�es est de cr�er un Cd-Extra contenant les pistes audio dans une premi�re session et les donn�es dans une deuxi�me. Ainsi, seules les pistes audio seront affich�es par le lecteur audio mais la piste de donn�es sera accessible par un ordinateur.
Cr�ation du Cd-Extra
Pour cela, le plus simple est d'enregistrer les pistes audio avec cdda2wav ou cdparanoia (ou de combiner les deux) et de les graver avec cdrecord en mode multissession (on n'utilise pas cdrdao car il faut sauvegarder seulement les pistes audio et pas les donn�es situ�es au d�but du disque). Par exemple, si les pistes ont �t� enregistr�es avec cdda2wav , on fera :
cdrecord -v -dao -multi dev=0,0 audio_*.wav
Il faut ensuite r�cup�rer les informations sur le d�but de la premi�re session et le d�but de la prochaine sur le disque par la commande cdrecord dev=y,z -msinfo (la copie �tant dans le graveur).
Ceci va renvoyer deux nombres que l'on appelera n1 et n2. Ensuite, pour faire l'image des donn�es, le plus simple est ensuite de monter le disque au format hfs pour faire une image des donn�es (il faut que l'option hfs soit activ�e dans le noyau, il s'agit de la rubrique File systems, Apple Macintosh file system support).
Pour �tre le plus fid�le possible, il faut m�me cacher les fichiers Apple en mode Joliet. Pour cela, le plus simple est d'utiliser l'option hide-joliet-list de mkisofs. On cr�e alors un fichier contenant la liste des fichiers et r�pertoires et supprimer les fichiers accessibles en Joliet afin qu'il ne reste que les fichiers Apple (et inversement certainement pour les fichiers Joliet � masquer en hfs).
Le disque original sera mont� par la commande mount -t hsf /dev/hdc /cdrom (si le p�riph�rique de lecture est li� � /dev/hdc et le r�pertoire de montage est /cdrom.
On cr�e ensuite la liste dans le r�pertoire courant par ls /cdrom > liste, ce qui g�n�re le fichier nomm� liste que l'on �dite pour effacer les fichiers accessibles uniquement en Joliet.
On peut alors en faire une image (nomm�e image.raw dans le r�pertoire courant) par la commande mkisofs -hfs -J -hide-joliet-list liste -o image.raw -C n1,n2 /cdrom.
Il est inutile d'utiliser l'option -M car il ne faut pas lier les deux sessions (la deuxi�me n'a pas besoin d'acc�der � la TOC de la premi�re).
On grave ensuite la deuxi�me session normalement avec cdrecord (cdrecord -v dev=y,z image.raw).
Copie d'un Cd-Extra
La copie d'un tel disque et d'un Cd-Extra en g�n�ral peut se faire de plusieurs mani�res.
Une premi�re m�thode consiste � proc�der comme ci-dessus en enregistrant les pistes audio avec cdda2wav ou cdparanoia et � en faire une premi�re session pour � refaire une image de la session de donn�es pour en refaire une deuxi�me session.
Une autre m�thode consiste � enregistrer chaque session avec cdrdao et � les graver ensuite (on utilise cdrdao pour garder la taille de la premi�re session).
Pour sauvegarder la premi�re session, on fera par exemple :
cdrdao read-cd --device y,z --session 1 --datafile session1.bin session1.toc
qui va g�n�rer une image nomm�e session1.bin et un fichier de la Toc nomm� session1.toc. On sauvegarde ensuite la deuxi�me session par :
cdrdao read-cd --device y,z --session 2 --datafile session2.bin session2.toc
On d�finit ici les noms des images car en l'absence de cette option cdrdao va utiliser le nom data.bin et la deuxi�me image viendra �craser la premi�re (ou alors, il faut cr�er la premi�re image et l'enregistrer et cr�er ensuite la deuxi�me).
On peut alors passer � la gravure des deux sessions.
On grave la premi�re avec cdrdao car il s'agit de pistes audio (cdrecord ne cr�erait qu'une seule piste). Il faut toutefois modifier l�g�rement le fichier session1.toc du fait de la multisession. Pour cela, il faut �diter ce fichier et remplacer la premi�re ligne CD_DA par CD_ROM_XA. On grave alors la premi�re session par :
cdrdao write --device y,z --multi session1.toc
Pour la deuxi�me session, il faut utiliser cdrecord. En effet, l'image de la deuxi�me session contenant l'adresse de fin de la premi�re et l'adresse du d�but de cette deuxi�me session, il faut imp�rativement que celle-ci soit situ�e exactement au m�me endroit sur le disque.
Or, cdrdao grave cette deuxi�me session avec un d�calage de 2 secteurs ce qui rend le disque illisible.
On utilise donc cdrecord qui ne produit pas ce d�calage :
cdrecord -v dev=y,z session2.bin
Il est possible de recr�er la premi�re session avec cdda2wav (ou cdparanoia) et cdrecord mais il faut s'assurer que cette session aura exactement la m�me taille que l'orginal car il faut que la deuxi�me soit situ�e au m�me endroit. En effet, la deuxi�me session contient son adresse sur le disque et il faut donc que la copie soit situ�e au m�me endroit.
Graver une image .bin/.cue
Un logiciel windows bien connu produit ce genre de fichiers en tant qu'images de CD. Le contenu du CD est stock� dans un (gros) fichier le_cd.bin, tandis que la table des mati�res du CD est dans un fichier du m�me nom, le_cd.cue. On trouve fr�quemment ce type de fichiers sur internet.
Sous Linux, vous pouvez graver cette image de cd, avec cdrdao. Il suffit simplement de remplacer le fichier .toc par le fichier .cue, car cdrdao comprend aussi la syntaxe des fichiers .cue. Par exemple :
cdrdao write --device 1,0,0 --driver generic-mmc /home/jice/le_cd.cue
Note 1 : le seul probl�me que vous puissiez avoir dans ce cas provient des noms de fichiers contenant des espaces. Si vos fichiers se nomment "le cd.bin" et "le cd.cue", renommez-les respectivement "le_cd.bin" et "le_cd.cue", et �ditez le fichier .cue, afin de mettre � jour la ligne qui contient le nom du fichier .bin avec le nouveau nom.
Note 2 : cdrdao ne sait pas produire de fichiers .cue � partir d'un CD. Je ne sais pas actuellement comment faire cela sous Linux.
Conclusion
Cet article vous permettra d'utiliser au mieux votre graveur de CD. Pour de nombreuses op�rations, vous pouvez toutefois utiliser les interfaces graphiques, telles que xcdroast, gcombust ou autres (voir la logith�que), qui utilisent elles-m�me les programmes pr�sent�s ici, mais simplifient le processus (tout en n'offrant pas autant de flexibilit� que la ligne de commande).
Si vous souhaitez voir ici d�velopp�es d'autres utilisations du graveur, merci de me le signaler. Je pense �crire des parties sur :
* graver un CD audio depuis des MP3,
* graver un VCD ou SVCD � partir de fichiers MPEG 1 ou 2 (utiliser les logiciels graphiques Arson ou Qvcd, et en ligne de commande vcdimager ; voir la logith�que),
* etc.
Sources de l'article
|