使用(硬编译的、内置的)当前加载的模块配置Linux内核

3
我希望在我的Debian/Sid/x86-64上使用最新的Linux内核(例如2017年9月底的4.13.4版本)从源代码构建,并将所有(或大多数)当前加载的模块配置为硬编译到新内核中。这可能需要一些类似于“make configfromloadedmodules”的命令(当然不是确切的“configfromloadedmodules”目标,而是其他我没有轻易找到的目标)。对于大多数(理想情况下是全部)当前加载的模块(由“lsmod”给出),在“make config”时它会回答每个模块的选项是“Y”(而不是“m”),并给我一个足够好的“.config”文件;但我不想要一个膨胀的内核,其中包含我不使用且当前未加载的所有驱动程序。这种方法是否存在,或者我可能读到的是一些愿望或实验性内核的非标准功能?
这样可以避免任何initrd的问题,并为我的硬件和习惯提供合适的内核。
当前的内核是标准的Debian内核4.12.0-2-amd64,因此我有它的/boot/config-4.12.0-2-amd64 (所以我想自动化替换其中的CONFIGxxx=mCONFIGxxx=y,根据已加载的模块,例如由lsmod给出)。
参见this答案;我仍然相信设备树对于Linux并非必不可少,但它们是一种有用的便利。
一个类似的问题是如何轻松地配置适合我的计算机、硬件和设置的内核,不需要initrd,没有任何模块(例如使用CONFIG_MODULES=n),并且没有(或只有很少的)无用的驱动程序,可以像我的当前Debian内核一样好用。

你有当前内核的 .config 文件吗? - sawdust
是的,请查看编辑后的问题。 - Basile Starynkevitch
2
通常我不建议这样做,但是在这种情况下似乎可以相对安全地编辑 .config 文件,并将 =m 替换为 =y - sawdust
但我想要根据lsmod输出自动化这个过程 - Basile Starynkevitch
2
从可加载模块名称推导出 Kconfig 符号并不是一件简单的事情。你可能需要找到 Makefile 将后者映射到前者。你预计要执行多少次这种转换? - sawdust
我记得曾经读过有人尝试过某事,但是我忘记了具体是什么。 - Basile Starynkevitch
1个回答

4
我认为,您应该了解“make localmodconfig”和“make localyesconfig”,并根据您的需求使用其中之一。 这个链接这个链接这个链接都是有用的参考。

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