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

Ilya Kurdyukov ilyakurdyukov на basealt.ru
Вт Дек 6 15:36:19 MSK 2022


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

Проблема такая, есть конкретный девайс:

ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="0003"

Для него подгружаются модули "option" и "cdc_acm", в которые это попало 
только потому что кто-то решил сделать поделку на чипе MediaTek. Взяв 
голый чип и не добавив никаких модулей с прошивкой на плату. И решил 
загружать прошивку прямо при подключении. А потом кто-то добавил в Linux 
драйвер к этому.

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

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

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

Ссылка на код в Линукс где ID прописан в "option":

https://github.com/torvalds/linux/blob/master/drivers/usb/serial/option.c#L2108

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



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