# [udev] règles disques amovibles

## Adrien

Bonsoir à tous!  :Smile:  et... meilleurs vœux! ^^

Après une looooongue période d'absence, me revoilà de retour sur notre distro favorite.

Je viens de terminer -ou presque- deux installations (PC fixe et portable) et tout fonctionne comme je veux, sauf les règles udev que j'essaie d'écrire pour mes disques amovibles (clés USB, microsd, HD externes etc...).

J'ai rédigé trois règles pour mes adaptateurs wifi, qui fonctionnent parfaitement:

```
# cat /etc/udev/rules.d/10-wireless.rules 

# Adaptateurs Wifi

KERNEL=="wlan0", NAME="ra0"

KERNEL=="wlan*", ATTR{address}=="00:60:b3:2b:78:8a", NAME="zd0"

KERNEL=="wlan*", ATTR{address}=="90:e6:ba:f0:08:b3", NAME="ra1"
```

Une fois les adaptateurs branchés:

```
# ifconfig -a

...

ra0: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 08:3e:8e:56:89:e3  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ra1: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 90:e6:ba:f0:08:b3  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

zd0: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 00:60:b3:2b:78:8a  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

...

```

Jusqu'ici tout va bien  :Very Happy: 

Mais pour les clés USB et compagnie, c'est la débandade :\

Exemple simple pour une des clés que je souhaite renommer "stick":

```
# cat /etc/udev/rules.d/20-amovible.rules

# clé USB Kingston

SUBSYSTEMS=="scsi", ATTRS{model}=="DataTraveler 3.0", ATTRS{vendor}=="Kingston", NAME="stick"
```

Je reboote et là, rien, ma clé s'appelle toujours /dev/sdb...

Au passage, j'ai ça dans dmesg:

```
# dmesg

...

[   17.070704] systemd-udevd[2152]: NAME="stick" ignored, kernel device nodes can not be renamed; please fix it in /etc/udev/rules.d/20-amovible.rules:2

...
```

Versions udev/systemd

```
# emerge -pv udev systemd

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R    ] sys-apps/systemd-208-r2:0/1  USE="acl filecaps firmware-loader gudev introspection kmod pam policykit tcpd -audit -cryptsetup -doc -gcrypt -http -lzma -python -qrcode (-selinux) {-test} -vanilla -xattr" ABI_X86="(64) (-32) (-x32)" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7" 2,335 kB

[ebuild   R    ] virtual/udev-208  USE="gudev introspection kmod (-selinux) -static-libs" ABI_X86="(64) (-32) (-x32)" 0 kB
```

J'ai essayé d'autres règles qui semblent pourtant correctes mais rien n'y fait.

Peut-être est-ce normal et vu le message de dmesg, je devrais uniquement me contenter d'un lien symbolique...?

Toutes vos suggestions sont bienvenues s'il y en a car je n'ai pas touché à Gentoo /udev depuis très très longtemps.

J'ai peut-être simplement oublié d'installer un paquet...? Oublié une option dans le noyau...?

Merci à vous!  :Smile: 

----------

## GentooUser@Clubic

EDIT: même avec l'équivalent de  *Quote:*   

> SUBSYSTEMS=="block", IMPORT{parent}=="ID_*", ENV{ID_MODEL}=="DataTraveler 3.0", ENV{ID_VENDOR}=="Kingston"

  la seule action possible est SYMLINK désolé pour la fausse piste.

Disclaimer: je connait pas trop la soupe interne de udev moi non plus  :Wink: 

/dev/sdb c'est périphérique de type bloc, avec SUBSYSTEMS=="scsi" tu vise son parent qui n'a pas de node dans /dev à proprement parler vu que c'est une adresse SCSI (qui doit exister dans /sys cependant) peu utile et apparemment impossible de la renommer.

Cependant le périphérique bloc lui même n'a pas d'ATTRS{model} rattaché, peut-être qu'en jouant avec IMPORT on dois arriver à quelque chose :

----------

## Adrien

Merci de ta réponse GentooUser!  :Smile:  Effectivement, je faisait complètement fausse route avec ma règle à la noix...

Alors, je poursuis, ce qui m'ennuie c'est que même avec des règles plus simples, ça ne fonctionne pas (mais peut-être que j'ai tout faux là-aussi)

Voilà la sortie sur laquelle je me base:

```
# udevadm info -a -p /sys/block/sdc

  looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/host7/target7:0:0/7:0:0:0/block/sdc':

    KERNEL=="sdc"

    SUBSYSTEM=="block"

    DRIVER==""

    ATTR{ro}=="0"

    ATTR{size}=="15810560"

    ATTR{stat}=="     168        1     1352      101        0        0        0        0        0      101      101"

    ATTR{range}=="16"

    ATTR{discard_alignment}=="0"

    ATTR{events}=="media_change"

    ATTR{ext_range}=="256"

    ATTR{events_poll_msecs}=="-1"

    ATTR{alignment_offset}=="0"

    ATTR{inflight}=="       0        0"

    ATTR{removable}=="1"

    ATTR{capability}=="51"

    ATTR{events_async}==""
```

Et ma nouvelle règle:

```
# cat 20-amovible.rules 

KERNEL=="sd?1", SUBSYSTEM=="block", ATTR{size}=="15810560", NAME="stick%n"
```

Je me suis basé principalement sur ce guide:

http://doc.ubuntu-fr.org/udev

----------

