У меня есть карта с интерфейсом USB с двумя разделами. После включения палки я использую следующую команду для нахождения устройства.
dmesg
Пример производится
[11195.236020] usb 2-2: new high-speed USB device number 9 using ehci-pci
[11195.375432] usb 2-2: New USB device found, idVendor=058f, idProduct=6387
[11195.375436] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11195.375439] usb 2-2: Product: Mass Storage
[11195.375441] usb 2-2: Manufacturer: Generic
[11195.375444] usb 2-2: SerialNumber: 605DD851
[11195.375968] usb-storage 2-2:1.0: USB Mass Storage device detected
[11195.376732] scsi host10: usb-storage 2-2:1.0
[11196.377830] scsi 10:0:0:0: Direct-Access Generic Flash Disk 8.07 PQ: 0 ANSI: 4
[11196.378159] sd 10:0:0:0: Attached scsi generic sg3 type 0
[11196.379647] sd 10:0:0:0: [sdc] 15769600 512-byte logical blocks: (8.07 GB/7.51 GiB)
[11196.381548] sd 10:0:0:0: [sdc] Write Protect is off
[11196.381552] sd 10:0:0:0: [sdc] Mode Sense: 23 00 00 00
[11196.383579] sd 10:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[11196.390454] sdc: sdc1 sdc2
[11196.394696] sd 10:0:0:0: [sdc] Attached SCSI removable disk
Поэтому мое устройство /sdc
и мои разделы /dev/sdc1
и /dev/sdc2
Я использовал обе команды для получения их UUID
udevadm info /dev/sdc1 | grep ID_FS_UUID=
Пример производится
E: ID_FS_UUID=dbf323e9-8d63-444c-9c11-76b9b9a0fed4
и
udevadm info /dev/sdc2 | grep ID_FS_UUID=
Пример производится
E: ID_FS_UUID=0eeb7004-8955-4358-a205-07d7376adb8c
Поэтому мои UUID dbf323e9-8d63-444c-9c11-76b9b9a0fed4
и 0eeb7004-8955-4358-a205-07d7376adb8c
или на раздел
/dev/sdc1
>> dbf323e9-8d63-444c-9c11-76b9b9a0fed4
/dev/sdc2
>> 0eeb7004-8955-4358-a205-07d7376adb8c
Теперь я создал файл /etc/udev/rules.d/100-myusb.rules
sudo nano /etc/udev/rules.d/100-myusb.rules
и добавил правило ниже
KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_IGNORE}="1"
и перезапущенный udev
sudo service udev restart
Но после включения палки снова, оба раздела показывают в Файлах иначе Наутилус
Что я делаю неправильно?
Редактирование так 6. Сентябрьский ПОЯС 21:07:50 2015
Правило
KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", RUN+="/bin/mkdir /tmp/folder1"
создает папку /tmp/folder1
И для @Sneetsher
KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", RUN+="/usr/bin/env > /tmp/udev-partition-env.log"
работы, но выходной файл env_root.output
?o_O
Mo 7 редактирования. Сентябрьский ПОЯС 20:31:06 2015
Протестированный и не делает работ
KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_AUTO}="0", ENV{UDISKS_SYSTEM}="0"
и
KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_AUTO}="0"
Наконец, я устанавливаю ту же среду Ubuntu 15.04 в машине VirtualBox.
ACTION=="add", ENV{ID_FS_UUID}=="bf50cb5d-60bf-44de-9a8f-1bf74850a5a1", ENV{UDISKS_IGNORE}="1"
Это работает так же отлично как ожидалось.
:D Я ненавижу 3 префикса цифр 100-
(общий/стандартный, 2), Таким образом, я использую 99-
большинство время. Я никогда не пробовал его прежде, переименовывая его, чтобы быть подобным Вашему:
# mv /etc/udev/rules.d/99-sneetsher-tests.rules /etc/udev/rules.d/100-myusb-sneetsher-tests.rules
Вуаля! Теперь Это не работает.
правило переопределяется другими правилами, вполне уверенными системные от /lib/udev/rules.d/
, можно попытаться перечислить все файлы правил, проверить:
find /etc/udev/rules.d/ /lib/udev/rules.d/ -iname "*.rules" -printf "%f\n" | sort
ФАЙЛЫ ПРАВИЛ
правила udev прочитаны из файлов, расположенных в системном каталоге правил,/lib/udev/rules.d, энергозависимый каталог во время выполнения,/run/udev/rules.d и каталог местных органов власти,/etc/udev/rules.d. Все файлы правил коллективно отсортированы и обработаны в лексическом порядке, независимо от каталогов, в которых они живут. Однако файлы с идентичными именами файлов заменяют друг друга. Файлы в / и т.д. имеют самый высокий приоритет, файлы в выполненном / имеют приоритет по файлам с тем же именем в / lib. Это может использоваться для переопределения предоставленного систему файла правил с локальным файлом в случае необходимости; символьная ссылка в / и т.д. с тем же именем как файл правил в / lib, указывая/dev/null, отключает файл правил полностью. Файлы правила должны иметь расширение .rules; другие расширения проигнорированы.
Источник: man udev
May быть этим является лучшим способом проверить использование udevadm test <path>
, пример:
udevadm test /sys/devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/host9/target9:0:0/9:0:0:0/block/sdb/sdb2
Тест это для обоих имен 100-myusb.rules
& 99-myusb.rules
, Вы будете видеть, какой порядок чтение файлов правил и который управляет инициированный.