Как проверить, загружается ли модуль пользовательскими конфигурациями?

В ответе Chili555 для того, Как я создаю системный файл/etc/modprobe.d/ath9k.conf? показано, что можно создать файл конфигурации для модуля ядра. Теперь вопрос состоит в том, как я проверяю, что набор опций в том файле конфигурации вступил в силу после sudo modprobe ath9k ?

Определенная опция, которую я пытаюсь проверить, ps_enable. Однако выполнение следующего

$ modinfo ath9k | grep ps_enable
parm:           ps_enable:Enable WLAN PowerSave (int)

только объясняет, что параметр и не его текущее значение.

4
задан 11 March 2019 в 05:22

1 ответ

TL; DR: заглянуть /sys/module/ath9k/parameters/ или сделайте cat "$(readlink -f /sys/class/net/wlp2s0/device/driver/)"/module/parameters/<param_name>

По-видимому, такая информация содержится в /sys файловая система. Согласно ответу Gilles на соответствующем сообщении, для нахождения драйвера используемым интерфейсом, который Вы выполнили бы

readlink /sys/class/net/wlan0/device/driver

который обеспечил бы относительный путь как в

../../../../bus/pci/drivers/ath5k

В моем случае из-за systemd и прогнозирующего интерфейсного именования, интерфейс называют по-другому и производит

$  readlink /sys/class/net/wlp2s0/device/driver
../../../../bus/pci/drivers/ath9k

Получающийся путь к каталогу содержит подкаталоги module/parameters/ где будут файлы для каждого параметра, содержащего их текущее значение. Таким образом, если я редактирую /etc/modprobe/ath9k.conf файл и повторно вставляет модуль, результат следующие:

# After editing the conf file to set parameter to 1
$ sudo sh -c 'modprobe -r ath9k ; sleep 3; modprobe ath9k'
$ sudo cat  /sys/class/net/wlp2s0/device/driver/../../../../bus/pci/drivers/ath9k/module/parameters/ps_enable
1
# after editing the file and setting parameter to 0
$ sudo sh -c 'modprobe -r ath9k ; sleep 3; modprobe ath9k'
$ sudo cat  /sys/class/net/wlp2s0/device/driver/../../../../bus/pci/drivers/ath9k/module/parameters/ps_enable
0

Команда может быть объединена также.

$ cat  "$(readlink -f /sys/class/net/wlp2s0/device/driver/)"/module/parameters/ps_enable
0

Альтернатива /sys путь также был бы /sys/modules и вероятно более предпочтительный, если Вы уже знаете, какой драйвер используется интерфейсом, таким образом, можно пропустить readlink часть. В моем конкретном случае

/sys/module/ath9k/parameters/ps_enable

или

/sys/module/ath9k/drivers/pci\:ath9k/module/parameters/

Согласно sysfs(5) руководство, "Этот подкаталог содержит один подкаталог для каждого модуля, который загружается в ядро".


Существует также другой способ выяснить, какой драйвер используется интерфейсом (при необходимости, хотя то, что я редактирую conf файл для средств модуля я уже, знает, какой модуль интерфейс использует; но в случае, если Вам действительно нужно это, я оставлю его как альтернативу). Если у Вас действительно есть настольная среда и dbus выполнение, а также qdbus или dbus-send установленный, такая информация может быть запрошена через интерфейс dbus Администратора сети (хотя это требует выяснения контура объектов каждого отдельного устройства и вероятно было бы лучше записано в Python или C),

$ qdbus --system org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Devices/14 org.freedesktop.NetworkManager.Device.Driver
ath9k
4
ответ дан 1 December 2019 в 09:43

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

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