Проигнорируйте один раздел двух из карты с интерфейсом USB через udev

У меня есть карта с интерфейсом 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"
1
задан 7 September 2015 в 21:31

1 ответ

  • Наконец, я устанавливаю ту же среду 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, Вы будете видеть, какой порядок чтение файлов правил и который управляет инициированный.

    Ссылка: , Какое правило udev инициировано?

2
ответ дан 8 September 2015 в 07:31

Другие вопросы по тегам:

Похожие вопросы: