内核配置脚本文件的语法也比较简单, 主要包括如下几个方面
(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”
和
bool
prompt "Networking support"
输入提示的一般格式为:
prompt <prompt> [if <expr>]
其中, 可选的if用来表示该提示的依赖关系。
默认值的格式为:
default <expr> [if <expr>]
如果用户不设置对应的选项, 配置选项的值就是默认值。
依赖关系的格式为:
depends on( 或者requires) <expr>
如果定义了多重依赖关系, 它们之间用“&&”间隔。 依赖关系也可以应用到该菜单中所有的其他选项
( 同样接受if表达式) 内, 下面两段脚本是等价的:
bool "foo" if BAR
default y if BAR
和
depends on BAR
bool "foo"
default y
选择关系( 也称为反向依赖关系) 的格式为:
select <symbol> [if <expr>]
A如果选择了B, 则在A被选中的情况下, B自动被选中。
数据范围的格式为:
range <symbol> <symbol> [if <expr>]
帮助信息的格式为:
help( 或---help---)
开始
........
结束
帮助信息完是靠文本缩进识别结束。“---help---”和“help”在作用上没有区别, 设计“---help---”的初衷在于将文件中的配置逻辑与给开发人员的提示分开。
(2)、菜单结构
配置选项在菜单树结构中的位置可由两种方法决定。 第一种方式为:
menu "Network device support"
depends on NET
config 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文件。