3. Ecrire un CD

Contenu de cette section

``Si en fumée tu te transformes, je ne cesserai de jouer pendant que tu te consumes.'' (L'empereur Néron en écrivant ses propres CDs classiques)

En général l'écriture d'un CD se fait en deux étapes :

Il est aussi possible de combiner les deux étapes en une avec un tube mais ceci n'est pas recommandé parce que ce n'est pas fiable. Voir ci-dessous.

3.1 Déterminez à quel périphérique SCSI générique le graveur est attaché

( Veuillez noter : la façon actuelle de nommage des périphériques SCSI sous Linux est compliquée à souhait et pas assez fiable. Le fait que je la décrive ici en maints détails ne devrait pas être mal interprété comme la confirmation de cette état de faits. )

Après avoir suivi toutes les étapes du dernier chapitre, votre système devrait être capable de gérer le gravage de CDs. Cette section peut être utilisée comme preuve que tout fonctionne comme prévu.

Lancez la commande dmesg. Elle devrait rapporter les messages du noyau Linux, avec ceux imprimés lors du démarrage (limitation : seulement les 200 derniers) et contient des informations sur le graveur de CDs connectés au bus SCSI.

Exemple simple :

Vendor: YAMAHA Model: CDR100 Rev: 1.11 Type: WORM ANSI SCSI revision: 02 Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

Cette machine possède quatre périphériques SCSI connectés (vous ne pouvez pas le voir donc je vous le dis), avec les ID SCSI allant de 0 à 3. Le graveur est le quatrième périphérique SCSI physiquement présent et doit donc être connecté sur /dev/sgd (le quatrième périphérique SCSI générique en comptant commence à a). Dans ce cas, la commande

cdwrite --eject --device /dev/sgd

ouvre le tiroir et est un test pour voir si tout fonctionne correctement.

Un exemple plus compliqué :

            scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
            scsi1 : Adaptec 1542
            scsi : 2 hosts.

              Vendor: HP      Model: C4324/C4325  Rev: 1.20
              Type:   CD-ROM                      ANSI SCSI revision: 02
            Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

              Vendor: IBM     Model: DPES-31080   Rev: S31Q
              Type:   Direct-Access               ANSI SCSI revision: 02
            Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

            scsi : detected 1 SCSI cdrom 1 SCSI disk total.
            SCSI device sda: hdwr sector= 512 bytes.

Dans cet exemple deux contrôleurs SCSI hébergent un périphérique SCSI chacun. Quel gâchis (ils sont capables d'héberger jusqu'à sept périphériques chacun). Ce n'est pas ma configuration alors arrêtez de demander si j'ai trop d'argent... Cependant dans le but d'être un exemple dont on peut se passer, cette configuration est excellente. :-)

Dans l'exemple ci-dessus le graveur de CD a l'ID SCSI 2 mais elle est associée au premier périphérique SCSI générique /dev/sga parce que c'est le premier périphérique SCSI physiquement présent que Linux a détecté. J'espère que ceci montre clairement que l'ID SCSI d'un périphérique n'a rien à voir avec le périphérique générique associé.

Deux questions restent en suspens : qu'arrive-t-il si vous prenez le mauvais périphérique ? Si vous ne spécifiez ni l'option --<MANUFACTURER> ni n'écrivez de données sur le périphérique, en général un message d'avertissement est affiché et rien de plus :

                bash$ cdwrite  --eject  --device /dev/sgb

                Unknown CD-Writer; if this model is compatible with any
                supported type, please use the appropriate command line
                flag.

                Manufacturer:  IBM
                Model:         DPES-31080
                Revision:      S31Q

Dans ce cas le périphérique /dev/sbg est un disque dur SCSI (d'IBM).

Si vous écrivez des données sur le mauvais périphérique, vous en écrasez le contenu d'origine et endommagerez votre système de façon probablement irrémédiable. Faites attention, cela m'est déjà arrivé par accident.

3.2 Rassembler les logiciels

En général cela prend plus de temps qu'on ne le croit ; Rappelez-vous que les fichiers manquants ne peuvent pas être ajoutés une fois que le CD est écrit. :-)

Gardez aussi à l'esprit qu'un certain montant de l'espace libre d'un CD est utilisé pour stocker les informations sur le système de fichiers ISO 9660 (en général quelques Mo).

3.3 Stocker les données sur un CD

Le terme ISO 9660 se rapporte au format dans lequel les données sont stockées sur le CD, pour être plus précis : c'est le système de fichiers sur le CD.

Bien sûr, l'apparence des fichiers stockés dans ce format est unifié par le noyau Linux comme pour tout autre système de fichiers. Si vous montez un CD dans l'arborescence des répertoires, vous ne pouvez pas distinguer son contenu des autres fichiers... à part le fait qu'on ne peut écrire dessus... même pas pour root. :-) (Le mécanisme utilisé pour unifier l'apparence des fichiers est appelé système de fichiers virtuel, en abrégé VFS.

Les possibilités de ISO 9660 ne sont pas si riches comparées à celles du système de fichiers ext-2 qui est normalement utilisé sous Linux. Par contre, le CD n'est inscriptible qu'une seule fois et certaines possibilités n'ont même pas de sens. Les limitations du système de fichiers ISO 9660 sont :

3.4 Créer un système de fichiers ISO 9660

Avant de pouvoir utiliser un support de stockage (par exemple une disquette, un disque dur ou un CD), il doit avoir un système de fichiers (en langage DOS : être formaté). Ce système de fichiers est responsable de l'organisation et de l'incorporation des fichiers qui devraient être stockés sur le support.

Bon, un CD inscriptible ne l'est qu'une fois et donc si nous y écrivons un système de fichiers vide, il serait formaté -- mais resterait pour l'éternité complètement vide. :-)

Nous avons donc besoin d'un outil qui crée le système de fichiers en même temps qu'il copie les fichiers sur le CD. Cet outil s'appelle mkisofs. Une utilisation simple ressemble à ceci :

                 mkisofs  -r -K  -o cd_image   collection_privee/
                                 `---------'   `----------------'
                                      |                |
                   ecrire la sortie vers    prendre repertoire comme entree

L'option -r positionne les permissions de tous les fichiers pour être lisibles publiquement sur le CD et permet les extensions Rock Ridge. C'est ce qu'on veut en général et l'utilisation de cette option est recommandée jusqu'à ce que vous sachiez ce que vous faites. (Astuce : sans le -r, le point de montage prend les permissions de collection_privee !) L'option -K corrige simplement une erreur dans l'implémentation Linux et empêche le dernier fichier du CD d'être détruit (pas vraiment, mais Linux ne peut pas le lire). Vous avez besoin de la version patchée de mkisofs pour cela. Cette option est équivalente à l'option -P de cdwrite.

Veuillez regarder la page de manuel de mkisofs pour plus de détails.

mkisofs essaiera de convertir tous les noms de fichiers au format 8.3 utilisé par DOS pour assurer une compatibilité maximale. En cas de conflits de noms (des fichiers différents qui auraient le même nom 8.3), des numéros sont utiliséE>X-CD-Ro ANSI SCSI revision: 02 Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

Cette machine possède quatre périphériques SCSI connectés (vous ne pouvez pas le voir donc je vous le dis), avec les ID SCSI allant de 0 à 3. Le graveur est le quatrième périphérique SCSI physiquement présent et doit donc être connecté sur /dev/sgd (le quatrième périphérique SCSI générique en comptant commence à a). Dans ce cas, la commande

cdwrite --eject --device /dev/sgd

ouvre le tiroir et est un test pour voir si tout fonctionne correctement.

Un exemple plus compliqué :

            scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
            scsi1 : Adaptec 1542
            scsi : 2 hosts.

              Vendor: HP      Model: C4324/C4325  Rev: 1.20
              Type:   CD-ROM                      ANSI SCSI revision: 02
            Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

              Vendor: IBM     Model: DPES-31080   Rev: S31Q
              Type:   Direct-Access               ANSI SCSI revision: 02
            Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

            scsi : detected 1 SCSI cdrom 1 SCSI disk total.
            SCSI device sda: hdwr sector= 512 bytes.

Dans cet exemple deux contrôleurs SCSI hébergent un périphérique SCSI chacun. Quel gâchis (ils sont capables d'héberger jusqu'à sept périphériques chacun). Ce n'est pas ma configuration alors arrêtez de demander si j'ai trop d'argent... Cependant dans le but d'être un exemple dont on peut se passer, cette configuration est excellente. :-)

Dans l'exemple ci-dessus le graveur de CD a l'ID SCSI 2 mais elle est associée au premier périphérique SCSI générique /dev/sga parce que c'est le premier périphérique SCSI physiquement présent que Linux a détecté. J'espère que ceci montre clairement que l'ID SCSI d'un périphérique n'a rien à voir avec le périphérique générique associé.

Deux questions restent en suspens : qu'arrive-t-il si vous prenez le mauvais périphérique ? Si vous ne spécifiez ni l'option --<MANUFACTURER> ni n'écrivez de données sur le périphérique, en général un message d'avertissement est affiché et rien de plus :

                bash$ cdwrite  --eject  --device /dev/sgb

                Unknown CD-Writer; if this model is compatible with any
                supported type, please use the appropriate command line
                flag.

                Manufacturer:  IBM
                Model:         DPES-31080
                Revision:      S31Q

Dans ce cas le périphérique /dev/sbg est un disque dur SCSI (d'IBM).

Si vous écrivez des données sur le mauvais périphérique, vous en écrasez le contenu d'origine et endommagerez votre système de façon probablement irrémédiable. Faites attention, cela m'est déjà arrivé par accident.

3.2 Rassembler les logiciels

En général cela prend plus de temps qu'on ne le croit ; Rappelez-vous que les fichiers manquants ne peuvent pas être ajoutés une fois que le CD est écrit. :-)

Gardez aussi à l'esprit qu'un certain montant de l'espace libre d'un CD est utilisé pour stocker les informations sur le système de fichiers ISO 9660 (en général quelques Mo).

3.3 Stocker les données sur un CD

Le terme ISO 9660 se rapporte au format dans lequel les données sont stockées sur le CD, pour être plus précis : c'est le système de fichiers sur le CD.

Bien sûr, l'apparence des fichiers stockés dans ce format est unifié par le noyau Linux comme pour tout autre système de fichiers. Si vous montez un CD dans l'arborescence des répertoires, vous ne pouvez pas distinguer son contenu des autres fichiers... à part le fait qu'on ne peut écrire dessus... même pas pour root. :-) (Le mécanisme utilisé pour unifier l'apparence des fichiers est appelé système de fichiers virtuel, en abrégé VFS.

Les possibilités de ISO 9660 ne sont pas si riches comparées à celles du système de fichiers ext-2 qui est normalement utilisé sous Linux. Par contre, le CD n'est inscriptible qu'une seule fois et certaines possibilités n'ont même pas de sens. Les limitations du système de fichiers ISO 9660 sont :

3.4 Créer un système de fichiers ISO 9660

Avant de pouvoir utiliser un support de stockage (par exemple une disquette, un disque dur ou un CD), il doit avoir un système de fichiers (en langage DOS : être formaté). Ce système de fichiers est responsable de l'organisation et de l'incorporation des fichiers qui devraient être stockés sur le support.

Bon, un CD inscriptible ne l'est qu'une fois et donc si nous y écrivons un système de fichiers vide, il serait formaté -- mais resterait pour l'éternité complètement vide. :-)

Nous avons donc besoin d'un outil qui crée le système de fichiers en même temps qu'il copie les fichiers sur le CD. Cet outil s'appelle mkisofs. Une utilisation simple ressemble à ceci :

                 mkisofs  -r -K  -o cd_image   collection_privee/
                                 `---------'   `----------------'
                                      |                |
                   ecrire la sortie vers    prendre repertoire comme entree

L'option -r positionne les permissions de tous les fichiers pour être lisibles publiquement sur le CD et permet les extensions Rock Ridge. C'est ce qu'on veut en général et l'utilisation de cette option est recommandée jusqu'à ce que vous sachiez ce que vous faites. (Astuce : sans le -r, le point de montage prend