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.
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.
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.
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.
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.
Utiliser cdda2wav
pour effectuer
l'extraction audio.
%
cdda2wav -v255 -D2,0 -B -Owav
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 ».
Le pilote CD ATAPI rend disponible chaque piste
sous la forme
/dev/acddtnn
,
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
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
...
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
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.
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).
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.
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.
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.
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).
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>.