我如何知道需要哪些内核模块?

我如何知道需要哪些内核模块?

假设我有一个默认的 Gentoo 安装,其中所有模块(例如设备驱动程序)都已编译。从这一点来看,下次重新编译内核时,有没有一种简单的方法可以排除未使用的模块?

答案1

make localmodconfigmake localyesconfig(在 2009 年 12 月 3 日发布的版本 2.6.32 中引入)将选择加载正在使用的模块所需的模块。

更多信息

请注意,这不考虑曾经加载但当前已卸载的模块。ArchLinux 有一个修改probed_db可以解决这个问题,但我不知道 Gentoo 是否也有一个。

答案2

我使用 debian 中的 discover 包来找出我可以加载的内核模块。具体来说:

apt-get install discover
discover --data-path=linux/module/name|sort|uniq

对于我的带有 nvidia 芯片组的 amd 双核台式机,我得到:

amd74xx
emu10k1
emu10k1-gp
forcedeth
i2c-nforce2
ohci1394
sata_nv

这是一个短文关于Linux中的硬件检测,包括一些关于使用发现的文本。

答案3

您可以使用“lsmod”来了解内核模块

答案4

如果我们要讨论技术细节,我会说您可以卸载这些模块,然后就不需要重新编译了。但是,我认为您的意思是“仅包含针对我的特定硬件的驱动程序”。在这种情况下,我建议:

dmesg | less

查看它并查看可以推断出的硬件详细信息。然后,当您去编译内核时,查看所有组件并查看它是否提到了您的硬件。重新启动后,检查以确保所有硬件都正常工作。

在 archlinux 中,有一个名为的 bash 脚本[hwd][1],我认为它可以在 gentoo 上运行(可能需要一点黑客技术),但它会告诉你引擎盖下的情况。这是我的工作电脑:

[theman@work]# hwd -s
HARDWARE DETECT ver 5.5 (simple mode)
Kernel     : 2.6.29-ARCH
CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual  CPU  E2200  @ 2.20GHz 2194MHz, 1024 KB Cache
Processor 1: Intel(R) Pentium(R) Dual  CPU  E2200  @ 2.20GHz 2194MHz, 1024 KB Cache

Sound(a)   : 82801G ICH7 Family High Definition Audio Controller module: snd-hda-intel 
Video      : GeForce 8400 GS server: Xorg (vesa)  
Driver     : xf86-video-vesa   module: - 
Monitor    : Generic Monitor  H: 28.0-96.0kHz V: 50.0-75.0Hz
Mouse      : Logitech, Inc. Marble Mouse (4-button)  xtype: IMPS2 device: /dev/input/mice
HDD        : 82801GB/GR/GH ICH7 Family SATA IDE Controller module: ata_piix 
USB        : 82801G ICH7 Family USB UHCI Controller #4 module: uhci_hcd 
USB2       : 82801G ICH7 Family USB2 EHCI Controller module: ehci_hcd 

Ethernet   : RTL8139/8139C/8139C+ module: 8139too 
Network    : No wireless card

Menu       : Main menu: hwd
All        : Detect all hardwares: hwd -e
X sample   : Generate X sample: hwd -x 

相关内容