如何根据当前使用的模块配置 Linux 内核?

如何根据当前使用的模块配置 Linux 内核?

我愿意构建一个仅包含我的机器所需东西的最小内核;所以我从头开始编译内核,使用默认配置并添加我确信拥有的东西(即:以太网卡、WiFi 卡……)。

但还有其他一些事情不太容易了解(例如:看门狗定时器),所以我遇到了自动内核配置它可以检测机器的硬件并根据找到的设备的设置生成一个内核配置文件。

问题是它包含几个重复的设置,甚至一些我没有的设置(我使用的是戴尔笔记本电脑,它“发现”的东西之一是东芝的)。

因此我最终使用make allmodconfig命令中给出的配置构建了一个内核,该内核中的大多数内容都被编译为模块。

启动该内核并运行后,lsmod我可以看到所有正在使用的内核模块(真正需要的模块),我想知道是否有工具或某种方法可以解析该列表并将其转换为相应的内核配置文件。

或者如何在内核中将每一个选项映射到适当的选项,以便我可以手动设置它们。

答案1

如果您使用的是 Linux 2.6.32 及更高版本,您可能需要查看“localmodconfig”make 目标。它几乎可以完成您所要求的任务 — 确定您正在运行的模块,并生成 .config 文件以确保构建这些模块。“localyesconfig”目标将静态地将这些模块编译到内核中,而不是创建模块。

更多信息请见此处:简单的本地内核配置

相关内容