Graver des CD/DVD sur son Linux, *BSD ou Unix préféré

Nicolas Vallée

Cet article a été tiré du site du club informatique de l'ENSTA. Son auteur original est Christophe Delhomme (promo 2004). ♪

- Titre : Graver des CD/DVD sur son Linux, *BSD ou Unix préféré

- Auteur : Nicolas Vallée

- Parution : 15 juin 2006

- Licence : Copyright (c) 2006 Nicolas Vallée. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Read the full license here : http://www.gnu.org/licenses/fdl.txt

Sommaire

- I. Gravure d'un CD de données

- I-A. Quésaco une image ISO ?

- I-B. Créer une image ISO à partir d'un CD (autre qu'un CD audio)

- I-C. Créer une image ISO avec la commande mkisofs

- I-D. Vérifier une image ISO avec la commande mount

- I-E. Graver une image IS0 avec la commande cdrecord

- I-F. Graver un CD en multisession

- II. CD audio, CD bootable, DVD, RW

- II-A. CD audio

- II-B. Réaliser un CD bootable

- II-C. Les médias réinscriptibles

- II-D. La commande cdrecord et les noyaux Linux à partir de la version 2.6

- II-E. Graver un DVD*

- III. Interfaces graphiques, liens utiles

- III-A. Je n'aime pas la ligne de commande

- III-B. Liens utiles

I - Gravure d'un CD de données

I-A - Quésaco une image ISO ?

Avant toute chose il faut un minimum comprendre comment les données sont organisées sur un médium comme un CD ou un DVD. Une explication détaillée est fournie sur le site de comment çà marche ?.
En bref, le format des données dépend du médium considéré et des différents constructeurs de matériels qui ont participé à l'élaboration du standard de fait. Les lecteurs et graveurs actuels (septembre 2004) permettent de lire et de graver plusieurs formats… ouf un instant on a eu peur.
Les données contenues sur un CD ou un DVD, donc dans un format spécifique au médium et à la plate-forme cible, sont manipulables directement : création et copie. Ces données brutes (blocs de 0 et de 1) forment un ensemble cohérent dit image ISO ~ système standard de fichiers.

I-B - Créer une image ISO à partir d'un CD (autre qu'un CD audio)

La commande dd

% dd [if=file] [of=file] [conv=sync]
Explications ...
if         fichier d'entrée au sens Unix (fichier, périphérique...)
of         fichier de sortie au sens Unix (fichier, périphérique...)
conv=sync     compléter chaque bloc lu avec des caractères NUL pour atteindre la taille ibs par défaut 512 octets.

Exemple :    le CD est dans le lecteur associé au périphérique /dev/cdrom
% dd if=/dev/cdrom of=./image.iso conv=sync

Exemple :    le CD est dans le graveur de CD/DVD utilisé via l'émulation SCSI (noyau Linux < 2.6)
% dd if=/dev/scd0 of=./image.iso conv=sync

Exemple :     le CD est dans le 2e lecteur maître du contrôleur IDE
% dd if=/dev/hdc of=./image.iso conv=sync

I-C - Créer une image ISO avec la commande mkisofs

La commande mkisofs

% mkisofs -R -r -J -V 'LABEL' -o ./backup.iso /home/christophe
Explications ...
-R             extension RockRidge pour conserver les noms longs et les permissions sous un système Linux
-r             génère une image lisible sur tous les systèmes malgré les permissions activées par l'extension RockRidge
-J             active l'extension Joliet pour avoir les noms longs sous Windows
-V 'LABEL'        le label de l'image générée
-o ./backup.iso        le fichier dans lequel sera généré l'image ISO
/home/christophe     l'arborescence dont on souhaite créer une image ISO

!! Astuce pour avoir un ordre d'idée de la taille de l'image générée

% du -sm /home/christophe
Explications ...
-s             n'affiche que la taille totale de l'arborescence
-m             affiche la taille en méga-octets
/home/christophe     l'arborescence dont on souhaite créer une image ISO

I-D - Vérifier une image ISO avec la commande mount

La commande mount

% mount -o loop -t iso9660 -o ro ./backup.iso /mnt/cdrom
Explications ...
-o loop     option pour monter une image ISO via le périphérique loop (boucle)
-t iso9660     le format de l'image ISO
-o ro        l'image ISO est montée en lecture seule, read-only
./bakcup.iso     l'image ISO
/mnt/cdrom     point de montage de l'image, le répertoire doit exister !!

I-E - Graver une image IS0 avec la commande cdrecord

La commande magique … cdrecord

% cdrecord speed=X dev=Y,Z,W -v -eject -data ./backup.iso
Explications ...
speed=X         vitesse de gravure (rem : la vitesse effective ne dépassera pas la vitesse maximale supportée par le graveur)
dev=Y,Z,W         localisation du graveur ( le triplet scsibus,target,lun est fourni par la commande % cdrecord -scanbus
-v             affiche l'avancement de la gravure
-eject             éjecte le CD ou le DVD à la fin de la gravure
-data ./backup.iso     l'image ISO à graver sur le CD

I-F - Graver un CD en multisession

La 1re session
Copier l'image ISO d'un CD de données ou créer une image ISO Graver l'image ISO avec l'option -multi de la commande cdrecord

% cdrecord speed=X dev=X,Y,Z -multi -v -eject -data ./backup.iso

La 2e session, la 3e session…
!! Le CD multisession doit être dans le graveur.
Avant de créer l'image ISO, il est nécessaire de connaître deux paramètres

% cdrecord dev=X,Y,Z -msinfo
nombre1,nombre2

Réaliser l'image ISO en spécifiant les deux paramètres nombre1,nombre2 et le périphérique associé au graveur (ex. : /dev/hdc)

% mkisofs -R -r -J -C nombre1,nombre2 -M /dev/hdc -o ./image_2.iso /home/come

Graver l'image ISO avec l'option -multi

% cdrecord speed=X dev=X,Y,Z -multi -v -eject -data ./image_2.iso

Dernière session
Créer l'image ISO comme pour une deuxième session, une troisième session…
Graver l'image ISO sans l'option -multi

% cdrecord speed=X dev=X,Y,Z -v -eject -data ./image_2.iso

II - CD audio, CD bootable, DVD, RW

II-A - CD audio

Extraire les pistes d'un CD audio

% cdparanoia -d /dev/scd0 -v -B
Explications ...
cdparanoia     la commande elle-même
-d /dev/scd0     le périphérique associé au lecteur contenant le CD audio, autres exemples : /dev/hdc, /dev/hdb, ...
-v         mode verbeux de la commande
-B         extrait toutes les pistes du CD audio dans des fichiers distincts

Graver des données audios avec la commande cdrecord

% cdrecord speed=X dev=X,Y,Z -v -eject -audio track1.wav track2.wav ...

Encoder des données audios au format WAV au format MP3

% bladeenc track1.wav track2.wav ...

Encoder un seul fichier audio .wav à la fois

% bladeenc -delete track1.wav track1.mp3

II-B - Réaliser un CD bootable

Récupérer l'image d'une disquette bootable
À partir d'une disquette bootable dans le premier lecteur de disquette

% dd if=/dev/fd0 of=./boot.img -v -eject -data ./backup.iso

À partir d'un CD ou d'un DVD bootable
Trouver un fichier de nom *boot* dont la taille avoisine celle d'une ou deux disquettes. Sur NetBSD le fichier s'appelle booti386.img pour une taille de 2.8 Mo.
Déposer le fichier boot*.img dans l'arborescence à partir de laquelle sera créée l'image ISO du média bootable, exemple : boot/boot.img.
Créer l'image ISO avec les options -b et -c de la commande mkisofs

% mkisofs -v -R -T -V 'LABEL' -b boot/boot.img -c boot/boot.catalog -o ./image.iso
Explications ...
-b boot/boot.img     l'image de la disquette bootable dans l'arborescence du FS contenu dans l'image ISO

II-C - Les médias réinscriptibles

Un médium RW s'utilise de la même manière qu'un médium R à la différence près qu'il est possible d'effacer la (ou les) image(s) ISO gravée(s) via la commande cdrecord.
Commande pour effacer un CD-RW

% cdrecord dev=X,Y,Z blank=all

II-D - La commande cdrecord et les noyaux Linux à partir de la version 2.6

À partir de la version 2.6 du noyau Linux, il n'est plus nécessaire d'utiliser un graveur IDE de CD ou de DVD via l'émulation SCSI, mais via l'interface IDE. En migrant à un noyau Linux 2.6.x ou supérieur, il est nécessaire de revoir la configuration de la commande cdrecord.
Les explications détaillées pour effectuer la migration sont fournies avec la paquet (rpm, deb…) de cdrecord. Sur un système Debian, il faut voir le README /usr/share/doc/cdrecord/README.ATAPI.setup.

Usually you would not want to use ide-scsi with Kernel 2.6 for CD-writing, the new kernel provides a (from a user's point of view) superior access method that finally supports DMA access when writing Audio-CDs or using -raw.
If you are converting from ide-scsi first undo the steps 2-7 described above.

- Become root, find out the virtual SCSI ID of your device, running:
cdrecord dev=ATA: -scanbus

- Become root, setup cdrecord's environment - edit /etc/default/cdrecord:
CDR_DEVICE=cdrw
cdrw=ATA:3,0,0 12 30m
Insert the right values, the fields are described in the manpage of cdrecord. Alternatively, you may use this values as cdrecord-parameter or take a frontend with an own configuration scheme, then you don't need to modify /etc/default/cdrecord. The columns must be separated by tabs.

- That's it, cdrecord -prcap should find your writer.

- If you wish to allow non-root users to write CDs, you must give them permissions to do so. Run dpkg-reconfigure cdrecord to set suid-root permissions on the executable, then add your users to the cdrom group (adduser user cdrom) and let the user completely logout and re-login.

II-E - Graver un DVD*

Il existe un utilitaire nommé growisofs qui, tout comme cdrecord, possède de nombreuses options…
Pour graver une image

% growisofs-dvd-compat -Z /dev/dvd=image.iso

Pour graver un répertoire sur le DVD

% growisofs -dvd-compat -Z /dev/dvd -J -R /path/to/disc/root

N.B. Lorsqu'on manipule des DVD vidéos, il faut utiliser l'option -dvd-video, au lieu de -dvd-compat.

Pour effacer un DVD

% dvd+rw-format -blank=full /dev/dvd

Pour copier l'image d'un DVD sur le disque

% readcd dev=/dev/dvd f=image.iso

III - Interfaces graphiques, liens utiles

III-A - Je n'aime pas la ligne de commande

Pour les réfractaires de la ligne de commande, il est possible d'utiliser K3B interface graphique de cdrecord, mkisofs…
K3B est un outil simple, mais puissant pour configurer et utiliser toutes ses belles commandes : disponible sur toutes bonnes distributions avec un serveur X.

screenshot k3b

Il faut également signaler Gnome-baker.

screenshot gnomebaker

et GCombust…

screenshot gcombust

III-B - Liens utiles

- Site officiel de cdrecord et cdrecord-ProDVD

- Dépôt officiel de dvdrtools

- Site officiel de dvd+rw-tools

- Site officiel de K3B