8.2. Configuration des périphériques de masse

Les périphériques de masse sont les périphériques permettant de manipuler de grandes quantité de données. Il s'agit généralement des périphériques connectés sur bus SCSI, des disques durs et lecteurs de CD/DVD, des graveurs et des scanners.

8.2.1. Configuration des périphériques SCSI

Les périphériques de qualité sont généralement connectés sur bus SCSI, en raison des capacités de celui-ci en termes de débit et de performances. En particulier, les disques durs SCSI restent privilégiés sur les systèmes haut de gamme comme les serveurs par exemple, parce que le bus SCSI permet d'utiliser plusieurs périphériques simultanément.

Sous Linux, les périphériques SCSI sont accédés par l'intermédiaire des fichiers spéciaux de périphérique /dev/sdx pour les disques durs ou /dev/scdn pour les lecteurs ou les graveurs de CD-ROM, où x est la lettre définissant le disque dur et n est le numéro du lecteur ou du graveur de CD-ROM. Les autres périphériques SCSI sont accédés par l'intermédiaire des fichiers spéciaux de périphériques SCSI génériques, à savoir les fichiers /dev/sgn. Notez que certains périphériques pourront être utilisés par l'un ou l'autre de ces fichiers spéciaux, selon la fonctionnalité à laquelle on cherche à accéder. Par exemple, les programmes de gravage utilisent les fichiers spéciaux de périphériques /dev/sgn pendant le gravage, alors que la simple lecture d'un CD avec un graveur se fait via le fichier spécial de périphérique /dev/scdn correspondant.

La prise en charge des périphériques SCSI se fait au niveau du noyau pour les fonctionnalités de base. En réalité, la configuration des périphériques SCSI se restreint à celle de la carte SCSI utilisée. Les fonctionnalités de plus haut niveau sont reléguées au niveau applicatif. Par exemple, la prise en charge des différents graveurs SCSI du marché est réalisée par les logiciels de gravage eux-mêmes, de même que la prise en charge des différents scanners l'est par les logiciels d'acquisition d'image.

La gestion des contrôleurs SCSI au niveau du noyau se fait par l'intermédiaire des options du menu « SCSI support » du programme de configuration du noyau. Outre l'option « SCSI support » que l'on activera bien évidemment, ce menu comprend les options suivantes, que l'on choisira en fonction du type des périphériques SCSI à utiliser :

Certains périphériques SCSI disposent de plusieurs numéros d'unités logiques sur leur bus. Il peut donc être nécessaire, pour ces périphériques, d'activer l'option « Probe all LUNs on each SCSI device » afin de pouvoir les utiliser correctement. Les autres options ne sont pas essentielles, consultez leur aide pour plus de détails à leur sujet.

En plus des options générales de la prise en charge du SCSI, il est impératif de sélectionner le gestionnaire de périphériques capable de piloter votre contrôleur SCSI. Cela peut être fait dans le sous-menu « SCSI low-level drivers ». Vous devrez y activer la prise en charge pour votre matériel, aucune règle ne peut donc être définie à ce niveau. Consultez la documentation de votre matériel pour déterminer le gestionnaire de périphériques adéquat à utiliser.

Une fois la configuration du noyau effectuée, vous n'avez plus qu'à le compiler et à l'installer pour pouvoir utiliser vos périphériques. La manière de procéder a été décrite en détail dans la Section 7.3.

8.2.2. Configuration des disques durs IDE

Les disques durs IDE ont longtemps souffert d'un gros défaut par rapport aux disques SCSI : celui de ne pas pouvoir effectuer des opérations sans l'intervention du processeur. En effet, l'envoi des données aux disques se faisaient classiquement par de nombreuses écritures dans les ports d'entrée/sortie des contrôleurs de disques, obligeant ainsi le système à consacrer une part importante des ressources processeur uniquement pour les accès disque. Ce défaut a été corrigé avec la montée en puissance du mode DMA (abréviation de l'anglais « Direct Memory Access »). Le mode DMA des périphériques IDE existe depuis les tous débuts de l'architecture PC, mais les premiers contrôleurs DMA n'étaient pas capables de suivre la cadence des disques dur, même des plus anciens. Il n'a donc malheureusement pas été utilisé pendant longtemps, jusqu'à ce qu'une nouvelle technologie soit mise au point : l'Ultra DMA. La plupart des jeux de composants des cartes mères modernes sont à présent capables de gérer l'Ultra DMA, dont les fréquences de bus les plus courantes sont 33, 66 et 100MHz.

Note : Même si les interfaces IDE ont à présent réduit l'écart avec les interfaces SCSI au niveau du taux de transfert des données, elles ont toujours un train de retard par rapport à elles. En effet, les périphériques SCSI sont d'une part capables de communiquer entre eux sur leur bus, déchargeant ainsi totalement le processeur de ce travail de transfert des données, et d'autre part capables de traiter plusieurs requêtes d'affilée sans l'intervention du processeur. Ces fonctionnalités déchargent le bus système, mais sont également extrêmement utiles pour les systèmes d'exploitation multitâches. Ceux-ci peuvent en effet envoyer plusieurs commandes aux périphériques et effectuer d'autres traitements pendant qu'elles s'exécutent en asynchrone. Les disques SCSI ont donc un taux d'occupation du processeur et du bus système nettement moindre, et permettent aux systèmes tels que Linux d'atteindre un degré de réactivité inégalé avec les disques IDE classiques. Cela dit, les périphériques IDE coûtent nettement moins cher que les périphériques SCSI, et c'est sans doute là la clef de leur succès.

Par défaut, Linux utilise les disques durs en mode de compatibilité, c'est à dire qu'il n'active pas l'Ultra DMA pour les accès aux disques. Les performances du système en sont donc grandement réduites au niveau des accès disque. Ceci se remarque particulièrement lors des gros transferts de données, car le cache disque géré par Linux peut ne plus être suffisant pour accélérer les opérations à destination du disque. Notez cependant que pour une utilisation courante, les mécanismes de cache du système sont tellement puissants que vous ne pourriez détecter aucun désagrément (j'ai par exemple pu travailler pendant plus de quatre mois sur ma machine avant de m'apercevoir que mes disques étaient mal configurés). Toutefois, puisqu'on peut faire mieux, autant configurer correctement les contrôleurs IDE...

Les contrôleurs IDE peuvent être configurés grâce à l'utilitaire hdparm. Comme son nom l'indique, cet utilitaire permet de modifier les paramètres des disques durs et des contrôleurs IDE. Il permet également de tester les performances de votre configuration, et peut donc servir d'outil de diagnostic très utile. La mesure du débit de votre sous-système disque (sans les mécanismes de cache du système) peut être en effet réalisée facilement avec la commande suivante :

hdparm -t périphérique
périphérique est le fichier spécial de périphérique de votre disque dur.

Note : Si vous obtenez des valeurs inférieures ou égales à 3 Mo/s, vous avez réellement un problème de configuration. Les premiers disques UltraDMA 33 peuvent atteindre facilement 8 à 10 Mo/s, les disques UltraDMA 66 atteignent facilement 17 à 22 Mo/s, et les disques les plus récents en UltraDMA 100 peuvent aller encore bien au delà.

Faites bien attention à ne pas utiliser l'option -T à la place de l'option -t. En effet, vous mesureriez le débit dans le sous-système disque complet de Linux, avec ses mécanismes de cache. Vous obtiendriez alors des taux de transfert nettement plus grands (dix fois plus au moins), qui ne représenteraient pas le taux de transfert réel de votre interface IDE.

L'activation de l'UltraDMA avec hdparm se fait simplement avec l'option -d. Cette option prend en paramètre un entier pouvant valoir 0 ou 1, selon que l'UltraDMA doit être activé ou non. Cependant, cette option peut ne pas être suffisante pour les disques modernes, pour lesquels il faut également préciser le mode de transfert à utiliser. Ce mode peut être indiqué à l'aide de l'option -X, qui prend en paramètre un nombre dont la valeur est le numéro du mode plus une constante identifiant le type de transfert utilisé. Les transferts de type PIO (c'est à dire le mode dans lequel le processeur effectue lui-même les transferts par l'intermédiaire des ports d'entrée / sortie) utilisent la constante 8, les transferts de type DMA simple utilisent la constante 32, et les transferts en UltraDMA utilisent la constante 64. Ainsi, la sélection du mode UltraDMA mode 2 pour le disque maître du premier contrôleur IDE se fait avec la commande suivante :

hdparm -d1 -X66 /dev/hda

La valeur 66 utilisée ici signifie donc que les transfers se font en UltraDMA (constante 64), mode 2 (valeur 2).

Le choix des modes de fonctionnement dépend bien entendu du matériel installé sur votre ordinateur. Cependant, la ligne de commande de l'exemple précédent conviendra dans la plupart des cas.

Note : Pour que l'UltraDMA soit utilisable, il faut bien entendu que les pilotes IDE de votre noyau Linux le gèrent. Généralement, les noyaux des distributions en sont capables, mais si d'aventure ce n'était pas le cas, vous devriez recompiler votre noyau. Les options à activer dans le programme de configuration du noyau sont les options suivantes du menu « ATA/IDE/MFM/RLL support » :

  • « Generic PCI IDE chipset support » du menu « IDE, ATA and ATAPI Block devices » ;

  • « Generic PCI bus-master DMA support » ;

  • « Use PCI DMA by default when available ».

Vous devrez également activer le support pour les jeux de composants utilisés par votre carte mère.

L'utilitaire hdparm permet également de fixer d'autres paramètres des contrôleurs IDE. En particulier, il est possible d'activer et de désactiver le mode 32 bits de ces contrôleurs à l'aide de l'option -c. Comme pour l'option -d, l'option -c prend en paramètre un indicateur pouvant valoir 0 ou 1 et permettant d'activer ou de désactiver le mode 32 bits du contrôleur. Notez que certains contrôleurs ne supportent pas correctement le mode de fonctionnement 32 bits et peuvent perdre des données si vous l'activez.

Note : Prenez garde lorsque vous utilisez la commande hdparm. Si vous spécifiez des paramètres incorrects ou non pris en charge par votre matériel, vous pouvez fort bien bloquer complètement vos contrôleurs IDE, et planter ainsi le système en un temps très court. Si d'aventure cela se produisait, il faudrait attendre un peu de temps, jusqu'à ce que le système s'aperçoive de la mauvaise configuration des contrôleurs et les réinitialisent avec leurs paramètres initiaux. Vous pouvez détecter ce genre de réinitialisation dans les messages du noyau, que vous pouvez à tout moment afficher avec la commande dmesg. Sachez toutefois que le risque de corruption du système de fichiers en cas de mauvaise configuration reste bien réel, et qu'il vaut mieux un système légèrement plus lent qu'un système qui détruit vos données en un temps record.

Lorsque vous aurez trouvé les paramètres optimaux de vos contrôleurs de disque, vous pourrez demander au système de conserver ces paramètres par défaut en ajoutant l'option -k1 dans la ligne de commande de hdparm. Par exemple, pour configurer de manière permanente le premier disque IDE en UltraDMA mode 2 et en accès 32 bits, il faut utiliser la commande suivante :

hdparm -c1 -d1 -X66 -k1 /dev/hda

Note : Prenez garde toutefois au fait que les réinitialisations du contrôleur en cas d'erreur reprendront systématiquement les mêmes paramètres, ce qui peut réellement bloquer complètement votre sous-système disque (et planter irrémédiablement votre système). Dans ce cas, il ne vous restera plus que le redémarrage brutal, avec les risques de pertes de données qui en découlent.

La configuration des disques durs et des contrôleurs IDE pourra également être ajoutée dans le script de démarrage de votre système. Ce script est généralement placé dans le répertoire /etc/rc.d/ ou dans le répertoire /sbin/init.d/ selon votre distribution. Bien entendu, il faut réellement être sûr de la commande de configuration utilisée, car elle sera exécutée systématiquement à chaque démarrage.

8.2.3. Installation d'un graveur de CD-ROM

Linux dispose de tous les logiciels permettant de graver des CD-ROM, et ce avec la plupart des graveurs disponibles sur le marché. Il permet de copier des CD et de créer des images disques. Cependant, il n'est pas encore possible d'utiliser le gravage par paquet, qui permet d'utiliser les graveurs de CD comme des périphériques amovibles. Cette fonctionnalité est en effet encore à l'étude, elle sera sans doute disponible sous peu.

8.2.3.1. Notions de base sur le gravage sous Linux

Originellement, tous les graveurs de CD utilisaient l'interface SCSI. Ce n'est que plus tard que les graveurs sur port parallèle et les graveurs IDE ATAPI sont apparus. Actuellement, les graveurs externes connectés sur port parallèle sont de moins en moins vendus. Les graveurs IDE font une belle percée, mais les graveurs SCSI restent incontournables pour les vielles machines dont on n'est pas sûr des performances au niveau des disques. Les logiciels de gravage doivent donc être capable d'utiliser n'importe quel type de graveur, ce qui n'est pas simple. C'est pour cette raison qu'ils utilisent tous l'interface SCSI, aussi bien pour des raisons historiques que pour des raisons techniques. Cela ne signifie pas qu'il est impossible d'utiliser les graveurs ATAPI, car le protocole de communication ATAPI n'est rien d'autre qu'une traduction des commandes IDE en commandes SCSI au niveau matériel.

L'utilisation d'un graveur de CD SCSI ne posera donc pas de problème et se fera de manière directe. En revanche, les graveurs de CD IDE ATAPI devront être accédés par l'intermédiaire d'un émulateur SCSI, qui traduira les commandes SCSI en commandes ATAPI correspondantes. Cet émulateur est géré au niveau du noyau de Linux. Le problème est qu'il est impossible d'activer à la fois le support des CD-ROM IDE ATAPI et l'émulateur SCSI pour les périphériques IDE dans un même noyau. On devra donc faire le choix entre les deux solutions suivantes :

  • soit on n'utilise que l'interface SCSI pour accéder aux lecteurs de CD, et on ne risque aucun conflit ;

  • soit on active les deux fonctionnalités sous la forme de modules, et on n'utilise qu'une seule des interfaces à chaque instant.

La première solution est évidemment la plus simple (et surtout la plus sûre). La deuxième solution permet d'utiliser ses lecteurs de CD-ROM IDE ATAPI normalement avec leur interface native, sauf lorsqu'on désire graver un CD. Comme il n'y a pas de cas où l'interface SCSI est inférieure à l'interface IDE en termes de performances et de fonctionnalités, cette méthode est déconseillée.

8.2.3.2. Configuration du noyau

Vous allez encore une fois avoir à effectuer des choix de configuration dans le noyau pour activer la gestion des périphériques SCSI capables de piloter votre graveur. Les questions concernant les graveurs de CD-ROM sont récapitulées ci-dessous :

« Include IDE/ATA-2 CDROM support »

Cette option permet d'activer la gestion des lecteurs de CD IDE ATAPI. Vous ne devez pas répondre à cette question par 'Y', faute de quoi vous ne pourrez pas utiliser votre graveur de CD. Il vous est en revanche possible de répondre par 'M', pour n'activer la fonctionnalité qu'à la demande, sous la forme de module. La réponse recommandé est 'N', à moins que vous ne sachiez ce que vous faites. En effet, si vous activez cette fonctionnalité, vous risquez d'avoir des conflits avec l'émulation SCSI. Ce problème sera détaillé plus loin.

« SCSI emulation support »

Cette option permet d'activer la gestion des périphériques IDE ATAPI par l'intermédiaire de commandes SCSI. C'est cette option qui va vous permettre d'utiliser votre graveur de CD IDE avec les programmes qui ne peuvent gérer que des graveurs SCSI. Vous pouvez répondre 'N' à cette question si vous n'utilisez ni lecteur de CDROM SCSI ni graveur SCSI. Dans tous les autres cas, il est recommandé de répondre 'Y' à cette question afin d'accéder à votre matériel via l'interface SCSI. Vous pouvez activer cette fonctionnalité sous la forme de module en répondant par 'M' à cette question, cette solution est recommandée si vous avez activé la gestion des CD-ROM IDE ATAPI dans la question précédente.

« Loopback device support »

Cette option permet d'activer une fonctionnalité permettant d'utiliser un fichier comme un périphérique normal. Elle est très utile pour tester les images de CD, car il suffit simplement de monter le fichier image comme un périphérique « loopback ». Il est donc recommandé d'activer cette fonctionnalité, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalité peut être activée sous la forme de module ou non, la réponse recommandée est 'Y'.

« SCSI support »

Cette option permet d'activer la gestion des périphériques SCSI dans votre noyau. Il va de soi qu'il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalité peut être activée sous forme de module ou non. La réponse recommandée est 'Y'.

« SCSI CD-ROM support »

Cette option permet d'activer la gestion des lecteurs de CD SCSI. Il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Il est impératif d'utiliser les modules si vous avez activé la gestion des lecteurs IDE. Vous pouvez intégrer cette fonctionnalité au noyau sans risque sinon. Cette dernière solution est la méthode recommandée, aussi est-il conseillé de répondre 'Y' à cette question.

« Enable vendor-specific extensions (for SCSI CDROM) »

Cette option permet d'autoriser l'emploi d'extensions au protocole SCSI définies par les fabricants de matériels. Certains graveurs utilisent de telles extensions, c'est en particulier le cas des graveurs de CD HP. Toutefois, si vous ne disposez pas d'un tel graveur, il est peu probable que vous ayez à activer cette fonctionnalité. La réponse recommandée est donc 'N'.

« SCSI generic support »

Cette option permet d'utiliser le périphérique SCSI avec des commandes non standards, ce qui requiert l'emploi de programmes capables de communiquer directement avec les périphériques SCSI. C'est le cas pour les graveurs, qui seront pilotés directement par les logiciels de gravage. Il faut donc activer cette fonctionnalité, que l'on dispose d'un graveur SCSI ou IDE. La réponse recommandée est 'Y'.

« Probe all LUNs on each SCSI device »

Cette option permet, lorsqu'on dispose de périphériques SCSI capables de gérer plusieurs numéros d'unité logiques, de leur demander tous ces numéros. Ce type de périphérique est assez rare, et en général chaque périphérique n'utilise qu'un et un seul numéro d'unité logique. Il ne faut donc pas, en général, activer cette fonctionnalité. La réponse recommandée pour cette question est donc 'N'.

Enfin, il faut choisir le pilote bas niveau permettant de gérer son graveur de CD. Pour les graveurs IDE ATAPI, la couche d'émulation suffira et il est inutile de sélectionner un autre pilote. En revanche, pour les graveurs SCSI, il faut choisir le pilote approprié.

Une fois cette configuration effectuée, il ne reste plus qu'à compiler le noyau et les modules et à les installer. La manière de procéder a été décrite dans la section traitant de la compilation du noyau.

8.2.3.3. Configuration des modules du noyau

Vous aurez sans doute à modifier le fichier de configuration /etc/modules.conf si vous avez activé certaines fonctionnalités SCSI sous la forme de modules, afin de charger les modules nécessaires lorsqu'une commande sera effectuée sur l'un des fichiers spéciaux de périphériques SCSI. Si toutes les fonctionnalités SCSI sont intégrées au noyau, cette étape est bien entendue facultative. Les fichiers spéciaux utiles pour les périphériques blocs SCSI sont les fichiers scdx et sgx, où x est le numéro du périphérique. Les fichiers spéciaux du premier groupe sont de type bloc, et permettent d'accéder aux lecteurs de CD SCSI. Les fichiers du deuxième groupe en revanche sont de type caractère, et permettent d'accéder aux périphériques SCSI de manière générique. Les codes majeurs pour ces deux groupes de fichiers spéciaux sont respectivement 11 et 21, il faut donc ajouter les entrées du fichier modules.conf pour les modules nommés block-major-11 et char-major-21. Normalement, ces entrées sont déjà présentes dans le fichier fourni par votre distribution. Cependant, vous aurez à ajouter les lignes suivantes si vous utilisez un graveur de CD IDE ATAPI :

post-install sr_mod modprobe -k ide-scsi

après la ligne indiquant le module à charger pour les périphériques blocs de code majeur 11, et :

post-install sg modprobe -k ide-scsi

pour les périphériques SCSI génériques, de code majeur 21.

Ces deux lignes permettent de demander au noyau de charger également le module ide-scsi lorsque l'un des modules SCSI est chargé. Le module ide-scsi est le module qui se charge d'effectuer l'émulation SCSI pour les périphériques IDE ATAPI.

Il va de soi que lorsque vous aurez utilisé un des fichiers de périphérique SCSI, le module ide-scsi sera chargé. Vous ne pourrez donc plus utiliser le module ide-cd, qui permet d'accéder aux lecteurs IDE par leur interface ATAPI. De même, si vous montez votre lecteur de CD par l'intermédiaire du fichier spécial de périphérique IDE correspondant, le module ide-cd sera chargé. Vous ne pourrez donc plus utiliser le module d'émulation SCSI. La solution est donc, dans ce cas, de décharger les modules inutilisés à l'aide de la commande rmmod. Il est évident que comme vous n'avez pas besoin d'utiliser l'interface IDE de vos lecteurs de CD dans la plupart des cas, le plus simple est simplement de toujours utiliser l'émulation SCSI et ainsi d'éviter tout conflit. Dans ce cas, vous pourrez répondre par 'N' à la question « Include IDE/ATA-2 CDROM support » de la configuration du noyau, surtout si vous ne maîtrisez pas Linux ou si n'avez pas bien assimilé le fonctionnement des modules.

8.2.3.4. Installation des logiciels de gravage

Lorsque le noyau aura été correctement configuré et installé, il ne vous restera plus qu'à installer les logiciels de gravage. Les logiciels indispensables sont les suivants :

  • cdrecord, qui permet de piloter le graveur de CD et d'effectuer les tâches nécessaires pour le gravage ;

  • mkisofs, qui permet de créer des images disques ISO 9660, éventuellement avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh) ;

  • cdda2wav, qui permet d'extraire les données numériques des CD audio.

Vous pourrez vérifier que votre configuration fonctionne correctement avec la commande suivante :

cdrecord -scanbus

Cette commande recherche tous les périphériques SCSI du système. Vous devrez normalement y trouver, en plus de vos autres périphériques SCSI, votre graveur de CD.

8.2.3.5. Utilisation des logiciels de gravage

Nous allons à présent voir les commandes permettant de faire les principales opérations ayant trait au gravage des CDs. Bien que ce document soit consacré à l'installation de Linux et non à son utilisation, elles vous permettront de tester si tout fonctionne correctement.

La copie directe d'un CD peut se faire avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -isosize /dev/scdx
bus représente le bus SCSI sur lequel le graveur est branché, ID le numéro de périphérique du graveur sur ce bus SCSI et lun son numéro d'unité logique (« Logical Unit Number ». Le numéro du bus SCSI et le numéro de périphérique peuvent être obtenus avec la commande cdrecord -scanbus présentée ci-dessus. Le numéro d'unité logique est, dans la majorité des cas, 0. Le nombre n doit ici valoir le facteur multiplicateur de la vitesse de gravage. Vous pouvez essayer avec des valeurs faibles pour commencer, afin d'être sûr que tout se passe bien. Le fichier de périphérique /dev/scdx indiqué dans la ligne de commande de cdrecord doit bien entendu être le fichier de périphérique SCSI du lecteur de CD utilisé pour lire le CD-ROM. L'option -isosize permet de demander à cdrecord de lire la taille de la piste à graver dans le système de fichiers ISO9660 du CD source. Enfin, l'option -dummy permet de faire toutes les opérations en conservant le laser du graveur éteint, ce qui revient à faire un test. Si vous voulez réellement graver votre CD, il suffit de supprimer cette option.

Il va de soi que si vous ne disposez pas d'un lecteur de CD en plus de votre graveur, vous ne pouvez pas utiliser la commande précédente. Dans ce cas, vous devrez faire une image disque en extrayant toutes les données du CD source. Cela peut être réalisé avec la commande suivante :

dd if=/dev/scdx of=image
/dev/scdx est le fichier spécial de périphérique SCSI du lecteur utilisé pour faire l'image (donc, si vous ne disposez que d'un graveur, c'est le fichier spécial de périphérique SCSI de votre graveur), et image est le fichier image qui doit être créé.

Le gravage d'une image disque peut être réalisé avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -data image
où les options sont les mêmes que dans les commandes précédentes.

Si vous désirez créer une image disque à partir des fichiers de votre disque dur, vous pouvez utiliser mkisofs. Ce programme permet de créer une image disque ISO9660, avec les extensions Rock Ridge pour activer les fonctionnalités des systèmes de fichiers Unix (noms de fichiers plus longs, liens symboliques, droits d'accès...), et éventuellement les extensions Joliet utilisées par les systèmes Windows 95, Windows NT, Windows 2000 et XP (noms de fichiers longs Microsoft). Le prix à payer pour cette amélioration est la perte de quelques centaines de kilo octets, ce qui est dérisoire étant donné le gain en portabilité. La ligne de commande à utiliser pour créer une image disque est la suivante :

mkisofs  [-J][-r | -R][-hfs | -apple] [-C début,fin [-M disque]] \
     [-V "nom"] -o image répertoires

Les options -r ou -R, -J et -hfs ou -apple permettent respectivement d'utiliser les extensions Rock Ridge, Joliet ou HFS (pour les disques devant être lus sur les Macintosh). Il est possible de faire des images disque hybrides, qui pourront être lues sur plusieurs systèmes d'exploitation différents. La seule contrepartie est la perte de quelques dizaines de kilo-octets, ce qui est dérisoire. La distinction entre l'option -r et l'option -R est que -r modifie les attributs des fichiers Unix afin que le CD puisse être utilisé sur un autre ordinateur que celui sur lequel le CD a été créé. En particulier, le propriétaire et le groupe des fichiers voient leurs valeurs fixées à 0. L'option -V permet de fixer le nom du volume dans l'image. Il est possible de placer ce nom entre guillemets. Cette fonctionnalité est intéressante si ce nom comprend des espaces.

Il est possible de créer des CD multisessions à condition de spécifier l'emplacement de cette session lors de la création de l'image disque. Cela se fait avec l'option -C de mkisofs. Cette option prend en paramètre le numéro du secteur de début et le numéro du secteur de fin de la session à la suite de laquelle la nouvelle session doit être écrite, séparés par des virgules. Si l'on veut également importer la session précédente (c'est-à-dire permettre l'accès aux données des sessions précédentes comme si elles étaient également présentes dans la session à écrire), il faut utiliser l'option -M, à laquelle il faut indiquer le fichier spécial de périphérique du lecteur contenant le disque dont la session doit être importée.

La détermination des secteurs de début et de fin de la session précédente peut être difficile, mais cdrecord est capable d'obtenir cette information avec la commande suivante :

cdrecord dev=bus,ID,lun -msinfo
Appelé ainsi, cdrecord affiche les secteurs de début et de fin de la dernière session du disque du lecteur spécifié par son option dev, directement dans le format attendu par mkisofs.

L'option -o de mkisofs permet de spécifier le nom du fichier image qui doit être créé. Les paramètres suivant l'option -o constituent la liste des répertoires et des fichiers qui doivent être insérés dans le CD-ROM. Par défaut, chaque répertoire ou fichier indiqué en paramètre est placé dans le répertoire racine du CD-ROM, et l'arborescence des sous-répertoires est respectée. Cependant, il est possible de placer un des répertoires ou fichiers indiqués en paramètre dans un autre répertoire du CD-ROM, à l'aide de la syntaxe suivante :

destination=source
destination est le répertoire destination du CD-ROM, et source le répertoire ou le fichier source à ajouter à l'image disque. De même, il est possible d'exclure certains sous-répertoires de l'image disque à l'aide de l'option -x :
-x répertoire
Les sous-répertoires du répertoire indiqué seront également supprimés de l'image disque.

Vous pouvez tester votre image disque en la montant par l'intermédiaire du périphérique loopback. Il faut pour cela que vous ayez activé la gestion de ce périphérique dans la configuration du noyau. La commande à utiliser pour monter ce type de périphérique est légèrement plus compliquée que pour les systèmes de fichiers classiques :

mount -t iso9660 -o ro,loop=/dev/loop0 image /cdrom
image est le nom de votre fichier image à tester. Cette commande monte le système de fichiers de cette image dans le répertoire /cdrom. La commande umount peut être utilisée pour démonter ce système de fichiers, et elle s'utilise alors exactement comme pour les autres systèmes de fichiers.

Lorsque votre image disque est satisfaisante, vous pouvez la graver avec la première ligne de commande suivante :

cdrecord -v dev=bus,ID,lun speed=n -multi -data image
Vous noterez la présence de l'option -multi, qui permet de demander à cdrecord de créer un disque multisession. Bien entendu, vous pouvez vous passer de cette option si votre disque n'est pas multisession.

La création d'une image disque nécessite d'avoir une place disque égale à la taille de la session à ajouter, ce qui peut être contraignant. Sur les systèmes suffisamment puissants, il est possible de créer l'image disque et de la graver à la volée en créant un tube entre mkisofs et cdrecord. Dans ce cas, il ne faut pas donner de nom à l'image disque dans la ligne de commande de mkisofs, et utiliser l'option - dans la ligne de commande de cdrecord pour lui demander de prendre les données sur son entrée standard. Malheureusement, cette technique n'est pas utilisable facilement pour les disques multisessions, parce que la lecture des informations de la session précédente peut se faire en même temps que le début du gravage. Pour résoudre ce problème, il faut utiliser l'option -waiti de cdrecord, qui lui demande d'attendre l'arrivée des premières données dans le tube avant d'ouvrir le fichier spécial de périphérique du graveur. La ligne de commande complète devient alors assez complexe, comme vous pouvez en juger :

mkisofs -r -M périphérique -C `cdrecord dev=bus,ID,lun -msinfo` \
  fichiers |  cdrecord -v dev=bus,ID,lun speed=vitesse -multi -waiti -

Les commandes présentées ci-dessus ne permettent pas de travailler avec des CD audio. Pour extraire les données audio d'un CD, vous devrez utiliser le programme cdda2wav» :

cdda2wav [-H] -B nom [-tdébut[+fin]] -O wav -D bus,ID,lun

L'option -H permet d'éviter la création des fichiers d'information .inf sur les pistes extraites par cdda2wav. L'option -B permet d'utiliser le nom nom complété d'un numéro pour les fichiers son créés. Les pistes seront donc stockées dans des fichiers portant les noms nom_01, nom_02, etc. L'option -t permet d'indiquer la piste début et la piste fin afin de sélectionner les pistes dont les données audio doivent être extraites. Si la piste de fin n'est pas précisée, toutes les pistes depuis la piste de début jusqu'à la dernière piste du CD seront extraites. De même, si la piste de début n'est pas précisée, l'extraction commencera à partir de la première piste. L'option -O permet d'indiquer le type de fichier de sortie, wav indique ici que les fichiers créés seront au format WAV des fichiers son de Windows. Il est également possible d'utiliser le type de fichier raw, avec lequel les fichiers seront prêts à être gravés tels quels. Enfin, l'option -D permet de spécifier le périphérique SCSI à utiliser pour lire les données audio. Ce périphérique est sélectionné par le numéro du bus SCSI sur lequel il se trouve, son numéro de périphérique dans ce bus et son numéro d'unité logique.

Le gravage des pistes audio peut être réalisé avec la commande suivante :

cdrecord -dummy -v dev=bus,ID,lun speed=n -nofix -audio  piste1.wav \
    piste2.wav ...

L'option -nofix permet ici d'éviter de fermer la session. Elle doit être utilisée si l'on désire rajouter des pistes audio sur le CD-ROM ultérieurement. Si, en revanche, elle est omise, cdrecord fermera automatiquement la session après l'écriture de la dernière piste, et plus aucune donnée ne pourra être ajoutée. La commande suivante vous permettra de fixer le disque a posteriori :

cdrecord -dummy -v dev=bus,ID,lun speed=n -fix

Enfin, si vous disposez d'un graveur de CD réinscriptible, vous pourrez utiliser la commande suivante pour effacer un CDRW :

cdrecord -dummy -v dev=bus,ID,lun -blank=fast
bus,ID,lun représente toujours le périphérique SCSI à utiliser en tant que graveur.

Il est peu probable que vous ayiez à utiliser ces commandes directement, car il existe de nombreux programmes graphique capable de les piloter de manière conviviale (xcdroast, gcombust, cdbakeoven, kreatecd, koncd, etc.). Il est vivement recommandé d'en installer un et de l'utiliser. Ils sont relativement simples d'emploi et leur utilisation ne devrait pas poser de problème particulier.