Linux内核模块的位置

15

有没有工具可以显示我已加载的模块的位置。


1
位置?你是指基本内存地址还是加载模块的文件? - cdhowie
模块加载到内存中的位置 - user567879
3个回答

25

如果您想要了解内核虚拟地址空间中模块的基本内存地址,可以在/proc/modules中找到它,它位于最后一个字段;查找有关的模块即可:

$ grep '^ext3' /proc/modules
ext3 125513 1 - Live 0xf88ce000

如果您想知道文件路径,它实际上没有存储在任何地方,但您可以要求 modprobe 再次搜索该模块并使用 modprobe -l 显示路径:

$ /sbin/modprobe -l ext3
/lib/modules/2.6.18-194.el5PAE/kernel/fs/ext3/ext3.ko

假设你在这段时间内没有改变模块搜索路径,那么这应该给出原始的加载路径。

编辑: 截至2015年,此信息不正确(不仅ext4不存在作为内核模块)。使用以下命令获取有关模块的信息,包括映像路径:

modinfo floppy


3
注意:在Ubuntu 11.04上运行cat /proc/modules命令会对所有模块返回Live 0x00000000;但是,在使用sudo cat /proc/modules命令时,可以看到实际地址。 - sdaau

5
不行。当模块加载时,这些信息不会被保留。

4

上述信息不正确,适用于2015年。

现在modinfo将为您提供有关模块的信息。例如: modinfo floppy


这是错误的,modinfo 显示模块“floppy”在搜索路径中的位置(基本上在 /lib/modules 中,而不是从加载模块“floppy”的位置。换句话说,它不看实际加载了什么,而是查看预定位置上磁盘上存在的内容。 - Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接