【发布时间】:2018-03-09 04:22:43
【问题描述】:
我想在我的 Debian/Sid/x86-64 上从源代码构建一个最近的 Linux 内核(例如 2017 年 9 月末的 4.13.4),并将所有(或大多数)当前加载的模块配置为新版本中的硬构建内核。
(我相信我在某处读到过类似的东西,但不记得在哪里也找不到了)
可能是一些make configfromloadedmodules(当然它不完全是configfromloadedmodules makefile 目标,而是一些我不容易找到的其他目标)。
也就是说,对于大多数(理想情况下所有)当前加载的模块(由lsmod 给出)它会在make config 为每个模块回答Y(而不是m)时间给我一些足够好的.config;但我不想要一个包含所有驱动程序的臃肿内核——即使是那些我不使用且当前未加载的驱动程序。
这是否存在,或者是我可能读到的一些愿望或实验内核的一些非标准特性?
这将避免任何initrd 的事情,并给我一个适合我的硬件和习惯的内核。
当前的内核是一个标准的 Debian 内核 4.12.0-2-amd64,所以我有它的 /boot/config-4.12.0-2-amd64(所以我想自动替换 CONFIGxxx=m 与 CONFIGxxx=y 那里,根据当前加载的模块,例如lsmod)。
另见this答案;我仍然相信设备树对于 Linux 来说不是必不可少的,但它们是一种有用的便利。
我的问题的一个近似变体是如何轻松配置适合我的计算机和硬件和设置的内核,没有ìnitrd,没有任何模块(例如使用CONFIG_MODULES=n)并且没有(或很少)无用的驱动程序,它可以像我当前的 Debian 内核一样工作。
【问题讨论】:
-
你有当前内核的 .config 文件吗?
-
是的,请参阅已编辑的问题
-
我通常不建议这样做,但对于这种情况,编辑 .config 文件似乎相对安全,将
=m替换为=y。跨度> -
但我想要一些基于
lsmod输出的自动化操作 -
从可加载的模块名称派生 Kconfig 符号并非易事。您可能需要找到 Makefile 将后者映射到前者。您预计执行此转换的次数是多少?
标签: linux linux-kernel kernel