Graver sous Linux.

Posté par . Modéré par Fabien Penso.
Tags : aucun
0
25
jan.
2001
Matériel
Graver sous Linux, pose de nombreuses interrogations, de la configuration du kernel aux différents types de fichiers en passant par le multisession et les fichiers audio. Pourtant c'est une opération facile une fois que l'on a acquis les bases. Ce tutoriel vous guidant pas à pas devrait vous faciliter les choses.

Note du modérateur: Merci à Lionel, Manu et Soufiane pour cet excellent tutoriel, n'hésitez pas à le lire et relire en cliquant sur l'icone. Bref un gros travail à ne pas louper...

Graver sous Linux



La gravure sous Linux est une opération simple, néamoins, il se pourrait que le modèle que vous désirez acquérir ne soit pas supporté par Linux, aussi par mesure de précaution il est plus sage de se référer d'abord à la
Hardware-HOWTO



Installer un graveur dans une machine est une opération très simple, en effet dans le cas d'un graveur externe il suffit de le raccorder au port adéquat sinon, il suffit de procéder comme pour l'ajout d'une unité de disque c'est à dire ouvrir la machine, repérer un emplacement 5"1/4 de libre, mettre en place le graveur, accorder l'alimentation puis, dans le cas d'un modèle SCSI à la nappe adéquate idem pour un modèle ATAPI



Quelque soit le type de matériel que vous utiliserez, le kernel le considèrera comme un périphérique SCSI. Donc si les options ci aprés ne sont pas incluses dans le kernel, il faudra recompiler votre kernel et les rajouter (comme les montrent les screenshots). Vous pouvez vous référez au README inclu dans les sources du kernel ou à la documentation que l'on peut trouver par exemple chez Lea-Linux
Aussi, si votre matériel est en SCSI il vous suffit, à ce niveau d'activer le support de la carte controleur à laquelle ce graveur est raccordé.



Par contre s'il est en ide vous aurez besoin de recompiler votre kernel avec le module scsi-généric comme vous le montre les 2 screenshots suivants:



  • http://infonomade.linuxfr.org/tests/graveur/scsi1B.png

  • http://infonomade.linuxfr.org/tests/graveur/scsi1.png

  • http://infonomade.linuxfr.org/tests/graveur/scsi2B.png

  • http://infonomade.linuxfr.org/tests/graveur/scsi2.png



En outre vous devez rajouter append="hda=ide-scsi"
en remplaçant hda par/hdX où X correspond au périphérique IDE associé à votre graveur dans votre

/etc/lilo.conf. Ce qui donne, dans le cas de la machine empi




image=/boot/linuz

label=linux

root=/dev/sda5

append="hda=ide-scsi"

initrd=/boot/initrd-smp.img

read-only



Dans le cas d'un périphérique USB( kernel >= 2.2.18 ), PCMCIA ou sur port Parallèle il vous faut également activer le support adéquat. Ne pas oublier le loopback, pour pouvoir monter un fichier ISO dans l'arborescence.



Passons à la gravure proprement dite, le format de fichier natif des cdroms étant l'iso9660, Il vous faudra d'abord convertir, par exemple de l'ext2 en iso9660 à l'aide de l'outil mkisofs qui peut vous générer votre fichier sur disque ou dans un pipe. Par précaution, dans les exemples qui suivent nous utilisons un fichier disque temporaire ( attention prévoir un espace disque disponible suffisant ).



Il existe de nombreux utilitaires pour graver sous X, parmis lesquels:




Dans nos exemples nous utilisons cdrecord.



Maintenant, abordons les différentes variations possibles:


pour de plus amples informations vous pouvez vous référez à la page man de cdrecord


Avec les conventions que nous avons adoptées la syntaxe de base des commandes sera de la forme :



cdrecord speed=X dev=Y,Z,W /rep/iso


X est la vitesse de gravure, Y,Z,W sont obtenus par cdrecord --scanbus. et /rep/iso correspond au fichier ISO à graver dans son répertoire.




  • CDR: Pour graver : cdrecord speed=X dev=Y,Z,W

  • CDRW: Les disques réinscriptibles ont la même syntaxe pour l'écriture que les CDR, par contre l'effacement s'effectue à l'aide de la commande cdrecord blank=all dev=Y,Z,W

  • monosession
    cdrecord speed=X dev=Y,Z,W /rep/iso

    Pour graver en monosession en format iso9660 des fichiers contenus dans
    /source :


    • mkisofs -LlrT -o /rep/iso /source

      /source correspond aux données à graver.


    • cdrecord speed=X dev=Y,Z,W /rep/iso




  • Multisession

    Pour graver en multisession avec cdrecord
    il faut faire attention à plusieurs points:


    • Chaque session doit être gravée avec l'option -multi, sauf la dernière.

    • mkisofs a besoin du CD sur lequel l'on va graver en multisession pour créer son système de fichier.

    • Pour tester le CD tout de suite, il faut l'éjecter et le remettre, sinon, on ne verra que les fichiers qui étaient là avant la dernière gravure.





Maintenant, suivons étape par étape les instructions suivantes:

  • 1- Première session:

    Vous créez votre image ISO comme pour un CD mono-session:


    # mkisofs -lLrR -o image.iso /cd_rep


    Ensuite, vous pouvez graver en n'oubliant surtout pas l'option
    -multi :


    # cdrecord dev=0,4,0 speed=4 -multi -v -data image.iso


  • 2- Sessions intermédiaires:

    Ici, mkisofs, a besoin d'informations fournies par cdrecord :


    # cdrecord -msinfo dev=0,4,0


    Ceci vous donne deux nombres séparés par une virgule (par exemple 0,15292).
    Maintenant, vous pouvez appeler mkisofs avec les options -C et -M qui lui permettent de savoir où va commencer la session et quels sont les éléments déjà présents sur le CD:


    # mkisofs -lLrR -C 0,15292 -M /dev/scd0 -o imageN.iso /cd_repN


    ATTENTION: le CD auquel on veut rajouter la nouvelle session, dans être dans le lecteur /dev/scd0.

    Maintenant, vous pouvez graver avec cdrecord l'ISO imageN.iso sans oublier l'option -multi:


    # cdrecord dev=0,4,0 speed=4 -multi -v -data imageN.iso



  • 3- La dernière session

    La construction de l'image se déroule comme dans l'étape 2-:


    # cdrecord -msinfo dev=0,4,0 15292,68700

    # mkisofs -lLrR -C 15292,68700 -M /dev/scd0 -o imagef.iso /cd_repf


    Par contre, cdrecord est utilisé sans l'option -multi:


    # cdrecord dev=0,4,0 speed=4 -v -data imagef.iso




Des fichiers audios:



  • cdda2wav -B -D0,1,00,1,0 correspond au cdrom où est placé le CD audio.


  • cdrecord speed=X dev=Y,Z,W -audio plage1.wav plage2.wav ...



Des données et des fichiers audio
Voici un exemple complet, en prime le système de fichier de la partie données est de l'ext2.


Il faut commencer par créer un fichier image, de la taille de la partition de données désirée.



# dd if=/dev/zero of=cd.img bs=1k count=500000




Puis l'on crée notre système de fichier, en supposant que l'on ait un point de montage nommé
/a.




# mke2fs cd.img


# mount -o loop cd.img /a


# cp -R /r/c2/mp3/Annihilator /a


# umount /a



Maintenant nous pouvons mettre des données sur ce système de fichier.



# mount -o loop cd.img /a



# cp -R /r/c2/mp3/Annihilator /a



# umount /a



Maintenant, l'on peut graver à la fois la partie en ext2 et les plages musicales.



# cdrecord dev=0,2,0 speed=4 -v -data image1.img -audio plage1.wav plage2.wav


Petit retour sur les fichiers Audio avec cdrdao:


cdrdao permet de graver les CDs sous forme de structure+données.
La structure du CD est donnée dans un fichier (TOC-file plus connu sous le nom de CUE-SHEET dans le monde de Windows) et les données sont stockées dans un ou plusieurs fichiers. L'avantage du DAO (Disk-At-Once) est que l'on gère soi-meme les blancs (pré et post-GAP length) entre les plages. Ainsi on peut dupliquer exactement un CD multipiste (si vous copiez un CD audio par cdrecord, vous aurez 2 secondes de blanc entre les plages). A partir de la version 1.1.3, cdrdao permet la copie à la volée (CD à CD).

Passons au côté pratique de la chose:

Création d'une image de CD à partir d'un lecteur de CD:

# cdrdao read-cd --device Y,Z,W --speed X --datafile image.bin image.toc

Exemple:

# cdrdao read-cd --device 0,0,0 --speed 40 --datafile debian_cd1.bin debian_cd1.toc

Astuce: si vous devez copier un CD uniquement audio, utilisez
cdda2wav
pour extraire les plages audio (cdrdao n'est pas très véloce).

Exemple:

# cdrdao read-toc --device 0,0,0 --speed 40 --datafile musique.wav musique.toc
# cdda2wav -D 0,0,0 -S 40 -x -t 1+13 musique.wav

(on suppose que le CD a 13 plages)
Maintenant, vous avez obtenu deux fichiers, l'un pour les donnees
(.bin ou .wav, selon l'exemple) et l'autre pour la structure (.toc).


  • Gravure d'une image de CD:

    # cdrdao write --device 0,1,0 --speed 8 debian_cd1.toc


  • Copie à la volée d'un CD:

    # cdrdao copy --source-device 0,0,0 --device 0,1,0 --speed 8 --on-the-fly



Conseil de choix entre cdrecord ou cdrdao: lorsque vous devez creer un CD, il est plus simple d'utiliser cdrecord. Pour les copies de CD, cdrdao est plus approprié.

La chasse aux idées reçues:
certaines personnes ayant l'habitude d'autres OS, vous conseilleront d'arréter l'économiseur d'écran, de déconnecter le réseau ... nous avons, pour vous donner un exemple, gravé et en même temps écouté un CD édité sous emacs, lancé un netscape, utilisé gtop et décodé un fichier mpeg sur une machine de bi PIII de 64Mo sous KDE2 où de très nombreux services étaient déjà lancés.
comme vous pouvez le constater sur le screenshots la machine a un peu chargé mais la gravure c'est très bien passée. ( Ah, bien sûr xv tournait aussi pour réaliser le screenshot).


  • Netscape

  • emacs ( visble sous le terminal )

  • décodage mpeg avec Xmovie

  • Gtop

  • Xosview

  • KDE2

  • xmcd

  • Compilation du kernel.



http://infonomade.linuxfr.org/tests/graveur/chargeB.png

http://infonomade.linuxfr.org/tests/graveur/charge.png



Comme vous pouvez le constater graver sous linux est une opération fort simple et en prime vous pouvez continuer à vous amuser avec votre machine pendant ce temps.



Maintenant envisageons quelques petits scripts qui devraient vous faciliter la vie.




  • copiecd


    Voici tout d'abord un script vous permettant de recopier un CD data vers votre graveur..


    #!/bin/sh
    #
    # script de copie des CD
    #

    # Le repertoire ou nous stockons notre ISO.
    ISO=/usr/local/src/image_cd

    #
    # mettez le device correspondant a votre CDROM.
    #
    CDROM=/dev/scd0

    #
    # Pensez a changer la vitesse et le device
    # correspondant a votre graveur.
    #
    SPEED=4

    grep /cdrom /etc/mtab

    if [ $? -eq 1 ]; then

    mount -rt iso9660 $CDROM /cdrom
    fi

    mkisofs -LlrT -o $ISO/cd.raw /cdrom >/dev/null 2>&1
    cdrecord speed=$SPEED dev=4,0 -eject $ISO/cd.raw

    umount /cdrom
    rm -f $ISO/cd.raw

    exit 0



  • grave

    Ce script vous permet de graver aussi bien un fichier simple qu'une ISO ou un répertoire.

    Sa syntaxe est très simple: grave nomFichier
    Il présupose que vous ayez compilé votre kernel avec le support du loopback et que vous ayez suffisament d'espace disque pour générer l'ISO le cas échéant.


    #!/bin/sh
    #
    # script pour graver un fichier
    #

    # Le repertoire ou nous stockons notre image.
    ISO=/usr/local/src/image_cd

    #
    # Pensez a changer la vitesse et le device
    # correspondant a votre graveur.
    #
    SPEED=4


    FICHIER=$1

    usage(){

    echo
    echo "$0 fichier"
    echo "ou fichier est un fichier ou un repertoire"
    echo
    exit 1

    }

    creer_iso(){

    mkisofs -LlrT -o $ISO/cd.raw $FICHIER
    }


    if [ -z $FICHIER ]; then
    usage
    elif [ -f $FICHIER ] && [ -s $FICHIER ]; then
    mount -t iso9660 -o loop $FICHIER /mnt
    if [ $? -ne 0 ]; then
    creer_iso
    fi
    umount /mnt
    cdrecord speed=$SPEED dev=4,0 -eject $FICHIER
    echo "c'est un fichier regulier"
    elif [ -d $FICHIER ]; then
    creer_iso
    cdrecord speed=$SPEED dev=4,0 -eject $ISO/cd.raw
    rm -f $ISO/cd.raw
    else
    usage
    fi

    exit 0




Bien sûr ces scripts sont très basiques, mais ils vous donnent une petite idée de ce que l'on peut faire, à vous d'écrire les votres suivant vos besoins.

Maintenant, une petite utilisation de grave vu précédement : Le backup hebdomadaire.

Vous désirez faire un backup hebdomadaire de votre /home. Simplement c'est un peu monotone, aussi vous décidez que c'est à la machine de faire son propre backup. Ceci ne pose aucun problème à condition qu'il y ait un CD vierge de taille suffisante pour archiver votre répertoire.
Pour ce faire il suffit d'entrer les données suivantes dans la crontab(5) de root par exemple en supposant que votre compte de travail soit toto


0 3 * * 5 echo "pense a mettre un CD vierge pour demain"| mail -s "Le backup" toto >/dev/null 2>&1
0 3 * * 6 /usr/local/bin/grave /home >/dev/null 2>&1


Rédacteurs:








Aller plus loin

  • # ...

    Posté par . Évalué à 0.

    article très complet !!

    juste un détail : pas d'accent avant deux consonnes... donc interrogation et non intérrogation
    • [^] # Re: ...

      Posté par . Évalué à 1.

      Faute corrigée, je te remercie.
      • [^] # Re: ...

        Posté par . Évalué à 1.

        Juste un petit ajout : on peut effacer un cdrw "rapidement" : remplacer blank=all par blank=fast. Ca efface la TOC, le "pregap" et le PMA (sic ;).
        Pour plus de renseignements :
        cdrecord blank=help

        Voilà, merci pour cet article, très bonne idée (un peu tard pour moi, mais bon :).
        Je conseille vivement GnomeToaster qui grave les mp3 à la volée sur un CD-R => CD-DA...
      • [^] # ponctuation manquante

        Posté par . Évalué à -1.

        Il me semble qu'il manque une virgule...
        "[nous avons] gravé et en même temps écouté un CD édité sous emacs [...]"
        Un CD édité sous Emacs? Non?! Il fait ça, aussi?

        C'est tout à fait mineur comme remarque, mais ça fait quand même bizarre, un CD édité. :)
        (note: c'est bon signe, j'ai rien d'autre à redire!)
  • # Obligé de recompiler le Noyau ?

    Posté par . Évalué à 0.

    Je me demande s'il n'y a pas moyen de ne PAS recompiler le noyau, car c'est malgré tout une opération délicate.

    En tous cas hors de portée pour un novice (Je pense en particulier à une utilisation domestique de Linux).

    J'ai cru lire quelque part (mais j'ai peut-être rêvé) que la mandrake avait un module emulate-scsi pré-compilé.

    Si ce n'est pas le cas, est ce qu'il est envisageable de faire une telle chose ?

    Daniel
    • [^] # Re: Obligé de recompiler le Noyau ?

      Posté par . Évalué à 1.

      Je grave sous Linux Mandrake 7.2, sans avoir recompilé le noyau. j'ai juste ajouté une option au noyau pour lui indiquer quels lecteurs utiliser avec le module ide-scsi. Le noyau est donc effectivement précompilé avec les bonnes options. J'utilise xcdroast.
    • [^] # Re: Obligé de recompiler le Noyau ?

      Posté par . Évalué à 0.

      Le noyau Mandrake est compilé avec l'émulation scsi et les graveurs sont automatiquement configurés pour l'utiliser, donc tout est très simple avec Mandrake. (bravo à eux)
  • # graver sous Linux .. c'est simple

    Posté par . Évalué à 1.

    pas besoins d recomplier le noyau !!
    dans lilo, mettre l'option nonide du device
    charger le module scsi et c'est tout.
    ça grave facile et meme en pleine charge, avec un Racer à 600F
    D'ailleurs ,jamsi plus recompilé de noyau depuis 2 ans..
    Merci pour cette très bonnne aide
    • [^] # Re: graver sous Linux .. c'est simple

      Posté par . Évalué à 0.

      Je fais juste #/sbin/modrobe ide-scsi et je lance xcdroast ou gtoaster.
      C'est tout.
      • [^] # Re: graver sous Linux .. c'est simple

        Posté par . Évalué à 0.

        Eh oui, mais pour ça il faut que le noyau ait été compilé avec l'option scsi, et que le module ide-scsi ait été compilé également (bon, c'est déjà fait su beaucoup de distribs, mais bon...).
  • # Gravure

    Posté par . Évalué à 0.

    C'est vrai que la gravure sous Linux n'est pas très compliquée une fois qu'on a pris le temps de lire les quelques HOWTO sur le sujet.
    Et puis avec un ou deux scripts, ca devient vite très facile de graver.
    Quel régal de pouvoir graver tout en faisant pleins de choses à coté: StarOffice ou Quake3 même; contrairement à d'autres OS ou meme l'économiseur d'écran est catastrophique.
    Note: je n'ai qu'un PC233MHz.
  • # Vous abusez ...

    Posté par . Évalué à 0.

    lancer gtop sous Kde ... powah, ca doit vraiment
    consommer à mort les libs kde et libs gnome en
    même temps : pourtant, ya pas beaucoup de ram sur la bécane de test !!!
    • [^] # Beau?

      Posté par . Évalué à 1.

      Bah ouais, mais c'est plus joli que motif, na!

      Surtout le boulot de Tigert... (Bah ouais, j'aime bien...)
  • # ca marche nickel ... enfin presque

    Posté par . Évalué à 1.

    Article super intéressant.

    Juste une remarque (pas sur l'article, mais sur la gravure ss Linux en gén.): un gros regret:
    ne pas pouvoir faire de la copie audio a la volée avec xcdroast. C'es chiant de devoir
    ripper les pistes avant.

    Une remarque aussi: si comme moi, certaines personnes utilisent une chaine SCSI complète, N'UTILISEZ PAS votre lecteur zip au cours de la gravure, ca la fait planter immédiatement (le module ppa emule des interfaces SCSI pour connecter le lecteur Zip et apparement pourris le fonctionnement de la carte SCSI).
  • # Au sujet du append...

    Posté par . Évalué à 1.

    Je ne comprend pas à quoi sert le : append="hda=ide-scsi

    Je grave chez moi avec un graveur IDE émulé en SCSI, et je n'ai jamais rajouté cette ligne... C'est grave docteur ?
    Rq : je n'arrive à graver que des données, cdrecord refuse l'audio.... ya p'tet un rapport....
    • [^] # Re: Au sujet du append...

      Posté par . Évalué à 1.

      Tu donnes pas assez d'informations sur ta machine (graveur, distribution, version du noyau, chipset, ...) pour que quelqu'un puisse t'aider.
  • # X-CDRoast marche très bien

    Posté par . Évalué à 1.

    C'est toujours bien de poster un mode d'emploi détaillé, mais pourquoi ne pas graver tout simplement avec X-CDRoast ?

    Je fais tout avec : récupérer des pistes audio, graver une compilation, graver mes sauvegardes de données. C'est quand même vachement plus simple que de se taper des lignes de commandes complexes avec cdrecord. Ce qui est dommage à mon avis c'est que ce genre de mode d'emploi doit plutôt effrayer les Windoziens/Mac (ou d'autres) qui veulent tâter de Linux... S'il existe des programmes graphiques bien faits (cas de X-CDRoast), c'est toujours mieux.
    • [^] # Re: X-CDRoast marche très bien

      Posté par . Évalué à 1.

      En relisant le RTFM tu verras que l'on à bien donné les liens vers 3 logiciels de gravure sous X: X-CDRoast, KreateCD et GNOME toaster.
  • # Completement hors sujet

    Posté par (page perso) . Évalué à 1.

    je voudrai savoir si quelqu'un sais ou je pourrrai me procurer la video "milka" que l'on voit sur le screenshoot.

    Au passage si l'emulation ide-scsi marche impec avec la mandrake 7.2 (sans rien avoir a configurer), la 7.1 is un peu plus problematique (tout du moins avec mon Plex12/10/32)
  • # cd udf ?

    Posté par . Évalué à 0.

    existe-t-il des softs permettant d'utiliser un cd rw comme une disquette, du type adaptec directCD ?
    • [^] # Re: cd udf ?

      Posté par . Évalué à 1.

      Oui, cdrecord le fait avec l'option ..euh un truc comme -packets (a voir avec man cdrecord)
      J'ai jamais essayé car g un graveur qui ne le supporte pas mais boN..

      salut...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.