最近又有网友问为什么他们正在加载fjes
模块。当我试图理解这个问题时,我意识到 Linux 也在为我加载相同的模块。
现在,这是模块的信息modinfo
:
filename: /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko
version: 1.1
license: GPL
description: FUJITSU Extended Socket Network Device Driver
author: Taku Izumi <[email protected]>
srcversion: 3411C5E01C7BDA50105EEE7
alias: acpi*:PNP0C02:*
depends:
intree: Y
vermagic: 4.8.0-2-amd64 SMP mod_unload modversions
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
我觉得这很奇怪。我的网络适配器是 Realtek PCI Express 卡,模块支持它r8169
。
我检查的第一件事是这个模块是否已被任何特定的包添加。我正在进行 Debian 测试,所以我用dpkg -S
.它由内核镜像包本身提供:
# dpkg -S /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko
linux-image-4.8.0-2-amd64: /lib/modules/4.8.0-2-amd64/kernel/drivers/net/fjes/fjes.ko
我注意到这个模块的模态别名看起来非常通用。它甚至没有指定供应商。所以我决定看看哪些设备/sys/devices
具有与该字符串匹配的模态别名。我得到了五个结果,因此我编写了一个小脚本来打印有关它们的更多信息。这就是我得到的:
./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/PNP0C02:03
modalias: acpi:PNP0C02:
path: \_SB_.PCI0.PDRC
physical_node -> ../../../../pnp0/00:08
./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:01
modalias: acpi:PNP0C02:
path: \_SB_.PCI0.LPCB.SIO1
physical_node -> ../../../../../pnp0/00:04
./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/INT3F0D:00
modalias: acpi:INT3F0D:PNP0C02:
path: \_SB_.PCI0.LPCB.CWDT
physical_node -> ../../../../../pnp0/00:03
./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:02
modalias: acpi:PNP0C02:
path: \_SB_.PCI0.LPCB.RMSC
physical_node -> ../../../../../pnp0/00:06
./devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C02:00
modalias: acpi:PNP0C02:
path: \_SB_.PCI0.LPCB.LDRC
physical_node -> ../../../../../pnp0/00:01
上面的数据是/sys/devices/...
.行modalias
和path
是这些文件的内容,并且physical_node
是指向 中目录的符号链接的目标/sys/devices
。
它们中的每一个确实都与不同的物理设备相关联,但我不知道它们是什么。我只能说我的系统上安装的其他驱动程序模块没有匹配的别名acpi:PNP0C02:
。
这些是我留下的问题:
PCI0.LPCB
ACPI 树中的 是什么意思?我从 Ubuntu 常见问题解答中推断出ACPI 技巧和技巧那它或许(或者我应该推断它应该?)与电池有关。然而,这是一台台式电脑,而不是笔记本电脑;- 为什么我有三个不同的设备,它们都别名为同一设备?这不是给内核带来麻烦吗?
- 模块是否
fjes
配置不当,无法使用这样的模态别名?应该打开一个错误吗?