как создать правило udev для флэш-памяти usb с двумя разделами для создания персистентного узла под/dev?

У меня есть флэш-память USB, я создал два раздела на ней, когда она иногда присоединяется, она берет sda, sda1 и sda4 вместо sdb, sdb1, sdb4. Для предотвращения того беспорядка, я решил создать правило udev к символьной ссылке это под/dev постоянно.

Я создал ниже правила

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb"

То, когда я перезагружаю его, создает символьную ссылку под /dev/myusb но я не могу смонтировать его.

 sudo mount /dev/myusb /media/myusb

 mount: /dev/bus/usb/002/003 is not a block device

Я думаю, что получаю ту ошибку, потому что она содержит два раздела. Таким образом, какой shoul я делаю?

3
задан 7 November 2016 в 12:58

2 ответа

Я думаю, что проблема состоит в том, что Вы не можете смонтировать целый диск с несколькими разделами сразу. Необходимо смонтировать каждый раздел для себя. Монтирование означает получать доступ к файловой системе, которая может очень отличаться на двух различных разделах. И как Вы поместили бы две файловых системы в один каталог? У Вас должно быть по крайней мере два подкаталога как /media/myusb/part1.

, Который сказал, что мы вернулись к UUID и маркировкам.

Вы могли создать правило udev, инициировавшее сценарий, который монтирует эти два раздела их uuid, как

#!/bin/bash

mount /dev/disk/by-uuid/xxxxx-xxxx-xxxxx-xxxxxx /media/myusb/part1
mount /dev/disk/by-uuid/yyyyy-yyyy-yyyyyy-yyyyy /media/myusb/part2

, Кроме того, Вы могли поместить разделы в/etc/fstab и позволить udev сделать mount -a.

Использование 'blkid' для печати универсально уникального идентификатора для устройства; это может использоваться с UUID = как более устойчивый способ назвать устройства, который работает, даже если диски добавлены и удалены.

, Возможно, Вы могли попробовать это:

Для раздела один:

KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb1"

Для раздела два

KERNEL=="sd?4", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb2"

Не уверенный, если это работает, но Вы могли бы дать ему попытку.

https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux https://wiki.ubuntuusers.de/udev /

3
ответ дан 1 December 2019 в 15:53

В первую очередь, я хочу благодарить всех, кто ответил, они вели меня на правильном пути.

Сначала я проверил устройства вывода для определения местоположения палки usb

 fdisk -l 

Disk /dev/sda: 15.5 GB, 15512174592 bytes
234 heads, 12 sectors/track, 10789 cylinders, total 30297216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00055ec3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *       16128    30297215    15140544    c  W95 FAT32 (LBA)
/dev/sda4         2142880     5194399     1525760    0  Empty

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000517fa

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb2   *        2048    40959079    20478516   83  Linux
/dev/sdb3        40959998   234436544    96738273+   5  Extended
/dev/sdb5        40960000    52956093     5998047   83  Linux
/dev/sdb6        52957184   221904895    84473856   83  Linux
/dev/sdb7       221906944   234436544     6264800+  83  Linux

Моя палка usb захватывается sda sda1 и sda4 (Я не нашел способ присвоить sda первичному диску все же),

Затем я сделал attribute-walk получить связанные параметры с

udevadm info -a -p $(udevadm info -q path -n /dev/sda)
udevadm info -a -p $(udevadm info -q path -n /dev/sda1)
udevadm info -a -p $(udevadm info -q path -n /dev/sda4)

Я использовал ATTRS{serial} и ATTR{partition}==1, ATTR{partition}==2 как различение идентификаторов.

KERNEL=="sd*", ATTRS{serial}=="0019E06B5883CCA187BC2C59", ATTR{partition}=="1", SYMLINK+="usbdevices"

работы для раздела 1

1
ответ дан 1 December 2019 в 15:53

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

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