В ответе Chili555 для того, Как я создаю системный файл/etc/modprobe.d/ath9k.conf? показано, что можно создать файл конфигурации для модуля ядра. Теперь вопрос состоит в том, как я проверяю, что набор опций в том файле конфигурации вступил в силу после sudo modprobe ath9k
?
Определенная опция, которую я пытаюсь проверить, ps_enable
. Однако выполнение следующего
$ modinfo ath9k | grep ps_enable
parm: ps_enable:Enable WLAN PowerSave (int)
только объясняет, что параметр и не его текущее значение.
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