Правила UDEV, & ldquo; NAME & rdquo; переменная не работает

На основе этого решения, предложенного VRR

, вы можете заменить все «undecorate», созданные внутри вашей conky-папки, «unecorated».

перейти в папку conky ~/.conky [ ! d4]

, затем выполните

find ./ -type f -exec sed -i "s/undecorate/undecorated/g" {} \; 
find ./ -type f -exec sed -i "s/undecoratedd/undecorated/g" {} \;
1
задан 29 May 2017 в 19:48

4 ответа

Как решить проблему не знать имена устройств usb, когда несколько USB-устройств подключены к одному компьютеру? Самый простой способ - использовать имена устройств из папки / dev. После подключения USB-адаптеров он автоматически сгенерирует серийное имя, которое вы можете найти в каталоге / dev / serial / by-id, показанное ниже

/dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0

QSB_81658 будет в конечном итоге уникальным именем для это USB-устройство.

Я попытался написать dev правила, которые были излишними, потому что каждое устройство имело свое собственное постоянное имя, как показано выше. Я также сталкивался с некоторыми проблемами, например, когда я применял правила dev.

Написание правил для назначения имен для отдельных лиц. Как мы знаем, каждый QSB-адаптер имеет свой собственный серийный номер, который вы можете найти на передней части черного адаптера. Для моего случая у меня есть два адаптера QSB0. У одного есть серийный номер 81830, другой - серийный номер 81658. Я буду использовать этот атрибут (ATTRS {serial}), чтобы назначить имена этим двум адмперам.

Сначала запустите udevadm, чтобы иметь Посмотрите на подробности устройств usb

$ udevadm info -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

Затем поместите следующие в файл

#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 я использую SYMLINK.

(правила UDEV, переменная «NAME» не работает). Вы не можете переименовать узел устройства, присвоив ключу 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.

Так измените содержимое файла правил в # Этот файл правил используется для назначения имен для qsb-адаптера из USdigital

ATTRS{serial}=="81830",SYMLINK+="QSB830" ATTRS{serial}=="81658",SYMLINK+="QSB658"

Пожалуйста, нажмите на картинку ниже, чтобы увидеть результат. Правила UDEV, & quot; NAME & quot; переменная не работает

0
ответ дан 18 July 2018 в 12:31

Вы не можете переименовать узел устройства, назначив клавише 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?), Используйте метку в имени точки монтирования.

2
ответ дан 18 July 2018 в 12:31

Как решить проблему не знать имена устройств usb, когда несколько USB-устройств подключены к одному компьютеру? Самый простой способ - использовать имена устройств из папки / dev. После подключения USB-адаптеров он автоматически сгенерирует серийное имя, которое вы можете найти в каталоге / dev / serial / by-id, показанное ниже

/dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0

QSB_81658 будет в конечном итоге уникальным именем для это USB-устройство.

Я попытался написать dev правила, которые были излишними, потому что каждое устройство имело свое собственное постоянное имя, как показано выше. Я также сталкивался с некоторыми проблемами, например, когда я применял правила dev.

Написание правил для назначения имен для отдельных лиц. Как мы знаем, каждый QSB-адаптер имеет свой собственный серийный номер, который вы можете найти на передней части черного адаптера. Для моего случая у меня есть два адаптера QSB0. У одного есть серийный номер 81830, другой - серийный номер 81658. Я буду использовать этот атрибут (ATTRS {serial}), чтобы назначить имена этим двум адмперам.

Сначала запустите udevadm, чтобы иметь Посмотрите на подробности устройств usb

$ udevadm info -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

Затем поместите следующие в файл

#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 я использую SYMLINK.

(правила UDEV, переменная «NAME» не работает). Вы не можете переименовать узел устройства, присвоив ключу 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.

Так измените содержимое файла правил в # Этот файл правил используется для назначения имен для qsb-адаптера из USdigital

ATTRS{serial}=="81830",SYMLINK+="QSB830" ATTRS{serial}=="81658",SYMLINK+="QSB658"

Пожалуйста, нажмите на картинку ниже, чтобы увидеть результат. Правила UDEV, & quot; NAME & quot; переменная не работает

0
ответ дан 24 July 2018 в 19:58

Вы не можете переименовать узел устройства, назначив клавише 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?), Используйте метку в имени точки монтирования.

2
ответ дан 24 July 2018 в 19:58

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

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