有没有办法在运行时知道驱动程序是否是内核模块或者是否是静态链接的?

有没有办法在运行时知道驱动程序是否是内核模块或者是否是静态链接的?

我需要创建一个测试来检查特定设备的驱动程序是否是内核模块(而不是静态链接)。有没有办法在运行时知道这些信息?谢谢!

答案1

lsmod将列出当前加载的内核模块。因此,如果驱动程序未在那里列出,那么它要么内置于内核中,要么未加载。大多数发行版应该在其目录中存储一个配置文件/boot,其中包含所使用的内核配置选项。如果您要下载并解压相同内核版本的源代码;将配置文件复制到.config源树的顶部;然后运行make menuconfig​​,然后您将能够浏览配置设置并查看该驱动程序的配置方式。

在某些情况下,内核配置实际上内置于内核本身中,但我必须查找如何访问它:)

编辑:

另一个可能更快的选项(如果它是 PCI 设备)是运行lspci -v.其输出将告诉您当前正在使用的驱动程序的名称。如果 lsmod 中没有列出它,那么您就知道它一定是内置的。

相关内容