Предотвратить автозагрузку usbhid при подключении USB HID-устройства

Я пытаюсь (обратимо) отключить поддержку USB HID при установке Raspbian Jessie с версией ядра 4.4.16-v7 +. Нам нужно, чтобы Raspberry Pi находился в полуобщественном месте и отображал все на экране телевизора, и мы бы хотели, чтобы с ним было хотя бы немного сложно связываться.

Пока мне удалось сделать модуль usbhid съемным из ядра через rmmod. Однако после настройки модуля кажется, что каждый раз, когда я подключаю USB-клавиатуру или мышь, драйвер устройства загружается обратно в ядро.

Есть ли способ предотвратить это?


person 1flx    schedule 05.08.2016    source источник


Ответы (2)


udev - лучший и самый простой способ сделать это. Добавьте новое правило, например, в /etc/udev/rules.d/99-disable-usb-hid.rules:

SUBSYSTEMS=="usb", DRIVERS=="usbhid", ACTION=="add", ATTR{authorized}="0"

и перезапустите udev. Я только что протестировал его в Debian Jessie ARM 4.4.16.

person Sergey Manucharian    schedule 23.09.2016
comment
Это действительно классное решение, оно мне нравится больше, чем то, что я наконец реализовал (занесение в черный список проблемных модулей ядра). Хотел бы я знать об этой возможности. - person 1flx; 01.10.2016

Я могу придумать два варианта:

ПОЛЕГЧЕ:

Поместите модуль ядра в черный список внутри /etc/modprobe.d/blacklist.conf, добавив:

blacklist usbhid

Убедитесь, что вы делаете это как root, используя sudo или входя в систему как root, в противном случае этот файл доступен только для чтения.

СИЛЬНЕЕ:

Если у вас есть возможность перекомпилировать ядро, которое вы используете, вы можете установить CONFIG_USB_HID = n в файле конфигурации ядра, чтобы полностью отключить usbhid.

Вы можете выполнить шаги сборки ядра Raspberry Pi, и как только у вас будет все установлен для сборки, вы можете изменить файл конфигурации так, чтобы CONFIG_USB_HID = n. Вы можете сделать это во время menuconfig или как я это обычно делаю, редактируя скрытый файл .config после запуска make defconfig. См. краткое описание ядра Linux для получения дополнительной информации о настройке и сборке ядра Linux.

Поскольку Raspberry Pi - это ARM, и я предполагаю, что ваш компьютер - x86, вам нужно будет настроить набор инструментов кросс-компилятора. Эта информация также должна быть найдена на этапах сборки ядра RasPi.

Затем продолжайте следовать инструкциям по сборке ядра RasPi, чтобы установить ядро ​​на Raspberry Pi. Это должно решить проблему появления usbhid. Во-первых, он не будет впекаться в ядро.

person Tom Huibregtse    schedule 22.09.2016
comment
Я действительно пробовал перекомпилировать ядро, чтобы сделать соответствующий модуль необязательным, но он всегда загружался автоматически после подключения устройства, так что это не сработало ... Я не хотел полностью терять функциональность, поэтому полностью исключение модуля было лишь крайней мерой. Мне удалось добиться того, что я хотел, занеся в черный список, как вы описываете, хотя размещение этого в blacklist.conf почему-то не сработало. Мне пришлось поместить строки из черного списка для usbhid, usbkbd и usbmouse в /etc/modprobe.d/usbkbd.conf и т. Д .; просто usbhid по какой-то причине было недостаточно. - person 1flx; 01.10.2016
comment
Иногда при запуске make для параметра конфигурации автоматически снова устанавливается значение y или n. Похоже, вы уже нашли решение, которое работает, но если вам действительно нужно принудительно включить параметр конфигурации, вы можете просто включить его после команды make. Например, вы можете запустить make CONFIG_USB_HID=n, чтобы принудительно использовать эту опцию конфигурации. - person Tom Huibregtse; 02.10.2016
comment
Внесение usbhid в черный список не работает для меня в Ubuntu 16_04 - person Miguel Ortiz; 02.03.2020