[Linux-bruxelles] Re: Configuration udev
Frederic Peters
fpeters at entrouvert.com
Lun 10 Jan 20:58:15 CET 2005
Eric Freyens écrivait :
> > Que voudrais-tu faire?
> Je désire qu'il y aie un lien symbolique entre /dev/hdc et /dev/dvd.
> et un deuxième /dev/hdc vers /dev/cdrom.
/etc/udev/scripts/cdsymlinks.sh et /etc/udev/rules.d/cd-aliases.rules
devraient obtenir un résultat satisfaisant sans effort de ta part,
quelle version d'udev utilises-tu ?
"Courte" explication d'udev
===========================
Dans /etc/udev/rules.d/ tu as les règles qu'udev va appliquer; il
s'agit généralement de liens vers des fichiers dans /etc/udev/, pour
faciliter la maintenance.
Ces fichiers contiennent des lignes pouvant ressemblar à:
BUS="ide", KERNEL="hd[a-z]", SYSFS{removable}="1",
PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k",
SYMLINK="%c{1} %c{2} %c{3} %c{4} %c{5} %c{6}"
Donc, ici, en présence d'un périphérique ide, dont le "nom noyau" est
hda, hdb... hdz, dont l'attribut "removable" vaut 1, le script
cdsymlinks.sh va être exécuté, en passant à celui-ci %k, c'est-à-dire
le "nom noyau".
Que fait cdsymlinks.sh ? Il doit renvoyer le lien à créer, par
exemple, simple CD, tu peux appeler à la main cdsymlink.sh hdc et il
t'affichera "cdrom". En fait, il peut même renvoyer plusieurs liens,
il suffit de les séparer par des espaces. J'ai donc chez moi, sur mon
lecteur/graveur CD, lecteur DVD, "cdrom cdrw dvd" comme résultat.
Le résultat du script ? On retourne à la règle udev, SYMLINK=, les
liens vont être créés, lesquels ? Ceux spécifiés, ici %c{1} sera
remplacé par le premier "mot" du résultat, %c{2} par le second, etc.
Le résultat sera donc chez moi d'avoir /dev/cdrom, /dev/dvd et
/dev/cdrw pointant tout trois vers /dev/hdc.
Je reviens sur ce que j'écrivais, « l'attribut "removable" », d'où
vient celui-ci ? de sysfs, que tu peux naviguer dans /sys/. Pour
connaître toutes les infos dispo sur mon hdc, je peux faire:
udevinfo -a -p /sys/block/hdc
(ça sort deux pages de résultats, je ne copie/colle pas)
Comment trouver /sys/block/hdc ? En connaissant /dev/hdc et en
exécutant "udevinfo -q path -n /dev/hdc" (qui donnera /block/hdc)
Il y a un article sur l'écriture de règles udev:
http://www.reactivated.net/writing_udev_rules.html
Imaginons que la situation actuelle te déplaise, comment faire
simplement ce que tu veux ?
- supprimer les liens cd* dans /etc/udev/rules.d/
- y créer un fichier rules-d-eric.rules contenant:
BUS="ide", KERNEL="hdc", SYMLINK="cdrom"
BUS="ide", KERNEL="hdd", SYMLINK="dvd"
Et hop. C'est même plus court qu'un script dégueu tapé dans
/etc/init.d/, ça va faire plaisir à Jérôme.
[je ne pensais pas faire un truc si long, s'il n'y a pas trop
d'erreurs, ça pourrait être copié/collé dans un article sur le site.]
Frédéric
Plus d'informations sur la liste de diffusion Linux-bruxelles