我现在正在开发内核模块,构建时间已经开始在我的皮肤之下。作为一个副作用,我在构建过程中需要太多的“咖啡”休息时间。
所以我一直在寻找一种方法来只构建我的平台所需的东西。“linux kernel in a nutshell”的第 7 章和第 8 章很好地详细说明了如何手动执行此操作。它是一个很好的阅读:http ://www.kroah.com/lkn/
但是尽管我了解这些东西,但这仍然需要进行很多调整才能使其发挥作用。
2.6.32 及更高版本的内核添加了一个新目标make localmodconfig
。它会扫描lsmod
并适当地更改 .config 。所以我以为我找到了我的“自动化”。但是这个 perl 脚本也有一些问题。
该线程描述了问题:https ://bbs.archlinux.org/viewtopic.php?pid=845113
还有一个显然对其他人有用的建议解决方案是直接运行脚本而不是使用make的目标。
虽然对我来说, make localmodconfig 根本不起作用。其原因如下:
make clean
make mrproper
cp /boo/config-'uname -r' .config
make localmodconfig
它停止了
vboxguest config not found!!
nf_defrag_ipv6 config not found!!
vboxsf config not found!!
vboxvideo config not found!!
问题是我的内核开发环境在 virtualbox 里面。这些 vbox 模块是在我选择安装“virtualbox guest addtion”时安装的。
并且 netfilter 模块可能是一个特定于发行版的模块(很多 netfilter 模块不是主线内核的一部分,所以这对我来说并不令人震惊),它不包含在主线内核中。
现在的解决方法显然是卸载这些模块并重试。但我在想是否有补丁streamline_config.pl
可以让用户在她/他想要的时候排除某些模块。问题是我对 perl 的了解为零,我喜欢这样。
所以简而言之我的问题
修补
streamline_config.pl
,以便我可以提供模块名称列表作为参数,它将从处理配置文件中排除。该脚本位于kernel.org
编辑:删除有关 perl 脚本未运行的内容。正如 mugen kenichi 指出的那样(我有多愚蠢?)。但是
localmodconfig
由于源代码树下没有一些模块代码,make 仍然不起作用。修补streamline_config.pl
仍然有效的要求。