udev usb каждый раз по другому пути

У меня следующая проблема с моей платой Linux: Мое USB-устройство каждый раз монтируется как другое устройство в папке /dev/:

Первый раз, когда я подключаю USB, он выглядит как

/dev/sdb1

Затем я удаляю usb и снова подключаю его, и он получает другое имя:

/dev/sdc1

И так далее.

Я хочу, чтобы у него всегда было постоянное имя, поэтому я написал следующее правило udev:

SUBSYSTEM=="block",ENV{ID_SERIAL}==" serial id ",NAME="myusbmedia"

Это правило не работает. Я мог бы иметь символическое имя со следующим правилом:

SUBSYSTEM=="block",ENV{ID_SERIAL}==" serial id ",SYMLINK="myusbmedia"

Это правило работает, но не решает проблему, потому что usb по-прежнему получает имена /dev/sd[b,c,d, ...]...

Кто-нибудь знает, как сделать, чтобы USB отображался в /dev/ под тем же узлом устройства с тем же именем?


person user3610796    schedule 21.11.2014    source источник
comment
Насколько я могу судить (потому что у меня была такая же проблема в Debia/Ubunto), USB-устройства не всегда нумеруются одинаково при каждой перезагрузке. Лучший способ предотвратить это (обходной путь) — создать символическую ссылку с правилами udev... Точно так же, как вы сделали выше!   -  person CrazyMenConnected    schedule 21.11.2014
comment
При каждой перезагрузке имя устройства одно и то же — sdb1. А вот на втором подключении usb - sdc1, на третьем - sdd1 и т.д. Симлинк не решение, хотелось бы изменить имя ноды.   -  person user3610796    schedule 21.11.2014


Ответы (2)


Когда вы подключаете свое устройство, я предполагаю, что вы используете mount для доступа к его файлам. Вы должны размонтировать диск (используя команду umount) перед его отключением, после чего он должен оставаться как то же устройство в папке /dev.

Например:

umount /dev/sdc1
person Idan    schedule 21.11.2014
comment
Нет, я не вызываю umount явно, я хочу, чтобы это делалось автоматически при удалении usbstick - person user3610796; 24.11.2014

Проблема нерешаема, по крайней мере с помощью udev. Узел устройства создается ядром, а не udev. Итак, вам нужно изменить ядро.

Со страницы руководства udev(7):

 The following keys can get values assigned:
       NAME
          The name to use for a network interface. The name of a device 
           node cannot be changed by udev, only additional symlinks
           can be created.

См. также http://lists.kernelnewbies.org/pipermail/kernelnewbies/2015-April/013889.html

Кое-что в этом направлении было предложено ядру, но оно не было принято в основную линию Linux http://thread.gmane.org/gmane.linux.scsi/70947

person Uwe Geuder    schedule 21.09.2015