如何找到Linux模块路径

cpp*_*hon 10 linux linux-device-driver linux-kernel

在linux中,lsmod列出了很多模块。但是我们如何才能找到这些模块的加载位置。对于某些模块,linux 命令“modprobe -l”显示了路径,但有些则没有。
编辑我也试过“查找”和“定位”。他们都列出了所有类型的版本

locate fake
/svf/SVDrv/kernel/linux/.fake.ko.cmd
/svf/SVDrv/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv/kernel/linux/.fake.o.cmd
/svf/SVDrv/kernel/linux/fake.ko
/svf/SVDrv/kernel/linux/fake.mod.o
/svf/SVDrv/kernel/linux/fake.o
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.ko.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.o.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.ko
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.mod.o
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.o
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.ko.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.o.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.ko
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.mod.o
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.o
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.ko
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.mod.o
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.o
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.ko
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.mod.o
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.o
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.ko
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.mod.o
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.o
Run Code Online (Sandbox Code Playgroud)

小智 12

对不起,如果答案来得有点晚,但我今天自己偶然发现了这个特定的问题......

为了最大限度地减少手工劳动,我列出了当前加载的模块的加载路径:

awk '{ print $1 }' /proc/modules | xargs modinfo -n | sort

我需要它来创建一个仅包含我真正需要的模块的最小内核映像。不幸的是,lsmod只显示与模块#文件名(例如phy-am335x-control.ko和phy_am335x_control)并不总是匹配的名称字段。我希望这有帮助。

  • 您可以通过使用“xargs modinfo -n”仅显示文件名来避免最后的“grep”和“awk”命令 (2认同)

Jai*_*ach 4

例如,您可以在这些模块上使用“locate”或“find”命令来查找它们的位置

[root@localhost core_src]# lsmod
Module                  Size  Used by
iptable_filter          2793  0
ipt_MASQUERADE          2466  1
iptable_nat             6158  1
vmware_balloon          7199  0
i2c_piix4              12608  0
i2c_core               31276  1 i2c_piix4
shpchp                 33482  0
ext4                  371331  2
mbcache                 8144  1 ext4
jbd2                   93312  1 ext4
sd_mod                 39488  4
crc_t10dif              1541  1 sd_mod
sr_mod                 16228  0
cdrom                  39803  1 sr_mod
mptspi                 17051  3
mptscsih               36828  1 mptspi
mptbase                94005  2 mptspi,mptscsih
scsi_transport_spi     26151  1 mptspi
pata_acpi               3701  0
ata_generic             3837  0
ata_piix               22846  0
dm_mirror              14101  0
dm_region_hash         12170  1 dm_mirror
dm_log                 10122  2 dm_mirror,dm_region_hash
dm_mod                 81692  2 dm_mirror,dm_log
[root@localhost core_src]# locate vmware_balloon
/lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/misc/vmware_balloon.ko
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但此方法仅在您拥有一个版本的驱动程序时有效。在我的系统中,有很多不同的版本。locate和find都显示所有版本,因此,我仍然无法判断加载了哪个版本 (2认同)
  • 哦好的。猜测“modinfo”会在系统上有多个模块的情况下为您提供帮助 (2认同)