[devel] можно ли запретить загружать модуль ядра для конкретного девайса

Alexey V. Vissarionov gremlin на altlinux.org
Ср Дек 7 02:24:21 MSK 2022


On 2022-12-06 19:36:19 +0700, Ilya Kurdyukov wrote:

 > Замучился с этим, нигде ничего не находит. Находил тех кто
 > спрашивал то же самое, и им никакого решения не предложили.

Потому что решение скорее всего и не требуется.

 > Проблема такая, есть конкретный девайс:
 > ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="0003"

Мудотыковский preloader, что ли? Такой?

[694454.527071] usb 5-1.4: Product: MT65xx Preloader
[694454.527074] usb 5-1.4: Manufacturer: MediaTek
[694454.590374] cdc_acm 5-1.4:1.1: ttyACM0: USB ACM device

 > Для него подгружаются модули "option" и "cdc_acm", в которые это
 > попало только потому что кто-то решил сделать поделку на чипе
 > MediaTek.

Нет - потому, что это действительно CDC-устройство, используемое
для общения с этими SoC.

 > Взяв голый чип и не добавив никаких модулей с прошивкой на плату.
 > И решил загружать прошивку прямо при подключении.

Если из устройства с многомиллионными тиражами выкинуть копеечную
SPI-флешку - получится многомиллионная же экономия.

А программы паять не надо.

 > А потом кто-то добавил в Linux драйвер к этому.

Не к этому, а вообще для всех устройств CDC (communication device
class) ACM (abstract control model).

И произошло это более 20 лет назад - во времена, когда MediaTek
только-только отделился от UMC.

 > Но ID этого чипа общий, это ID загрузочного ROM. Используется для
 > всех девайсов на таком чипе. Соответственно, это не обязательно
 > GSM модем.

Разумеется. Более того, модемам полагается быть /dev/ttyUSBx, а не
/dev/ttyACMx - да и то лишь древним, которые не умеют ни CDCETHER,
ни RNDIS.

 > Мне надо запретить использовать эти модули для этого ID.

Зачем?

 > Не трогая всего остального, для чего эти модули могут
 > подгружаться.

И для чего же? А главное - что может помешать уже загруженному
(или, в норме, вкомпилированному в ядро, чтобы дать пользователю
возможность увидеть терминал максимально рано) модулю подхватить
очередное подключенное CDC-устройство?

 > И пока едниственный способ что я нашел - это кинуть "option" и
 > "cdc_acm" в /etc/modprobe.d/blacklist.conf.

Если они не нужны - ну, в принципе, вполне себе решение. Пусть
корявое, зато рабочее.

 > Очень плохо, что в Линукс каждый может добавить свой драйвер
 > для общего устройства, что может использоваться шире, и
 > испортить жизнь всем остальным кто использует устройства
 > с тем же ID, и никаких решений этому я не нашел. Кроме полного
 > отключения пары модулей для всех устройств.

А в чем, собственно, сложность с появлением еще одного устройства?
Его что, кто-то в усерспейсе автоматически начинает использовать?
Если да - то проблема не в ядре и не в егойных модулях, а именно в
усерспейсе.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


Подробная информация о списке рассылки Devel