Понимание udev правила и полномочия в libusb

Вместо того, чтобы делать yum remove или yum update необходимо смочь yum install kernel-<ver> где <ver> определенный номер версии. Также у Вас может быть несколько установленных ядер.

Обычно рекомендуется иметь в наличии пару для таких ситуаций. Когда начальные загрузки системы можно выбрать из одного из ядер для начальной загрузки системы.

4
18.03.2018, 01:31
2 ответа

Похоже, что Udev (который находится в человеке) управляет динамическими устройствами, такими как USB-устройства, когда они подключены. Затем он создает их экземпляры в / dev где-нибудь. (Как / dev / bus / usb / 002 в моем случае.) Этот узел / dev должен иметь некоторые разрешения, Udev берет разрешения из файлов в /lib/udev/rules.d/, есть некий загадочный синтаксис, который соответствует устройство к записи.

В этом случае все из подсистемы usb с типом usb_device получает указанный файловый режим. (Стандартные разрешения, 664 - это rw-rw-r-, 666 - это rw-rw-rw-.) Итак, вы даете всем без исключения разрешения на запись для всех USB-устройств. Это не очень хорошо, если вы не доверяете всем своим пользователям. Если вы единственный пользователь, вы, вероятно, можете доверять себе. Libusb, похоже, хочет, чтобы разрешения на запись в узел USB-устройства выполняли свою работу, и отказывается что-либо делать, если это не так. Звучит не совсем правильно, поскольку я только пытаюсь читать с устройства.

Можно уточнить разрешения, вы можете указать устройство с помощью таких вещей, как поставщик USB (VID) и идентификатор продукта (PID). Таким образом, можно было бы создать файл, который работал бы только с вашим сканером, и оставить все остальные USB-устройства с разрешениями по умолчанию. Есть страница об Udev по адресу https://wiki.archlinux.org/index.php/udev , которая выглядит полезной для всего этого. Если вы создаете файл, который начинается с большего числа, например "60-my-usb-scanner.rules" (более высокие числа имеют приоритет), и у вас есть правило, которое перечисляет ваш сканер, например:

SUBSYSTEM=="usb", ATTRS{idVendor}=="F1E2", ATTRS{idProduct}=="1F2E", MODE="0666"

Это должно просто установить разрешения для указанное устройство (VID = 0xF1E2, PID = 0x1F2E). Затем вы можете заставить Udev заметить это изменение, выполнив:

udevadm control --reload-rules
4
27.01.2020, 20:50

libusbпредназначен для предоставления пользовательских -пространственных драйверов для USB-устройств :, другими словами, он позволяет приложениям отправлять команды libusb, которые само не понимает, на устройство.

В результате libusbдолжен обрабатывать любые данные, которые передаются с компьютера на USB-устройство, как операцию записи. Это включает в себя даже тривиальные записи, такие как отправка команды сканеру для описания его возможностей сканирования.

Чтение -Только доступ к libusbустройствам будет работать только с устройствами, которые самопроизвольно отправляют данные на компьютер, такими как клавиатура или мышь.

4
27.01.2020, 20:50

Теги

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