内核配置脚本文件的语法也比较简单, 主要包括如下几个方面
(1)、配置选项
大多数内核配置选项都对应Kconfig中的一个配置选项(config):config MODVERSIONS bool "Module versioning support" help Usually, you have to use modules compiled with your kernel. Saying Y here makes it ...
“config”关键字定义新的配置选项,之后的几行代码定义了该配置选项的属性。配置选项的属性包括
类型、数据范围、输入提示、依赖关系、选择关系及帮助信息、默认值等。每个配置选项都必须指定类型,类型包括bool、tristate、string、hex和int,其中tristate和string是两种基本类型, 其他类型都基于这两种基本类型。类型定义后可以紧跟输入提示,下面两段脚本是等价的:
bool “Networking support”
和
boolprompt "Networking support"
输入提示的一般格式为:
prompt[if ]
其中, 可选的if用来表示该提示的依赖关系。
默认值的格式为:
default <expr> [if <expr>] 如果用户不设置对应的选项, 配置选项的值就是默认值。 依赖关系的格式为:depends on( 或者requires)
如果定义了多重依赖关系, 它们之间用“&&”间隔。 依赖关系也可以应用到该菜单中所有的其他选项
( 同样接受if表达式) 内, 下面两段脚本是等价的:bool "foo" if BARdefault y if BAR
和
depends on BARbool "foo"default y
选择关系( 也称为反向依赖关系) 的格式为:
select[if ]
A如果选择了B, 则在A被选中的情况下, B自动被选中。
数据范围的格式为:range[if ]
帮助信息的格式为:
help( 或---help---) 开始........
结束
帮助信息完是靠文本缩进识别结束。“---help---”和“help”在作用上没有区别, 设计“---help---”的初衷在于将文件中的配置逻辑与给开发人员的提示分开。(2)、菜单结构配置选项在菜单树结构中的位置可由两种方法决定。 第一种方式为:
menu "Network device support" depends on NETconfig NETDEVICES…endmenu
所有处于“menu”和“endmenu”之间的配置选项都会成为“Network device support”的子菜单, 而且, 所有子菜单( config) 选项都会继承父菜单( menu) 的依赖关系, 比如, “Network device support”对“NET”的依赖会被加到配置选项NETDEVICES的依赖列表中。
注意: menu后面跟的“Network device support”项仅仅是1个菜单, 没有对应真实的配置选项, 也不具备3种不同的状态。 这是它和config的区别。
用Kconfig配置脚本和Makefile脚本编写的更详细信息, 可以分别参见内核文档Documentation目录内的
kbuild子目录下的Kconfig-language.txt和Makefiles.txt文件。