我怎么知道哪些内核模块是必需的?

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

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

更多信息 。

请注意,这不考虑一次加载但当前已卸载的模块。 ArchLinux有一个modprobed_db的东西解决了这个问题,我不知道Gentoo是否也有。

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

显示使用中的驱动程序/模块:

 lspci -v 

如果我们要进入技术性的话,我会说你可以卸载这些模块,然后你就不需要重新编译。 不过,我认为你的意思是“只包括司机到我的具体硬件”。 在这种情况下,我会build议:

 dmesg | less 

仔细观察,看看你能推断出哪些硬件细节。 然后,当你去编译内核的时候,查看所有的组件,看看它是否提到你的硬件。 重新启动后,请检查以确保所有硬件都能正常工作。

在archlinux中,有一个名为[hwd][1]的bash脚本,我认为它可以在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 

我使用debian中的discover包来找出我可能加载的内核模块。 特别:

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

对于我的AMD双核心桌面与NVIDIA芯片组我得到:

 amd74xx emu10k1 emu10k1-gp forcedeth i2c-nforce2 ohci1394 sata_nv 

这里有一篇关于linux硬件检测的短文 ,包括使用discover的一些文本。

在GKH的“Linux Kernel”中有一个shellcript,它近似地做了这个。 该剧本可以从书籍网站免费下载,并没有版权信息,所以我想我可以在这里发表。

 for i in `find /sys/ -name modalias -exec cat {} \;`; do /sbin/modprobe --config /dev/null --show-depends $i ; done | rev | cut -f 1 -d '/' | rev | sort -u 

脚本输出是您的硬件需要运行的模块列表。 它没有列出使某些软件工作所需的模块,如ipv6.so!

@Greg:如果你不希望这样发布,我会删除它;-)

其中一些发行版还有一个很好的叫做hwinfo的漂亮工具,它提供了大量关于硬件的有用信息。

为了更好地了解内核模块, lspcilsmod总是为我做了很好的工作。

如果你正在重新编译内核。 最好的办法是使用man_on_osx提供的方法来很好地了解你的硬件。 列出你所有的组件。 你只需要从菜单中取消/排除模块(不需要的)(也就是说,如果你正在通过make menuconfig / make xconfig重新编译它)。

您也可以使用“rmmod”来卸载可以随时加载的模块。

lspci也应该帮助你。