Différences entre les pages « Gravure CD-ROM » et « HotPlug »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
(→‎CD Audio : CUE)
 
imported>SylvainBeucler
m
 
Ligne 1 : Ligne 1 :
Paquets considérés:
+
Au démarrage, se lance après!
aptitude install  mkisofs cdrecord cdda2wav cdparanoia
+
* le montage des systèmes de fichiers
 +
* après le support USB
  
== Outils simples ==
+
Au lancement, il y a ''coldplug'', c'est à dire des événements hotplug comme on branchait tous les périphériques à ce moment-là.
  
Sous Gnome, insérez un CD vierge dans le lecteur: la fenêtre de gravure apparaît. Glissez-déposez des fichiers (ou copiez/collez) des fichiers à l'intérieur, puis cliquez sur ''Fichier->Graver un CD...''. C'est tout :)
+
Fournit par le paquet Debian 'hotplug', ou bien 'udev' (quelle différence?) (udev requiert noyau Linux 2.6).
  
La suite de l'article indique comment graver en ligne de commande. Utilise pour aller plus loin (graver des image .iso téléchargées) et lancer des gravures via une connexion SSH à distance.
+
Fichiers: cf. man 8 hotplug
  
Il y a également l'outil Xcdroast qui fournit une interface graphique pour tout ces outils.
+
----
  
== Créer l'ISO d'un ou de plusieurs fichiers ==
+
Que veut dire ceci?
 +
/etc/hotplug/NAME/DRIVER        driver setup scripts, invoked by agents
 +
Réponse: par exemple:
 +
/etc/hotplug/usb/usb-storage
 +
sera appelé si le périphérique qu'on vient de brancher utilise le module noyau 'usb_storage'
  
mkisofs -R -r -J --hide-rr-moved -V "SauvHome" -o backup.iso /home/toto/
+
Code périphérique "mass storage device":
 +
8/6/80
  
Explication des options utilisées dans mkisofs:
+
Exemple de fichier de hook:
 +
http://forums.gentoo.org/viewtopic-t-113911.html
  
* <code>-R</code> : rajoute l'extension Rock Ridge qui permet de conserver les noms longs et les permissions sous Linux
+
#!/bin/bash
* <code>-r</code> : permet de générer une image qui soit lisible par tout le monde malgré les permissions activées par l'extension Rock Ridge
+
* <code>-J</code> : active l'extension Joliet pour avoir les noms longs sous Windows
+
#create a script to undo our actions upon removal
* <code>--hide-rr-moved</code> : renomme le répertoire RR_MOVED (dû aux extensions Rock Ridge) en un répertoire caché .rr_moved
+
if [ "$INTERFACE" = "8/6/80" ]; then
* <code>-V</code> : spécifie un nom de volume (ici "SauvHome")
+
    if [ "$PRODUCT" = "5e3/702/33" -o "$PRODUCT" = "05e3/0702/0033" ]; then
* <code>-o</code> : spécifie le nom et l'emplacement du fichier ISO (ici backup.iso dans le répertoire courant).
+
        mount /backup
 +
        cat <<'EOF' > $REMOVER
 +
#!/bin/bash
 +
umount -f /backup
 +
EOF
 +
        chmod a+x $REMOVER
 +
    fi
 +
fi
 +
 +
#!/bin/bash
 +
#DEBUG
 +
#echo "======="
 +
#(
 +
#    echo $0 $*
 +
#    env
 +
#)> /tmp/hot.txt
 +
#echo "======="
  
Créer une ISO contenant le répertoire <code>/home/toto/</code>, le fichier <code>/etc/X11/XF86Config-4</code>, et le contenu du répertoire <code>/mnt/win/toto/</code> qui devra apparaître sur le CD dans un répertoire win-toto:
 
  
mkisofs -R -r -J --hide-rr-moved -V "SauvHome" \
+
On note qu'on doit faire directement référence, dans /etc/fstab, à un nom de périphérique (ici /dev/sda1). Ce serait mieux que hotplug nous dise lequel.
  -o backup.iso -graft-points \
 
  /home/toto/ /etc/X11/XF86Config-4 win-toto/=/mnt/win/toto/
 
  
== Récupérer une image ISO à partir d'un CD existant ==
+
Exemple de sortie DEBUG ci-dessus:
 +
SUBSYSTEM=usb
 +
DEVPATH=/devices/pci0000:00/0000:00:10.2/usb3/3-2/3-2:1.0
 +
REMOVER=/var/run/usb/%proc%bus%usb%003%002
 +
PATH=/bin:/sbin:/usr/sbin:/usr/bin
 +
ACTION=add
 +
MODALIAS=usb:v05E3p0702d0033dc00dsc00dp00ic08isc06ip50
 +
PWD=/etc/hotplug
 +
UDEV_LOG=1
 +
MANAGED_EVENT=1
 +
UDEVD_EVENT=1
 +
SHLVL=2
 +
HOME=/
 +
DEVICE=/proc/bus/usb/003/002
 +
INTERFACE=8/6/80
 +
PRODUCT=5e3/702/33
 +
TYPE=usb
 +
PHYSDEVBUS=usb
 +
SEQNUM=379
 +
_=/usr/bin/env
  
dd if=/dev/cdrom of=backup.iso
 
Note: ne pas monter le CD-ROM
 
  
Note2: pour les purs et durs, <code>cat /dev/cdrom > backup.iso</code> fonctionne aussi ;)
+
== Other systems ==
  
== Vérifier une ISO ==
+
=== udev ===
  
En tant que root:
+
udev replaces hotplug and provide the same events
mkdir /tmp/test-iso
 
mount -t iso9660 -o loop fichier.iso /tmp/test-iso
 
cd /tmp/test-iso
 
ls -ail
 
# ...
 
umount /tmp/test-iso
 
  
== Graver une ISO (noyau 2.6) ==
+
=== HAL ===
  
Tout d'abord, dire à cdrecord quel est l'identifiant SCSI virtuel:
+
From <tt>/usr/share/doc/udev/FAQ.gz</tt>:
$ cdrecord dev=ATA: -scanbus
+
<blockquote>
# Si problème, essayer ATAPI:
+
Q: Can I use udev to automount a USB device when I connect it?
# cdrecord dev=ATAPI -scanbus
+
A: Technically, yes, but udev is not intended for this. All major distributions
scsibus1:
+
  use HAL (http://freedesktop.org/wiki/Software_2fhal) for this, which also
        1,0,0  100) 'HL-DT-ST' 'DVD-RW GCA-4080N' '0W33' Removable CD-ROM
+
  watches devices with removable media and integrates into the desktop software.
        1,1,0  101) *
+
</blockquote>
        1,2,0  102) *
 
        1,3,0  103) *
 
        1,4,0  104) *
 
        1,5,0  105) *
 
        1,6,0  106) *
 
        1,7,0  107) *
 
  
De là, modifier <code>/etc/default/cdrecord</code>:
+
== Voir aussi ==
CDR_DEVICE=ATA:1,0,0
 
  
Ensuite, pour retrouver les infos :
+
* http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs : le point sur udev
cdrecord -prcap
+
* http://www.reactivated.net/writing_udev_rules.html
[...]
 
Number of supported write speeds: 3
 
  Write speed # 0:  4234 kB/s CLV/PCAV (CD  24x, DVD  3x)
 
  Write speed # 1:  2822 kB/s CLV/PCAV (CD  16x, DVD  2x)
 
  Write speed # 2:  1764 kB/s CLV/PCAV (CD  10x, DVD  1x)
 
 
 
Pour tester sans graver (pas de laser) : <code>-dummy</code>
 
$ cdrecord -v -dummy -data sarge-i386-netinst.iso
 
[...]
 
Starting to write CD/DVD at speed 24 in dummy TAO mode for single session.
 
Last chance to quit, starting dummy write    0 seconds. Operation starts.
 
Turning BURN-Free off
 
Track 01: Total bytes read/written: 109338624/109338624 (53388 sectors).
 
 
 
Dans /etc/default/cdrecord on n'a pas spécifié de vitesse; commme il s'agit d'un lecteur compatible MMC,
 
il prend dans ce cas la plus élevée possible. Parallèlement, si l'on spécifie <code>speed=1</code> il prend la plus basse possible, soit ici 10x.
 
$ cdrecord -v -data sarge-i386-netinst.iso speed=1
 
 
 
Note: si vous obtenez:
 
cdrecord: Cannot allocate memory. Cannot get SCSI I/O buffer.
 
passez en utilisateur root, ou mettez les permissions setuid (<code>chmod u+s</code>) sur <code>/usr/bin/cdrecord</code>.
 
 
 
 
 
 
 
Quand tout est OK, on grave en réel, sans l'option dummy :
 
cdrecord -v -data sarge-i386-netinst.iso
 
 
 
== CD-RW ==
 
 
 
Si le CD est un RW : le remettre à blanc au préalable
 
 
 
- CD RW neuf :
 
cdrecord -v -blank=all
 
 
 
- CD RW déjà utilisé :
 
cdrecord -v -blank=fast
 
 
 
== CD Audio ==
 
 
 
1°) Extraire les pistes du CD audio vers le disque dur :
 
 
cdda2wav -B -s -x -D /dev/cdrom
 
 
 
* x: qualité maxi
 
* B: toutes les pistes avec les fichiers d'information de chaque piste (si vous utilisez les fichiers d'information)
 
* s: extrait les pistes en stereo
 
* D chemin du périphérique.
 
 
 
Ou :
 
 
 
cdparanoia -B -d /dev/cdrom
 
 
 
 
 
2°) Graver le CD proprement dit
 
 
 
cdrecord speed=2 -dao -eject -useinfo *.wav
 
 
 
* dao: Disk at Once
 
* eject: ejecte le CD lorsque la gravure est terminée
 
* useinfo:utilise les fichiers d'information.
 
 
 
=== CUE ===
 
 
 
Cf. [http://en.wikipedia.org/wiki/Cue_sheet CUE sur Wikipedia]
 
 
 
cdrecord speed=1 cuefile=CDImage.cue -dao -verbose -eject
 
 
 
= Pour les DVD =
 
 
 
Gravure d'une image ISO:
 
 
 
growisofs -dvd-compat -Z /dev/dvd=image.iso
 
 
 
(-dvd-compat verrouille le DVD en écriture après gravure pour plus de compatibilité)
 
 
 
ToDo: compléter la création de l'ISO avec growisofs, expliquer les différences avec mkisofs s'il y a lieu.
 

Version du 30 janvier 2006 à 21:24

Au démarrage, se lance après!

  • le montage des systèmes de fichiers
  • après le support USB

Au lancement, il y a coldplug, c'est à dire des événements hotplug comme on branchait tous les périphériques à ce moment-là.

Fournit par le paquet Debian 'hotplug', ou bien 'udev' (quelle différence?) (udev requiert noyau Linux 2.6).

Fichiers: cf. man 8 hotplug


Que veut dire ceci?

/etc/hotplug/NAME/DRIVER         driver setup scripts, invoked by agents

Réponse: par exemple:

/etc/hotplug/usb/usb-storage

sera appelé si le périphérique qu'on vient de brancher utilise le module noyau 'usb_storage'

Code périphérique "mass storage device": 8/6/80

Exemple de fichier de hook: http://forums.gentoo.org/viewtopic-t-113911.html

#!/bin/bash

#create a script to undo our actions upon removal
if [ "$INTERFACE" = "8/6/80" ]; then
   if [ "$PRODUCT" = "5e3/702/33" -o "$PRODUCT" = "05e3/0702/0033" ]; then
       mount /backup
       cat <<'EOF' > $REMOVER
#!/bin/bash
umount -f /backup
EOF
       chmod a+x $REMOVER
   fi
fi

#!/bin/bash
#DEBUG
#echo "======="
#(
#    echo $0 $*
#    env
#)> /tmp/hot.txt
#echo "======="


On note qu'on doit faire directement référence, dans /etc/fstab, à un nom de périphérique (ici /dev/sda1). Ce serait mieux que hotplug nous dise lequel.

Exemple de sortie DEBUG ci-dessus:

SUBSYSTEM=usb
DEVPATH=/devices/pci0000:00/0000:00:10.2/usb3/3-2/3-2:1.0
REMOVER=/var/run/usb/%proc%bus%usb%003%002
PATH=/bin:/sbin:/usr/sbin:/usr/bin
ACTION=add
MODALIAS=usb:v05E3p0702d0033dc00dsc00dp00ic08isc06ip50
PWD=/etc/hotplug
UDEV_LOG=1
MANAGED_EVENT=1
UDEVD_EVENT=1
SHLVL=2
HOME=/
DEVICE=/proc/bus/usb/003/002
INTERFACE=8/6/80
PRODUCT=5e3/702/33
TYPE=usb
PHYSDEVBUS=usb
SEQNUM=379
_=/usr/bin/env


Other systems

udev

udev replaces hotplug and provide the same events

HAL

From /usr/share/doc/udev/FAQ.gz:

Q: Can I use udev to automount a USB device when I connect it? A: Technically, yes, but udev is not intended for this. All major distributions use HAL (http://freedesktop.org/wiki/Software_2fhal) for this, which also watches devices with removable media and integrates into the desktop software.

Voir aussi