Answers:
如果需要非交互地执行此操作,则可以使用make oldconfig或make olddefconfig。make * config将修复依赖项,而这些依赖项不如menuconfig那样冗长。(否则,menuconfig非常适合逐个启用功能,甚至还包括帮助文本!)
make oldconfig将询问任何“新”配置选项,因此,如果要非交互地工作,则需要为所有禁用的选项插入这样的注释:
# CONFIG_KERNEL_GZIP is not set
另一方面,使olddefconfig似乎没有要求,但使用默认值。也有silentoldconfig,但是在某些情况下它也会询问,所以并不是那么沉默。
从帮助:
oldconfig - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig - Same as silentoldconfig but sets new symbols to their default value
免责声明:我只是尝试了一些琐碎的测试,即删除了一些我知道需要的库的选项。它们由olddefconfig和oldconfig添加回去。我不知道这如何适用于进行较大的配置。
无论如何,我想您在开始之前已经考虑过使用make localmodconfig或类似的东西吗?多年以来,我都没有尝试过进行最小的配置,但是我似乎记得,有一些不太明显的方法可以创建完全不可用的内核。:)
从内核2.6.29开始,您可以在其中找到一个脚本 /kernel_extracted_dir/scripts/config
例如
/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME
(要归功于到期日,我以此博客为例)
您有以下选项(从帮助中复制)
--enable|-e option Enable option
--disable|-d option Disable option
--module|-m option Turn option into a module
--set-str option string
Set option to "string"
--set-val option value
Set option to value
--undefine|-u option Undefine option
--state|-s option Print state of option (n,y,m,undef)
--enable-after|-E beforeopt option
Enable option directly after other option
--disable-after|-D beforeopt option
Disable option directly after other option
--module-after|-M beforeopt option
Turn option into module directly after other option commands can be repeated multiple times
options:
--file config-file .config file to change (default .config)
--keep-case|-k Keep next symbols' case (dont' upper-case it)