18.6. Création et utilisation de supports optiques (CDs)
Précédent | Chapitre 18. Stockage des données | Suivant

## 18.6. Création et utilisation de supports optiques (CDs)

Contribution de Mike Meyer.

### 18.6.1. Introduction

Les CDs se différencient des disques conventionnels par de nombreuses caractéristiques. Au départ, ils n'étaient pas inscriptible par l'utilisateur. Ils sont conçu pour être lut de façon continue sans délai pour déplacer la tête de lecture entre les pistes. Ils sont également plus facile à déplacer entre systèmes que les supports de même taille à cette époque.

Les CDs possèdent des pistes, mais cela fait référence à un ensemble de données qui peuvent être lues de façon continue et non pas à une particularité physique du disque. Pour produire un CD sous FreeBSD, il faut préparer les fichiers de données qui vont constituer les pistes sur le CD, puis écrire les pistes sur le CD.

Le système de fichiers ISO 9660 a été conçu pour gérer ces différences. Malheureusement il incorpore des limites du système de fichiers qui semblaient normale alors. Mais heureusement, il fournit un mécanisme d'extension qui permet au CDs proprement gravés de passer outre ces limites tout en restant lisibles par les systèmes qui ne supportent pas ces extensions.

Le logiciel `sysutils/cdrtools` comprend mkisofs(8), un programme que vous pouvez utiliser pour produire un fichier de données contenant un système de fichiers ISO 9660. Il dispose d'options pour le support de diverses extensions, et est décrit ci-dessous.

L'outil a utiliser pour graver un CD varie en fonction du type de graveur de CD: ATAPI ou autre. Les graveurs ATAPI utilisent le programme `burncd` qui fait partie du système de base. Les graveurs SCSI ou USB devraient utiliser l'utilitaire `cdrecord` du logiciel porté `sysutils/cdrtools` port. Il est également possible d'utiliser `cdrecord` et d'autres outils pour lecteurs SCSI sur du matériel ATAPI avec le module ATAPI/CAM.

Si vous voulez un programme de gravure de CD avec une interface graphique, vous devriez jeter un oeil à X-CD-Roast ou K3b. Ces outils sont disponibles sous une version pré-compilée ou à partir des logiciels portés `sysutils/xcdroast` et `sysutils/k3b`. X-CD-Roast et K3b nécessitent le module ATAPI/CAM avec des périphériques ATAPI.

### 18.6.2. mkisofs

L'utilitaire mkisofs(8), qui fait partie du logiciel porté `sysutils/cdrtools`, produit un système de fichiers ISO 9660 qui est une image de l'arborescence des répertoires dans un système de fichiers UNIX®. L'utilisation la plus simple est:

`#` `mkisofs -o `fichierimage.iso` `/chemin/vers/arborescence``

Cette commande créera un `fichierimage.iso` contenant un système de fichiers ISO 9660 qui est une copie de l'arborescence `/chemin/vers/arborescence`. Durant le processus de création, les noms de fichiers seront modifiés de façon à respecter les limitations de la norme ISO 9660, et rejettera les fichiers ayant des noms non acceptables pour un système de fichiers ISO.

De nombreuses options sont disponibles pour passer outre ces restrictions. En particulier, `-R` qui autorise les extensions Rock Ridge communes aux systèmes UNIX®, `-J` qui active les extensions Joliet utilisées par les systèmes Microsoft, et `-hfs` peut être utilisé pour créer des systèmes de fichiers HFS utilisés par Mac OS®.

Pour des CDs qui sont destinés à n'être utilisé que sur des systèmes FreeBSD, l'option `-U` peut être utilisée pour désactiver toutes les restrictions au niveau des noms de fichiers. Quand elle est utilisée avec l'option `-R`, cela produit une image de système de fichiers qui est identique à l'arborescence FreeBSD d'origine, cependant ce système de fichiers pourra violer la norme ISO 9660 de nombreuses façon.

La dernière option d'usage général est l'option `-b`. Elle est utilisée pour indiquer l'emplacement de l'image de démarrage à utiliser dans la création d'un CD démarrable « El Torito ». Cette option prend en argument le chemin vers une image de démarrage à partir de la racine de l'arborescence qui va être copiée sur le CD. Par défaut, mkisofs(8) créé une image ISO dans un mode appelé « émulation de disquette », et s'attend donc à une image de démarrage de 1200, 1440 ou 2880 Ko en taille. Certains chargeurs, comme celui utilisé par les disques d'installation de FreeBSD, n'utilisent pas ce mode d'émulation, dans ce cas l'option `-no-emul-boot` devrait être utilisée. Aussi, si `/tmp/monboot` contient un système FreeBSD avec une image de démarrage dans `/tmp/monboot/boot/cdboot`, vous pourrez produire l'image d'un système de fichiers ISO 9660 dans `/tmp/bootable.iso` de cette façon:

`#` `mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/monboot`

Cela étant fait, si vous avez le pilote `md` configuré dans votre noyau, vous pouvez monter le système de fichiers avec:

`#` `mdconfig -a -t vnode -f /tmp/bootable.iso -u 0` `#` `mount -t cd9660 /dev/md0 /mnt`

A ce moment vous pouvez vérifier que `/mnt` et `/tmp/monboot` sont identique.

Il existe de nombreuses autres options que vous pouvez utiliser avec mkisofs(8) pour régler finement son comportement. En particulier: les modifications d'une organisation ISO 9660 et la création de disques Joliet et HFS. Voir la page de manuel mkisofs(8) pour plus de détails.

### 18.6.3. burncd

Si vous disposez d'un graveur de CD ATAPI, vous pouvez utiliser la commande `burncd` pour graver une image ISO sur un CD. `burncd` fait partie du système de base, installé sous `/usr/sbin/burncd`. Son utilisation est très simple, car il dispose de peu d'options:

`#` `burncd -f `cddevice` data `fichierimage.iso` fixate`

Gravera une copie de `fichierimage.iso` sur `cddevice`. Le périphérique par défaut est `/dev/acd0`. Consultez burncd(8) pour les options pour fixer la vitesse d'écriture, éjecter le CD après gravure, et graver des données audios.

### 18.6.4. cdrecord

Si vous n'avez pas de graveur de CD ATAPI, vous devrez utiliser `cdrecord` pour graver vos CDs. `cdrecord` ne fait pas partie du système de base; vous devez l'installer soit à partir du logiciel porté `sysutils/cdrtools` ou de la version pré-compilée appropriée. Des modifications du système de base peuvent provoquer le dysfonctionnement des versions binaires de ce programme, et donner lieu à une production de “dessous de bouteille”. Vous devrez par conséquent soit mettre à jour le logiciel porté quand vous mettez à jour votre système, soit si vous suivez la branche -STABLE, mettre à jour le logiciel porté lorsqu'une nouvelle version est disponible.

Bien que `cdrecord` dispose de nombreuses options, l'usage de base est même plus simple qu'avec `burncd`. La gravure d'une image ISO 9660 se fait avec:

`#` `cdrecord dev=`device` `fichierimage.iso``

La partie délicate dans l'utilisation de `cdrecord` est la recherche de la valeur à utiliser pour l'option `dev`. Pour déterminer le bon paramètre à utiliser, utilisez l'indicateur `-scanbus` de `cdrecord`, qui produira des résultats du type:

`#` `cdrecord -scanbus` Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) *

Cela donne la valeur `dev` appropriée pour les périphériques listés. Recherchez votre graveur de CD dans la liste, et utilisez les trois chiffres séparés par une virgule comme valeur pour `dev`. Dans notre cas le périphérique de gravure est 1,5,0, donc l'entrée appropriée serait `dev=1,5,0`. Il existe des manières plus simple de spécifier cette valeur, consultez la page de manuel cdrecord(1) pour des détails. C'est également la documentation à consulter pour des informations sur la gravure de pistes audios, le contrôle de la vitesse, et d'autres choses.

### 18.6.5. Dupliquer des CDs Audio

Vous pouvez dupliquer un CD audio en effectuant l'extraction des données audio du CD vers un ensemble de fichiers, puis graver ces fichiers sur un CD vierge. Le processus est légèrement différent entre lecteurs ATAPI et SCSI.

Procédure 18.1. Lecteurs SCSI

1. Utiliser `cdda2wav` pour effectuer l'extraction audio.

   `%` `cdda2wav -v255 -D2,0 -B -Owav`

2. Utiliser `cdrecord` pour graver les fichiers `.wav`.

   `%` `cdrecord -v dev=`2,0` -dao -useinfo *.wav`

   Assurez-vous que `2,0` est choisi correctement, comme décrit dans Section 18.6.4, « cdrecord ».

Procédure 18.2. Lecteurs ATAPI

1. Le pilote CD ATAPI rend disponible chaque piste sous la forme `/dev/acd`d`t`nn``, où `d` est le numéro de lecteur, et `nn` est le numéro de la piste écrit sur deux digits décimaux. Donc la première piste sur le premier lecteur est `/dev/acd0t01`, la seconde est `/dev/acd0t02`, la troisième `/dev/acd0t03`, et ainsi de suite.

   Assurez-vous que les fichiers appropriés existent sous `/dev`. Si ces entrées sont absentes, forcez le système à lire le disque à nouveau:

   `#` `dd if=/dev/acd0 of=/dev/null count=1`

2. Extraire chaque piste en utilisant dd(1). Vous devez également préciser une taille de bloc durant l'extraction des fichiers.

   `#` `dd if=/dev/acd0t01 of=piste1.cdr bs=2352` `#` `dd if=/dev/acd0t02 of=piste2.cdr bs=2352` ...

3. Graver les fichiers récupérés en utilisant `burncd`. Vous devez spécifier que ce sont des fichiers audio, et que `burncd` devra fermer le disque une fois terminé.

   `#` `burncd -f `/dev/acd0` audio piste1.cdr piste2.cdr `...` fixate`

### 18.6.6. Dupliquer des CDs de données

vous pouvez copier un CD de données vers un fichier image équivalent au fichier créé avec mkisofs(8), et vous pouvez l'utiliser pour dupliquer n'importe quel CD de données. L'exemple présenté ici suppose que votre lecteur de CDROM est les périphérique `acd0`. Remplacez-le avec le périphérique correct.

`#` `dd if=/dev/acd0 of=fichier.iso bs=2048`

Vous disposez maintenant d'une image, vous pouvez la graver comme décrit plus haut.

### 18.6.7. Utiliser des CDs de données

Maintenant que vous avez créé une CDROM de données standard, vous voulez probablement le monter et lire les données présentes. Par défaut, mount(8) suppose que le système de fichier à monter est de type `UFS`. Si vous essayez quelque chose comme:

`#` `mount /dev/cd0 /mnt`

vous obtiendrez une erreur du type Incorrect super block, et pas de montage. Le CDROM n'est pas un système de fichiers de type `UFS`, aussi toute tentative de montage de ce type échouera. Vous devez juste préciser à mount(8) que le système de fichiers est du type `ISO9660`, et tout fonctionnera. Cela se fait en spécifiant l'option `-t cd9660` option à mount(8). Par exemple, si vous désirez monter un CDROM, contenu dans le lecteur `/dev/cd0`, sous `/mnt`, vous devrez exécuter:

`#` `mount -t cd9660 /dev/cd0 /mnt`

Notez que votre nom de lecteur (`/dev/cd0` dans cet exemple) pourra être différent, en fonction de l'interface utilisée par votre lecteur de CDROM. De plus l'option `-t cd9660` ne fait qu'exécuter la commande mount_cd9660(8). L'exemple précédent pourrait être réduit à:

`#` `mount_cd9660 /dev/cd0 /mnt`

Vous pouvez généralement utiliser des CDROMs de données de n'importe quelle provenance de cette façon. Les disques avec certaines extensions ISO 9660 pourront se comporter de façon étrange, cependant. Par exemple, les disques Joliet conservent tous les noms de fichiers en utilisant des caractères Unicodes sur 2 octets. Le noyau FreeBSD ne comprend pas l'Unicode, mais le pilote CD9660 de FreeBSD est en mesure de convertir au vol les caractères Unicode. Si des caractères non-anglais apparaissent sous la forme de points d'interrogation, vous devrez préciser la table de caractères locale que vous utilisez avec l'option `-C`. Pour plus d'information, consultez la page de manuel mount_cd9660(8).

### Note:

Pour pouvoir effectuer cette conversion de caractères à l'aide de l'option `-C`, le module `cd9660_iconv.ko` devra être chargé. Cela peut être fait soit en ajoutant au fichier `loader.conf` la ligne:

cd9660_iconv_load="YES"

puis en redémarrant la machine, soit en chargeant directement le module avec kldload(8).

Occasionnellement, vous pourrez obtenir le message Device not configured (périphérique non configuré) lors d'une tentative de montage d'un CDROM. Cela veut généralement dire que le lecteur de CDROM pense qu'il n'y a pas de disque dans le lecteur, ou que le lecteur n'est pas visible sur le bus. Cela peut demander plusieurs secondes à un lecteur de CDROM de s'apercevoir qu'il a été chargé, soyez donc patient.

Parfois, un lecteur de CDROM SCSI peut être manquant parce qu'il n'a pas eu suffisamment de temps pour répondre à la réinitialisation du bus. Si vous avez un lecteur de CDROM SCSI, veuillez ajouter l'option suivante à la configuration de votre noyau et recompiler votre noyau.

options SCSI_DELAY=15000

Ceci demande à votre bus SCSI une pause de 15 seconds au démarrage, pour donner à votre lecteur de CDROM une chance de répondre la réinitialisation du bus.

### 18.6.8. Graver des CDs de données brutes

Il est possible de graver directement un fichier sur CD, sans créer de système de fichiers ISO 9660. Certaines personnes le font dans le cas de sauvegardes. Cela est beaucoup plus rapide que de graver un CD standard:

`#` `burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate`

Afin de récupérer les données gravées sur un tel CD, vous devez lire les données à partir du fichier spécial de périphériques en mode caractère:

`#` `tar xzvf /dev/acd1`

Vous ne pouvez monter ce disque comme vous le feriez avec un CDROM classique. Un tel CDROM ne pourra être lu sous un autre système d'exploitation en dehors de FreeBSD. Si vous voulez être en mesure de monter le CD, ou d'en partager les données avec un autre système d'exploitation, vous devez utiliser mkisofs(8) comme décrit plus haut.

### 18.6.9. Utilisation du pilote de périphérique ATAPI/CAM

Contribution de Marc Fonvieille.

Ce pilote permet d'accéder aux périphériques ATAPI (lecteurs de CD-ROM, graveurs CD-RW, lecteur de DVD etc...) par l'intermédiaire du sous-système SCSI, et autorise l'utilisation d'applications comme `sysutils/cdrdao` ou cdrecord(1).

Pour utiliser ce pilote, vous devrez ajouter la ligne suivante au fichier `/boot/loader.conf`:

atapicam_load="YES"

puis redémarrez votre machine.

### Note:

Si vous préférez compiler en statique dans le noyau le support atapicam(4), vous devrez ajouter au fichier de configuration du noyau la ligne:

device atapicam

Vous avez également besoin des lignes suivantes dans votre fichier de configuration:

device ata device scbus device cd device pass

qui devraient être déjà présentes. Puis recompilez, installez votre nouveau noyau, et enfin redémarrez votre machine.

Lors du démarrage, votre graveur devrait apparaître, comme suit:

acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Le lecteur doit être accessible via le nom de périphérique `/dev/cd0`, par exemple pour monter un CD-ROM sous `/mnt`, tapez juste ce qui suit:

`#` `mount -t cd9660 `/dev/cd0` /mnt`

En tant que `root`, vous pouvez exécuter la commande suivante pour obtenir l'adresse SCSI du graveur:

`#` `camcontrol devlist` <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)

Donc `1,0,0` sera l'adresse SCSI à utiliser avec cdrecord(1) et tout autre application SCSI.

Pour plus d'information concernant ATAPI/CAM et le système SCSI, consultez les pages de manuel atapicam(4) et cam(4).

Précédent | Niveau supérieur | Suivant
18.5. Périphériques de stockage USB | Sommaire | 18.7. Création et utilisation de supports optiques (DVDs)

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.