Я записал простое правило udev помочь мне понять понятие
#SUBSYSTEM=="block", ATTR{size}=="3913727", SYMLINK="AlphaUSB"
SUBSYSTEM=="block", ATTR{size}=="3913727", NAME="HelloUSB"
Часть символьной ссылки UDEV управляет работами (она была прокомментирована), но Заглавная роль правила UDEV не работает. Я не уверен, что я сделал неправильно?
Моя вторая часть вопроса, что символьная ссылка, как предполагается, делает, когда я создал его? Я понимаю, что это указывает на файл устройств, но это довольно бесполезно. Я хотел бы, чтобы это указало на точку монтирования, таким образом, я могу использовать это в качестве ярлыка для вхождения в USB, какие-либо идеи о том, как я могу сделать это?
Вы не можете переименовать узел устройства путем присвоения эти NAME
ключ udev правила. По крайней мере, не в systemd udev. Только имя сетевого устройства может измениться. Из udev руководства:
NAME The name to use for a network interface. See systemd.link(5) for a higher-level mechanism for setting the interface name. The name of a device node cannot be changed by udev, only additional symlinks can be created.
Любая udev символьная ссылка для устройства не является особенной в нем сам. Это - просто символьная ссылка файловой системы на узел устройства. Однако пример полезного использования udev правил символьной ссылки - то, что, потому что имена устройств зависят от порядка, в котором ядро обнаруживают устройства, имя устройства, на котором находится определенная файловая система, непредсказуемо. Когда-то карта флэш-памяти может получить имя устройства /dev/sdf
, и в другом /dev/sdg
. Правила Udev обычно устанавливаются, который добавляет, что предсказуемые имена символьной ссылки, как он сделан на моем ноутбуке Ubuntu в /dev/disk/by-uuid/
, где uuid файловых систем на диске являются символьными ссылками, указывающими на имя устройства ядра.
Что касается Вашего последнего вопроса, у Вас не может быть udev точки символьной ссылки ни к чему кроме узла устройства, таким образом, у Вас не может быть его, указывают на точку монтирования:
SYMLINK The name of a symlink targeting the node. Every matching rule adds this value to the list of symlinks to be created.
Для достижения, что Вы хотите сделать можно ли дать файловой системе маркировку и иметь ли программу, которую Вы используете для монтирования файловых систем (udisks2?) используют маркировку от имени точки монтирования.
Как решить проблему не знания названий USB-устройств, когда несколько USB-устройств включаются в том же компьютере? Самый легкий путь использует имена устройств от/dev папки. После включения USB-адаптеров это автоматически генерирует последовательное название его, которое можно найти его под/dev/serial/by-id показанным как ниже
/dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0
QSB_81658 будет eventurally уникальное имя для того USB-устройства.
Я пытался записать правила dev, который был избыточен, потому что каждое устройство имело свое собственное постоянное имя как показано выше. Я также столкнулся с некоторыми проблемами такой как тогда, когда я применял правила dev.
Запись dev управляет для присвоения имен людей. Как мы знаем, каждый QSB-адаптер имеет свой собственный порядковый номер, который можно найти на передней части черного адаптера. Для моего случая у меня есть два QSB0-адаптера. У каждого есть порядковый номер 81 830, другой имеет порядковый номер 81 658. Я буду использовать этот атрибут ({последовательный} ATTRS) для присвоения имен к этому два адаптера.
Во-первых, выполненный udevadm, чтобы взглянуть на детали USB-устройств
$ udevadm информация-a-n/dev/ttyusb0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="ftdi_sio"
ATTRS{latency_timer}=="16"
ATTRS{port_number}=="0"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0':
KERNELS=="1-8:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ftdi_sio"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="ff"
ATTRS{bInterfaceSubClass}=="ff"
ATTRS{bNumEndpoints}=="02"
ATTRS{interface}=="USB <-> QSB"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8':
KERNELS=="1-8"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{bMaxPower}=="500mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0600"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="5"
ATTRS{devpath}=="8"
ATTRS{idProduct}=="6001"
ATTRS{idVendor}=="0403"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="US Digital"
ATTRS{maxchild}=="0"
ATTRS{product}=="USB <-> QSB"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="81830"
ATTRS{speed}=="12"
ATTRS{urbnum}=="72190"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0404"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{interface_authorized_default}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 4.4.0-128-generic xhci-hcd"
ATTRS{maxchild}=="16"
ATTRS{product}=="xHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="0000:00:14.0"
ATTRS{speed}=="480"
ATTRS{urbnum}=="129"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0':
KERNELS=="0000:00:14.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0330"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0xa12f"
ATTRS{dma_mask_bits}=="64"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="120"
ATTRS{local_cpulist}=="0-3"
ATTRS{local_cpus}=="f"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{subsystem_device}=="0x8694"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{vendor}=="0x8086"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
Затем Вы будете видеть одну строку ниже от печатных результатов.
ATTRS{serial}=="81830"
Перейдите к каталогу/etc/udev/rules.d/
Добавьте 990-usdigital-qsbadapter.rules при помощи команды
sudo nano 990-usdigital-qsbadapter.rules
Затем поместите followings в файл
#This rule file is used to assign names for qsb adapter from USdigital
KERNELS=="1-8",SUBSYSTEMS=="usb",ATTRS{serial}=="81830",NAME="qsb81830"
KERNELS=="1-8",SUBSYSTEMS=="usb",ATTRS{serial}=="81658",NAME="qsb81658"
протестируйте свои правила, можно работать
udevadm control --repload-rules
udevadm test /dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0
Из-за проблем разрешения, я не мог изменить NAME.Instead, я использую СИМВОЛЬНУЮ ССЫЛКУ.
(Правила UDEV, "НАЗОВИТЕ" переменную, не работающую), Вы не можете переименовать узел устройства путем присвоения ключу ИМЕНИ udev правил. По крайней мере, не в systemd udev. Только имя сетевого устройства может измениться. Из udev руководства:
NAME
The name to use for a network interface. See
systemd.link(5) for a higher-level mechanism
for setting the interface name. The name of a
device node cannot be changed by udev, only
additional symlinks can be created.
Так изменитесь, содержание файла правил в файл правила #This используется для присвоения названий qsb адаптера от USdigital
ATTRS{serial}=="81830",SYMLINK+="QSB830"
ATTRS{serial}=="81658",SYMLINK+="QSB658"
Нажмите изображение ниже для наблюдения результата. Результаты печати