[Udev] Avoir un /dev/sdblabla fixe pour un périphérique
[Udev] Avoir un /dev/sdblabla fixe pour un périphérique
Hello,
J'aurais une question, et les wikis/docs que j'ai lu sur Udev ne m'ont pas trop aidé... :-/
J'aimerais que, au démarrage de mon système, que le DD externe soit reconnu en tant que /dev/sdblabla de manière fixe. C'est à dire que l'emplacement /dev/sdblabla lui soit dédié.
Udev me permet-il de faire ça ? Avec une Rules je pense ? Si oui, comment procéder ?
Merci
Nicolas
J'aurais une question, et les wikis/docs que j'ai lu sur Udev ne m'ont pas trop aidé... :-/
J'aimerais que, au démarrage de mon système, que le DD externe soit reconnu en tant que /dev/sdblabla de manière fixe. C'est à dire que l'emplacement /dev/sdblabla lui soit dédié.
Udev me permet-il de faire ça ? Avec une Rules je pense ? Si oui, comment procéder ?
Merci
Nicolas
- warnaud
- Maître du Kyudo
- Messages : 1640
- Inscription : ven. 11 août 2006, 17:05
- Localisation : Rolle (CH)
Salut, ouais c'est possible ! Mais les règles ne sont pas par défaut sous arch.
Sous Sourcemage j'ai ces 2 fichiers :
/etc/udev/rules.d/60-persistent-storage.rules
et /etc/udev/rules.d/60-persistent-input.rules
A tester, mais ça devrait faire ce que tu veux
Il est aussi à noter que pour éviter d'avoir des interfaces éthernet qui s'amusent à changer de numéro il y'a une règle toute faite :
Bon, c'est quand même clair et simple, je pense qu'à l'avenir on fera nos règles udev seuls tellement la syntaxe est limpide
Sous Sourcemage j'ai ces 2 fichiers :
/etc/udev/rules.d/60-persistent-storage.rules
Code : Tout sélectionner
# persistent storage links: /dev/{disk,tape}/{by-id,by-uuid,by-label,by-path,by-name}
# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <hare@suse.de>
ACTION!="add", GOTO="persistent_storage_end"
SUBSYSTEM!="block", GOTO="persistent_storage_end"
# skip rules for inappropriate block devices
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*", GOTO="persistent_storage_end"
# never access non-cdrom removable ide devices, the drivers are causing event loops on open()
KERNEL=="hd*[!0-9]", ATTRS{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end"
KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GOTO="persistent_storage_end"
# for partitions import parent information
KERNEL=="*[0-9]", IMPORT{parent}="ID_*"
# by-id (hardware serial number)
KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode"
KERNEL=="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}"
KERNEL=="hd*[0-9]", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}-part%n"
KERNEL=="sd*[!0-9]|sr*|st*", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394"
KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="usb_id -x"
KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="scsi_id -g -x -s %p -d $tempnode"
KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="scsi_id -g -x -a -s %p -d $tempnode"
KERNEL=="dasd*[!0-9]", IMPORT{program}="dasd_id --export $tempnode"
KERNEL=="sd*[!0-9]|sr*|dasd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
KERNEL=="sd*[0-9]|dasd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
KERNEL=="st*", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
# by-path (shortest physical path)
KERNEL=="*[!0-9]|sr*", IMPORT{program}="path_id %p", SYMLINK+="disk/by-path/$env{ID_PATH}"
KERNEL=="st*", IMPORT{program}="path_id %p", SYMLINK+="tape/by-path/$env{ID_PATH}"
KERNEL=="sr*|st*", GOTO="persistent_storage_end"
KERNEL=="*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
# by-label/by-uuid (filesystem properties)
KERNEL=="*[!0-9]", ATTR{removable}=="1", GOTO="persistent_storage_end"
IMPORT{program}="vol_id --export $tempnode"
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_SAFE}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_SAFE}"
# BIOS Enhanced Disk Device
KERNEL=="*[!0-9]", IMPORT{program}="edd_id --export $tempnode"
KERNEL=="*[!0-9]", ENV{ID_EDD}=="?*", SYMLINK+="disk/by-id/edd-$env{ID_EDD}"
KERNEL=="*[0-9]", ENV{ID_EDD}=="?*", SYMLINK+="disk/by-id/edd-$env{ID_EDD}-part%n"
LABEL="persistent_storage_end"
Code : Tout sélectionner
ACTION!="add", GOTO="persistent_input_end"
SUBSYSTEM!="input", GOTO="persistent_input_end"
KERNEL=="input[0-9]*", GOTO="persistent_input_end"
# usb devices
SUBSYSTEMS=="usb", IMPORT{program}="usb_id -x"
SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="01", ENV{ID_CLASS}="kbd"
SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="02", ENV{ID_CLASS}="mouse"
# other devices
DRIVERS=="pcspkr", ENV{ID_CLASS}="spkr"
DRIVERS=="atkbd", ENV{ID_CLASS}="kbd"
DRIVERS=="psmouse", ENV{ID_CLASS}="mouse"
ATTRS{name}=="*dvb*|*DVB*|* IR *", ENV{ID_CLASS}="ir"
ATTRS{modalias}=="input:*-*a[068],*|input:*-*a*,[68],*m*", ATTRS{modalias}!="input:*-*k*14A,*r*", ENV{ID_CLASS}="joystick"
ENV{ID_SERIAL}=="", ENV{ID_SERIAL}="noserial"
# by-id links
KERNEL=="mouse*", ENV{ID_BUS}=="?*", ENV{ID_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_CLASS}"
KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{ID_CLASS}=="?*", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{ID_CLASS}"
# by-path
IMPORT{program}="path_id %p"
ENV{ID_PATH}=="?*", KERNEL=="mouse*", SYMLINK+="input/by-path/$env{ID_PATH}-$env{ID_CLASS}"
ENV{ID_PATH}=="?*", KERNEL=="event*", SYMLINK+="input/by-path/$env{ID_PATH}-event-$env{ID_CLASS}"
LABEL="persistent_input_end"
Il est aussi à noter que pour éviter d'avoir des interfaces éthernet qui s'amusent à changer de numéro il y'a une règle toute faite :
Code : Tout sélectionner
mv /etc/udev/rules.d/75-persistent-net-generator.rules.optional /etc/udev/rules.d/75-persistent-net-generator.rules
Plus ça rate, plus ça a de chance de réussir. En somme, un succès n'est qu'une erreur qui a finit par réussir (même par erreur). Ne déséspérez donc pas et perseverez. Utilisez La Rache™
Patientia quod lard quod barrus planto diligo ut licentia
—¤÷(`[¤*Powered By *¤]´)÷¤—
Archlinux ~ Fvwm ~ Irssi ~ URxvt
Patientia quod lard quod barrus planto diligo ut licentia
—¤÷(`[¤*Powered By *¤]´)÷¤—
Archlinux ~ Fvwm ~ Irssi ~ URxvt
- kozaki
- Chu Ko Nu
- Messages : 422
- Inscription : mer. 13 sept. 2006, 22:49
- Localisation : London > . < Paris
- Contact :
Heu j'ai jamais réussi à configurer udev pour qu'il réponde 100 à mes attentes.
Par contre, je monte tous les périphériques amovibles (clés, cartes mémoire & partitions de disques externes) toujours au même endroit grâce aux labels de disques :
$ ls -l /dev/disk/by-label/
Ainsi mes périphériques amovibles sont *toujours* montés au même endroit
Par contre, je monte tous les périphériques amovibles (clés, cartes mémoire & partitions de disques externes) toujours au même endroit grâce aux labels de disques :
$ ls -l /dev/disk/by-label/
Et les indique dans /etc/fstab :total 0
lrwxrwxrwx 1 root root 10 jan 26 02:19 boot -> ../../sdb2
lrwxrwxrwx 1 root root 10 jan 26 01:19 MAXTOR1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 jan 26 01:19 maxtor5 -> ../../sdc5
lrwxrwxrwx 1 root root 10 jan 26 01:19 maxtor6 -> ../../sdc6
lrwxrwxrwx 1 root root 10 jan 26 01:19 maxtor7 -> ../../sdc7
lrwxrwxrwx 1 root root 10 jan 28 20:42 skymedi -> ../../sde1
Code : Tout sélectionner
/dev/data/1 /home ext3 defaults 1 2
/dev/disk/by-label/MAXTOR1 /media/maxtor1 vfat users,noauto,exec 0 0
/dev/disk/by-label/maxtor5 /media/maxtor5 ext2 users,noauto 0 0
/dev/disk/by-label/maxtor6 /media/maxtor6 ext3 users,noauto 0 0
/dev/disk/by-label/maxtor7 /media/maxtor7 ext2 users,noauto 0 0
/dev/disk/by-label/samsung1 /media/samsung1 vfat users,noauto 0 0
/dev/disk/by-label/samsung2 /media/samsung2 ext2 users,noauto 0 0
/dev/disk/by-label/MMC512 /media/MMC512 vfat umask=0,user 0 0
/dev/disk/by-label/skymedi /media/skymedi vfat users,noauto,exec 0 0
/dev/disk/by-label/MSduo64 /media/MSduo64 vfat users,noauto,noexec 0 0
/dev/disk/by-label/MSduo128 /media/MSduo128 vfat users,noauto,noexec 0 0
-
- Maître du Kyudo
- Messages : 2073
- Inscription : sam. 16 sept. 2006, 10:39
- Localisation : 31 - Toulouse Nord
J'y étais arrivé en utilisant un programme en python, qui donnait la syntaxe à insérer (et qui le faisait seul aussi !).
Je ne me souviens du nom... kudev peut-être ?
Sinon, il existe une méthode, un peu compliquée, mais qui marche.
Déjà, le ficher de règle :
Comme tu le vois, on peut renseigner le n° de série, ou le nom du matériel... et c'est là que j'ai oublié comment faire (à part kudev), je reposte dès que je retrouve la solution.
Tu remarques aussi que ma clé usb est montée sur /dev/cle_1Go, mon camescope sur /dev/camescope, mon disque dur externe sur /dev/hd-externe... très pratique pour les scripts ensuite...
EDIT : On obtient les infos via la commande udevinfo, mais c'est compliqué, je sais qu'il faut le lancer en 2 fois... je cherche...
EDIT 2 : voici comment avoir les infos :
On y retrouve le n° de série à la fin du ID_SERIAL...
Tu peux ensuite creuser les autres infos via udevinfo... (man udevinfo)
Je ne me souviens du nom... kudev peut-être ?
Sinon, il existe une méthode, un peu compliquée, mais qui marche.
Déjà, le ficher de règle :
Code : Tout sélectionner
SUBSYSTEMS=="usb", ATTRS{serial}=="00000000000116", NAME="cle_1Go", Mode=="0777"
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Sony", ATTRS{product}=="Sony Handycam", NAME="camescope", Mode=="0777"
SUBSYSTEMS=="usb", ATTRS{product}=="USB TO IDE", NAME="hd-externe", Mode=="0777"
Tu remarques aussi que ma clé usb est montée sur /dev/cle_1Go, mon camescope sur /dev/camescope, mon disque dur externe sur /dev/hd-externe... très pratique pour les scripts ensuite...
EDIT : On obtient les infos via la commande udevinfo, mais c'est compliqué, je sais qu'il faut le lancer en 2 fois... je cherche...
EDIT 2 : voici comment avoir les infos :
Code : Tout sélectionner
$ udevinfo --query=all --name=/dev/cle_1Go
P: /block/sda/sda1
N: cle_1Go
S: disk/by-id/-USB2.0_USB_Flash_Disk_00000000000116-part1
S: disk/by-path/pci-0000:00:1d.7-usb-0:3.3:1.0-scsi-0:0:0:0-part1
S: disk/by-uuid/6CFF-7B84
S: disk/by-label/USB_DISK
E: ID_VENDOR=USB2.0
E: ID_MODEL=USB_Flash_Disk
E: ID_REVISION=0.00
E: ID_SERIAL=USB2.0_USB_Flash_Disk_00000000000116
E: ID_TYPE=disk
E: ID_BUS=usb
E: ID_PATH=pci-0000:00:1d.7-usb-0:3.3:1.0-scsi-0:0:0:0
E: ID_FS_USAGE=filesystem
E: ID_FS_TYPE=vfat
E: ID_FS_VERSION=FAT16
E: ID_FS_UUID=6CFF-7B84
E: ID_FS_LABEL=USB
E: ID_FS_LABEL_SAFE=USB_DISK
Tu peux ensuite creuser les autres infos via udevinfo... (man udevinfo)