Linux Kbuild文档 1

Linux内核配置方式1.1 概述

Linux内核源代码组织了一个配置系统,该配置系统可以生成内核配置菜单,方便内核配置。配置系统主要包含Makefile、Kconfig和配置工具,可以生成配置界面。其中,配置界面是通过配置工具来生成的,配置工具通过Makefile编译执行,配置界面中的选项则是通过各级的Kconfig(老版本也称Config.in)和Makefile(老版本也称Kbuild)文件定义。

Linux内核配置系统也被移植到其它软件(如Busybox、glibc、uclibc等)中,来提供同样的配置界面以方便有选择性的配置。

1.2 内核配置工具

Linux内核配置命令主要有:make config、make menuconfig、make xconfig和make gconfig,分别是字符界面、ncurses光标菜单、QT图形窗口和GTK图形窗口的配置界面。字符界面配置方式需要回答每一个选项提示,逐个回答进行配置并不方便,而光标和图形配置界面界面友好,方便实用。

make config是完全命令行的配置方式,make menuconfig依赖于ncurses库,make xconfig依赖于QT图形库,make gconfig依赖于GTK图形库。

不同的内核配置方式,分别通过不同的配置工具来完成。scripts目录下提供了各种内核配置工具,表1是这些工具的说明。

表1 内核配置工具说明

配置工具

Makefile相关目标

依赖的程序

conf

config defconfig oldconfig …

conf.c、zconf.tab.c

mconf

menuconfig

mconf.c、zconf.tab.c

qconf

xconfig

qconf.c、kconfig_load.c、zconf.tab.c

gconf

gconfig

gconf.c、kconfig_load.c、zconf.tab.c

其中zconf.tab.c程序实现了解析Kconfig文件和内核配置主要函数。Zconf.tab.c程序还直接包括了下列一些C程序,这样各种配置功能都包含在zconf.tab.o目标文件中了。

其中,lex.zconf.c实现lex语法解析器,

util.c实现配置工具,

confdata.c实现.config等相关数据文件保存,

expr.c实现表达式函数,

symbol.c实现变量处理函数,

menu.c实现菜单控制函数。

1.3 内核配置方式

在顶层的Makefile中,可以查找到如下几行定义的规则:

这就是生成内核配置界面的命令规则,它也定义了执行的目标和依赖的前提条件,还有要执行的命令。这条规则定义的目标为config %config,通配符%意味着可以包括config、menuconfig、xconfig、gconfig等。依赖的前提条件是scripts_basic outputmakefile,这些在Makefile中也是规则定义,主要用来编译生成配置工具。这条规则执行的命令就是执行scripts/kconfig/Makefile制定的规则。

根据配置工具的不同,内核有不同的配置方式。有命令行方式,还有图形界面方式。表2是各种内核配置方法的说明。

表2 内核配置方法的说明

配置方法

功能

config

通过命令行程序更新当前配置

menuconfig

通过菜单程序更新当前配置

xconfig

通过QT图形界面更新当前配置

gconfig

通过GTK图形界面更新当前配置

oldconfig

通过已经提供的.config文件更新当前配置

Randconfig

对所有的选项随机配置

Defconfig

对所有的选项缺省配置

allmodconfig

对所有的选项尽可能选择“m”

allyesconfig

对所有的选项尽可能选择“y”

allnoconfig

对所有的选项尽可能选择“n”的最小配置


这些内核配置方式是在scripts/kconfig/Makefile中通过规则定义的。从这个Makefile中,可以找到下面一些规则定义。如果把变量或者通配符带进去,就可以明白要执行的操作。

这里的ARCH以arm为例来说明。

执行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用QT图形库生成配置界面,arch/arm/Kconfig是菜单的主配置文件,每种配置方式都需要。

执行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用GTK图形库生成配置界面。

执行命令:scripts/kconfig/mconf arch/arm/Kconfig,使用lxdialog工具,生成光标配置菜单。

执行命令:scripts/kconfig/conf (-o/s) arch/arm/Kconfig,完全命令行的内核配置方式。使用“-o”选项,直接读取已经存在的.config文件,要求确定内核新的配置项。使用“-s”选项,直接读取已经存在的.config文件,提示但不要求确认内核新的配置项。

通过上述各种方式都可以完成配置内核的工作,在顶层目录下生成.config文件。这个.config文件保存大量的内核配置项,.config会自动转换成include/linux/autoconf.h头文件。在include/linux/config.h文件中,将包含使用include/linux/autoconf.h头文件。

你可能感兴趣的:(Linux Kbuild文档 1)