linux多选项菜单脚本,Linux配置选项机制介绍

一、配置选项系统构成

Linux内核的配置系统由以下几个部分组成:

Makefile:分布在 Linux 内核源代码中的Makefile,定义 Linux 内核的编译规则;

配置脚本:Kconfig文件,定义了各个模块和其对应的可配置选项

配置工具:配置命令解释器(如Make config、Make menuconfig 和 make xconfig),对配置脚本进行解释,提供基于字符或图形的用户配置选择界面。

配置文件:顶层.config文件,用户配置选择的初值和选择结果。

其中配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码),除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需知道如何编写 Makefile 和配置脚本就可以。

Step1:顶层Makefile调用配置工具

scripts_basic:

$(Q)$(MAKE) $(build)=scripts/basic

……

#rule for config

config: scripts_basic outputmakefile FORCE

$(Q)mkdir -p include/linux include/config

$(Q)$(MAKE) $(build)=scripts/kconfig $@

#rule for xconfig, gconfig, menuconfig, oldconfig

%config: scripts_basic outputmakefile FORCE

$(Q)mkdir -p include/linux include/config

$(Q)$(MAKE) $(build)=scripts/kconfig $@

${Q}:根据V选项,为空或者@,是否显示这条命令执行过程

相当于执行:make –C scripts/kconfig/ config

Step2: scripts/kconfig/Makefile调用配置工具

#以menuconfig为例,其他的类似

menuconfig: $(obj)/mconf

$< $(Kconfig)

Kconfig := arch/$(SRCARCH)/Kconfig , SRCARCH:=arm

所以相当于调用 scripts/kconfig/mconf arch/arm/Kconfig 在顶层目录生成.config

.config会被转换为include/linux/autoconf.h头文件,然后被include/linux/config.h包含。

Step3: 配置工具解释配置脚本

配置工具

对应的Makefile目标

依赖的程序和软件

conf

defconfig, oldconfig

conf.c, zconf.tab.c

mconf

menuconfig

mconf.c, zconf.tab.c调用scripts/lxdialog/lxdialog

qconf

xconfig

qconf.c, kconfig_load.c, zconf.tab.c基于QT软件包的图形界面

gconf

gconfig

gconf.c, kconfig_load.c, zconf.tab.c基于GTK软件包的图形界面

step4:用户配置结果保存.config 文件中保存配置结果。

二、配置选项脚本文件

参考文档: Documentation/kbuild/kconfig-language.txt

主config:arch/$(SRCARCH)/Kconfig是主config文件,它会调用其他config文件,类似顶层Makefile。

配置脚本语法-关键字

关键字

语法

说明

config

config symbolname

定义一个配置选项符号及其属性

nemu

menu menublockendmenu

定义一个菜单项,包括若干其他配置选项

choice

choicchoiceblockendchoice

定义一个选择组, 如果bool类型,则只能单选,三态类型除了单选还可以把其他的设置为m。optional类型允许一个都不选。

comment

comment

定义一个注视

if

if ifblockendif

if条件块

source

source "Kconfig-file-name"

类似include,读取其他配置文件例子:config NR_CPUS        int "Maximum number of CPUs (2-32)"        range 2 32        depends on SMP        default "4"

配置脚本语法-类型bool, int, hex, tristate, string

配置脚本语法-属性

属性

语法

说明

选择提示

prompt "string"

每个菜单选项只能有一个提示,可以和if配合使用

缺省值

default value [if expr]

可以定义多个带if的default值,最和定义一个不发if的,类似else情况。

依赖关系

depends on require [if expr]

依赖条件require 可以用&&或者|| 组合,可以定义多个denpends属性

反向依赖

select symbol [if expr]

可以定义多个select选现

数字范围

range min max

对于int hex类型的,定义其取值范围为 min<=x<=max

帮助文档

help   string或者---help---   string

只有接下来的一行的缩进不小于上一行的缩进,就一直作为help文档,不需要加引号

配置脚本语法-表达式

表达式用于对符号定义值的判断,可以使用( ),  &&,  ||,  ! , =,  != 操作符进行组合。

三、内核配置系统的应用

利用本文提到的mconf,qconf,gconf,conf等工具,编写config脚本文件,即可完成类似场合的配置工作。

特别的,声称的.config文件可以直接被makefile利用, 一般方法为:

CONFIG-${DEFINE_SYMBOL1_IN_CONFIG} += xxx

CONFIG-${DEFINE_SYMBOL2_IN_CONFIG} += xxx

……CONFIG-y, CONFIG-n 分别得到定义的和没有定义的映射集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值