脚本化的Linux内核配置


8

给定一系列内核功能,我想创建一个最小的linux配置,该配置支持所有给定的功能(以及相应的依赖项),但没有别的。

有没有一种创建allnoconfig的方法和一种启用功能的工具?

(我可以编辑.config文件,但不能正确获得依赖关系。我可以使用make *config,但据我所知,它们只能以交互方式工作或创建一些默认配置。)


这是一个通过依赖关系解析自动执行Linux内核配置的脚本:内核期望(kernelexpect)
T. Perkins

Answers:


1

如果需要非交互地执行此操作,则可以使用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或类似的东西吗?多年以来,我都没有尝试过进行最小的配置,但是我似乎记得,有一些不太明显的方法可以创建完全不可用的内核。:)


“ olddefconfig”可能也可以正常工作。有没有办法从defconfig文件中获取默认配置选项?(在这种情况下,defconfig文件将提供合适的基数,并且可以在.config中设置最小的自定义选项。)
michas

-1

从内核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)

1
乍一看似乎很棒。不幸的是,它似乎根本不在乎依赖。:(
michas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.