Liens utiles (+ il y a * mieux c) --------------------------------- **http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html **http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ **http://linuxfr.org/2004/03/03/15608.html ***http://linuxfr.org/~ccomb/12605.html **http://lists.debian.org/debian-kde/2004/03/msg00478.html *http://linuxfr.org/forums/10/4716.html ****http://www.reactivated.net/udevrules.php Script Gestion automatique des périphériques de stockage USB ****http://ccomb.free.fr/wiki/wakka.php?wiki=UsbMassStorage ________________________________________________________________ Résumé: ------ UDEV est le nouveau gestionnaire avancé de périphériques.il remplace DEVFS Il permet notamment de reconnaitre le hardware (clé USB par ex) et de lui attribuer le meme Device name à chaque plug Genre /dev/cleusb comme ça tu mount /dev/cleusb /mnt/usb UDEV est implémenté avec les noyaux 2.6 ________________________________________________________________ Détail: ------- Pour fonctionner il faut que sysfs et /sbin/hotplug soit sur le système. udev permet aux utilisateurs linux d'avoir un /dev dynamique et de permettre la mise en place de nom de device permanent. udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names (using e.g. the Model/Vendor ID Strings in the device > itself). fox:/home/seb# apt-cache show udev Package: udev Priority: extra Section: admin Installed-Size: 732 Maintainer: Marco d'Itri Architecture: i386 Version: 0.042-1 Depends: libc6 (>= 2.3.2.ds1-4), debconf (>= 0.5) | debconf-2.0, hotplug, initscripts (>= 2.85-16), makedev (>= 2.3.1-70) Conflicts: lvm-common (<< 1.5.13) Filename: pool/main/u/udev/udev_0.042-1_i386.deb Size: 265268 MD5sum: be8cb81df38074a7a4cf58ffe19da4d1 Description: /dev/ management daemon udev is a program which dynamically creates and removes device nodes from /dev/. It responds to /sbin/hotplug device events and requires a 2.6 kernel _______________________________________________________________________________ Installation 1) virer "devfs=mount" de lilo.conf (ou de menu.lst de grub) 2) désinstaller devfs 3) installer udev.(apt-get install udev) Le passage vers udev se fait sans problème, il suffit de l'installer et de retirer l'option "devfs=mount" dans votre /etc/lilo.conf ou votre /boot/grub/menu.lst. Déinstallation 1)Inactiver l'initscript d'udev (etc/init.d/udev) [avec un rescue CD ...] L'aborescence normal /dev/ reviendra (udev ne monte qu'une ramdisk sur le "old-style" /dev) 2)apt-get remove udev _______________________________________________________________________________ Les règles: Un rapide ls /dev/ | wc -l montre qu'il y a en gros 1500 entrées sans udev et plus que 200 avec udev udev monte les devices grâce à ses règles qu'il parcourt. Emplacement: /etc/udev/rules.d/ Commentaires : #.. Forme d'une règle: key,[key,...] name [, symlink] 1. au minimum une clé. utilisé pour saoir de quel device on parle 2. nom a mettre dans /dev pour la device. on peut utiliser symlinks ici séparé par des espaces pour de multiples noms. 3. endroit additionnel où il y aura des liens pour la meme device (optionnel). udev créera un unique node pour chaque device. pour etre accessible avec des node multiple genre /dev/cleusb et /dev/usb/cleusb il faut utiliser symlink ex: BUS="usb", SYSFS{serial}="HXOLL0012202323480", NAME="lp_epson", SYMLINK="printers/epson_stylus" Les clés sont les param du BUS et de SYSFS{serial}. Lors que plusieurs clés sont cités il faut répondre à toutes pour que cela fonctionne. ici sera crée /dev/lp_epson et /dev/printers/epson_stylus Pour pouvoir trouver des info rapidement pour les clés un utilitaire au lieu demore /sys/block/*** # udevinfo -a -p /sys/path/to/hardware/info Pour trouver ce path pour la device xxx: (xxx=sda par ex) # udevinfo -q path -n /dev/xxx /block/sda Tout ca en une commande: # udevinfo -a -p `udevinfo -q path -n /dev/xxx` udevinfo -a -p `udevinfo -q path -n /dev/sda` ---------------------- udevinfo starts with the device the node belongs to and then walks up the device chain, to print for every device found, all possibly useful attributes in the udev key format. Only attributes within one device section may be used together in one rule, to match the device for which the node will be created. looking at class device '/sys/block/sda': SYSFS{dev}="8:0" SYSFS{range}="16" SYSFS{removable}="0" SYSFS{size}="80293248" SYSFS{stat}=" 5 0 40 115 0 0 0 0 0 115 115" follow the class device's "device" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2/usb1/1-3/1-3:1.0/host8/8:0:0:0': BUS="scsi" ID="8:0:0:0" SYSFS{detach_state}="0" SYSFS{device_blocked}="0" SYSFS{max_sectors}="240" SYSFS{model}="E040L0 " SYSFS{queue_depth}="1" SYSFS{rev}="" SYSFS{scsi_level}="3" SYSFS{state}="running" SYSFS{timeout}="30" SYSFS{type}="0" SYSFS{vendor}="Maxtor 6" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2/usb1/1-3/1-3:1.0/host8': BUS="" ID="host8" SYSFS{detach_state}="0" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2/usb1/1-3/1-3:1.0': BUS="usb" ID="1-3:1.0" SYSFS{bAlternateSetting}=" 0" SYSFS{bInterfaceClass}="08" SYSFS{bInterfaceNumber}="00" SYSFS{bInterfaceProtocol}="50" SYSFS{bInterfaceSubClass}="06" SYSFS{bNumEndpoints}="02" SYSFS{detach_state}="0" SYSFS{iInterface}="00" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2/usb1/1-3': BUS="usb" ID="1-3" SYSFS{bConfigurationValue}="1" SYSFS{bDeviceClass}="00" SYSFS{bDeviceProtocol}="00" SYSFS{bDeviceSubClass}="00" SYSFS{bMaxPower}=" 0mA" SYSFS{bNumConfigurations}="1" SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0001" SYSFS{bmAttributes}="c0" SYSFS{detach_state}="0" SYSFS{devnum}="12" SYSFS{idProduct}="6830" SYSFS{idVendor}="04b4" SYSFS{manufacturer}="Cypress Semiconductor" SYSFS{maxchild}="0" SYSFS{product}="USB2.0 Storage Device" SYSFS{serial}="DEF1040B44D3" SYSFS{speed}="480" SYSFS{version}=" 2.00" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2/usb1': BUS="usb" ID="usb1" SYSFS{bConfigurationValue}="1" SYSFS{bDeviceClass}="09" SYSFS{bDeviceProtocol}="01" SYSFS{bDeviceSubClass}="00" SYSFS{bMaxPower}=" 0mA" SYSFS{bNumConfigurations}="1" SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0206" SYSFS{bmAttributes}="e0" SYSFS{detach_state}="0" SYSFS{devnum}="1" SYSFS{idProduct}="0000" SYSFS{idVendor}="0000" SYSFS{manufacturer}="Linux 2.6.8-1-386 ehci_hcd" SYSFS{maxchild}="4" SYSFS{product}="VIA Technologies, Inc. USB 2.0" SYSFS{serial}="0000:00:0b.2" SYSFS{speed}="480" SYSFS{version}=" 2.00" looking at the device chain at '/sys/devices/pci0000:00/0000:00:0b.2': BUS="pci" ID="0000:00:0b.2" SYSFS{class}="0x0c0320" SYSFS{detach_state}="0" SYSFS{device}="0x3104" SYSFS{irq}="11" SYSFS{subsystem_device}="0x1234" SYSFS{subsystem_vendor}="0x0925" SYSFS{vendor}="0x1106" looking at the device chain at '/sys/devices/pci0000:00': BUS="" ID="pci0000:00" SYSFS{detach_state}="0" ---------------------- Suivant ta version d'udev, les règles sont soit - toutes dans un /etc/udev/udev.rules, et dans ces cas là il suffit de mettre dans ce fichier ta règle personnalisée plus haut que celle originale (udev n'utilise toujours qu'une par device, la première qu'il trouve) - réparties dans des "/etc/udev/rules.d/XX-gabuzomeu.rules" (ou "XX-gabuzomeu.rules" est probablement "50-udev.rules" pour les règles par défaut), et dans ces cas là tu peut mettre tes règles perso dans un fichier plus prioritaire, genre "10-mes_regles_perso.rules". Pour appliquer les règles: /etc/init.d/udev restart *exemple à moi pour mon disque usb (boite ldlc avec nappe ide)* Mis au début de /etc/udev/rules.d/udev.rules (de façon a ce que cette regle soit prise en compte avant toute autre) BUS="scsi", SYSFS{model}="E040L0", NAME="maxtor%n", SYMLINK="usb/maxtor%n" soit BUS="usb", SYSFS{serial}="DEF1040B44D3", NAME="ddmaxtor%n", SYMLINK="usb/ddmaxtor%n" TP: comprendre pourquoi ça marche. Pour le cas ou il se peut que des node soit crée sans trop qu'on le sache (lecteur de carte usb) il y a une fonction qui permet de gnérer 16 node pour une device et prévoir l'arrivée de nouvelles: ex: BUS="usb", SYSFS{product}="USB 2.0 Storage Device", NAME{all_partitions}="usbhd" ________________________________________________________________________________ Pour EvoPC et evoportable: trouver des clés universelles et les implémenter. Imprimante: SYSFS{product}="USB Printer" CléUSB: ? A VOIR Script Gestion automatique des périphériques de stockage USB ****http://ccomb.free.fr/wiki/wakka.php?wiki=UsbMassStorage