Ser*_*nyy 4 configuration system networking drivers
在Chili555 对How do I create a system file /etc/modprobe.d/ath9k.conf?的回答中 它表明您可以为内核模块创建配置文件。现在的问题是如何验证该配置文件中设置的选项是否已生效sudo modprobe ath9k?
我要检查的具体选项是ps_enable. 但是,执行以下操作
$ modinfo ath9k | grep ps_enable
parm: ps_enable:Enable WLAN PowerSave (int)
Run Code Online (Sandbox Code Playgroud)
仅解释参数是什么,而不解释其当前值。
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
Run Code Online (Sandbox Code Playgroud)
这将提供相对路径,如下所示
../../../../bus/pci/drivers/ath5k
Run Code Online (Sandbox Code Playgroud)
就我而言,由于systemd 和预测接口命名,接口的命名不同并产生
$ readlink /sys/class/net/wlp2s0/device/driver
../../../../bus/pci/drivers/ath9k
Run Code Online (Sandbox Code Playgroud)
生成的目录路径包含子目录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
Run Code Online (Sandbox Code Playgroud)
该命令也可以组合。
$ cat "$(readlink -f /sys/class/net/wlp2s0/device/driver/)"/module/parameters/ps_enable
0
Run Code Online (Sandbox Code Playgroud)
如果您已经知道接口使用什么驱动程序,则替代/sys路径也可能 更可取,因此您可以跳过这一部分。就我的具体情况而言/sys/modulesreadlink
/sys/module/ath9k/parameters/ps_enable
Run Code Online (Sandbox Code Playgroud)
或者
/sys/module/ath9k/drivers/pci\:ath9k/module/parameters/
Run Code Online (Sandbox Code Playgroud)
根据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
Run Code Online (Sandbox Code Playgroud)