内核模块文件位于
/lib/modules/drivers/
/lib/modules/storage/
/lib/modules/fs/等目录中
,它们的扩展名都是.ko
,但是内核如何理解特定模块文件所属的目录某种类型并且应该位于某个目录中?
内核模块文件位于
/lib/modules/drivers/
/lib/modules/storage/
/lib/modules/fs/等目录中
,它们的扩展名都是.ko
,但是内核如何理解特定模块文件所属的目录某种类型并且应该位于某个目录中?
内核模块的顶级目录由内核报告的版本确定(如 所示
uname -r
):modules go in/lib/modules/$(uname -r)
。与内核一起构建的模块位于kernel
顶级目录中目录的子目录中;稍后构建的模块位于该目录的子目录中updates
。在这些目录中,内核模块根据其源代码在树中的位置进行安装。因此,所有
block
模块都在目录block
中,所有fs
模块都在目录fs
中,等等。选择一个具体的例子,
/lib/modules/$(uname -r)/kernel/drivers/crypto/padlock-aes.ko
是由drivers/crypto/padlock-aes.c
; 它在相关的 Makefile中声明。在安装时通过查找构建期间生成的
modules.order
文件来找到模块。实现位于scripts/Makefile.modinst
.