Existe-t-il un moyen de changer l'identifiant d'un périphérique dans / dev / disk / by-id?

J'ai un disque dur USB 320 Go S2 SAMSUNG que j'utilise à la fois dans Ubuntu 13.10 (Kernel 3.11.0-17-generic) et Fedora 17.

Cela fonctionne bien; Je peux lire / écrire de / à eux. Bien que je rencontre un problème avec un logiciel qui traite de la key USB et d'autres périphériques USB. Ce programme tente de répertorier les périphériques disponibles en exécutant ce qui suit:

ls -l /dev/disk/by-id/usb* 

et ne renvoie rien.

Donc, j'ai couru dans le terminal: ls -l /dev/disk/by-id/* et j'ai obtenu ceci:

 ata-hp_DVDRAM_GT30L_KZEA6810820 ata-SAMSUNG_HM321HX_C5733G82AB0BPW ata-WDC_WD3200BEKT-60V5T1_WD-WX81A50J4370 wwn-0x50000f00ab0b000b wwn-0x50014ee20495cc9f 

dans /dev/disk/by-uuid , mon UBS-HDD est: 19ED-1878 -> ../../sdb

Ma HD externe est donc répertoriée comme "ata-SAMSUNG …." et ne peut pas être trouvée sous "usb * …".

J'ai googlé beaucoup de choses à ce sujet. J'ai trouvé que l'édition de /etc/fstab ou /boot/grub/grub.conf m'aiderait (je n'ai rien trouvé concernant mon périphérique USB dans grub.conf ni fstab ). Ou quelque chose comme ZFS, zpool .. et même un outil qui traite (seulement?) Avec l'UUID, tune2fs.

Mais en tant qu'user Linux débutant, je ne sais pas quoi faire.

Donc, est-il possible de changer /dev/disk/by-id/ata-SAMSUNG... à ../../by-id/usb-SAMSUNG... ? Et si oui, comment?

Ok, je suppose que c'est un problème udev (la plupart des dissortingbutions Linux utilisent cela par défaut), c'est ce qui crée les liens symboliques. Vous pouvez résoudre ce problème en ajoutant une nouvelle règle. Je vais donner quelques informations à ce sujet, mais il est largement ancré dans ma propre dissortingbution – Debian.

Tout d'abord, vous devez find où sont vos règles. Debian les a dans deux endroits – /lib/udev/rules.d et /etc/udev/rules.d . Si c'est le cas, vous ne devriez append / modifier que ceux sous /etc car la modification d'un autre location est plus susceptible d'être écrasée par une mise à jour.

Accédez au directory des règles et voyez si vous pouvez find le (s) file (s) avec les règles de création des liens sous disk/by-id . La command grep -r disk/by-id/ va aider ici (bien que seulement l'exécuter dans le directory rules pour éviter de chercher d'autres endroits). Pour moi, le file est /var/lib/rules.d/60-persistent-storage.rules . Voici les lignes qui créent les liens “disk / by-id / usb- *` pour moi:

 ENV{DEVTYPE}=="disk", ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", \ SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", \ SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" 

Il y a deux possibilités ici (à part celle où votre système n'utilise pas udev du tout):

  1. Vous n'avez pas de ligne similaire à cela et vous devez en créer un.
  2. Vous le faites, mais ça ne marche pas pour vous.

Les lignes peuvent ressembler à du charabia, mais en gros les deux premiers (un seul comme le \ sont qu'un moyen de fractionner une longue ligne) sont des liens relatifs au disque lui-même, les deux autres sont pour ses partitions.

Espérons que l'exécution de cette command devrait rendre les choses less déroutantes:

 udevadm info --name=/dev/sdb --query=property 

Cela montre les noms / valeurs de toutes les propriétés de votre appareil. En fait, toute la règle fait passer toutes les propriétés de chaque périphérique et les DEVTYPE=disk à la première partie de la ligne (par exemple, la première search les périphériques avec DEVTYPE=disk et ID_BUS et ID_SERIAL non-vide). La partie suivante crée un lien symbolique avec son nom contenant ID_BUS et ID_SERIAL .

Quoi qu'il en soit, ce que cela se résume à est si vous avez ID_BUS=usb , vous pouvez probablement aller de l'avant et append la règle ci-dessus. Sinon, vous devez probablement append des règles spécifiques à votre appareil. Quelque chose comme:

 ENV{ID_SERIAL}=="SAMSUNG_HM321HX_C5733G82AB0BPW", \ SYMLINK+="disk/by-id/usb-$env{ID_SERIAL}" ENV{ID_SERIAL}=="SAMSUNG_HM321HX_C5733G82AB0BPW", \ SYMLINK+="disk/by-id/usb-$env{ID_SERIAL}-part%n" 

J'ai deviné votre ID_SERIAL de la question, si son mauvais aller de l'avant et mettre dans le bon.

Les règles sont probablement les meilleures dans un file de leur propre, quelque chose comme s2-samsung-usb.rules dans le directory que vous avez trouvé au début.

Mise à jour: le ci-dessous n'est probablement pas nécessaire, il suffit de détwigr et de retwigr l'appareil – Comment recharger les règles udev sans redémarrer?

Une fois que vous avez terminé, vous pouvez recharger les règles avec (détwigz d'abord votre appareil):

 udevadm control --reload-rules 

Puis retwigz votre appareil. Si cela ne fonctionne pas, vous pouvez toujours essayer de redémarrer (en fait cela peut être plus sûr de toute façon).