linux下config文件,linux config 文件

linux下config文件,linux config 文件除了 Makefile 的编写 另外一个重要的工作就是把新功能加入到 Linux 的配置选项中 提供此项功能的说明 让用户有机会选择此项功能 所有的这些都需要在 config in 文件中用配置语言来编写配置脚本 在 Linux 内核中 配置命令有多种方式 配置命令解释脚本 Makeconfig makeoldconfi ConfigureMak

除了 Makefile 的编写,另外一个重要的工作就是把新功能加入到 Linux 的配置选项中,提供此项功能的说明,让用户有机会选择此项功能。所有的这些都需要在 config.in 文件中用配置语言来编写配置脚本,

在 Linux 内核中,配置命令有多种方式:

配置命令解释脚本

Make config, make oldconfigscripts/Configure

Make menuconfigscripts/Menuconfig

Make xconfigscripts/tkparse

字符界面配置(make config)为例,顶层 Makefile 调用 scripts/Configure, 按照

arch/arm/config.in 来进行配置。命令执行完后产生文件 .config,其中保存着配置信息。下一次再做 make config

将产生新的 .config 文件,原 .config 被改名为 .config.old

内核配置子系统

内核源码目录的顶层Makefile负责用来构建[内核镜像]和[动态加载模块]二者。它通过递归源码树的子目录来实现的,具体进入哪些子目录取决于组件的选择,也就是内核配置。

配置什么?

每种体系统都会输出组件列表给内核配置时选择,组件类型包括:

第一,处理器特性;

第二,硬件载板;

第三,载板特殊的硬件配置;

第四,内核子系统组件(这些组件或多或少是独立于体系的,比如网络协议栈)

配置库

每种体系都关联着一个组件数据库,此库以文件形式保存在arch/$ARCH目录下。2.4版是config.in,2.6版是Kconfig。在配置内核时,此文件会被解释(parsed)来提供组件选择。如果你要添加硬件特征[配置项

],你得修改此文件。

配置语言

虽然内核配置使用make命令,[内核配置子系统

]的配置库使用了一种不同的配置描述语言,并且2.4与2.6都有所不同。这种语言语法很简单,很接近自然语言,这里不详述,只谈使用技术。

什么是[内核配置子系统

]?为什么可以使用不同的脚本语言?

因为配置过程是整个内核构建过程的串行子部分,产出特定的配置信息,所以完全可以使用独立的更简单的领域特定语言(domain-specific language)。

第一,每一个内核子部分(subsection)都有单独的配置文件定义配置规则,比如,网络部分,配置信息保存在子目录下的

Kconfig。体系相关的配置文件会导入这个文件,例如,在2.4版,MIPS的体系配置文件(arch/mips/config-

shared.in)有一行用来导入VFS的配置(fs/config.in)配置规则。

第二,配置文件.config通过名值对(name=value )保存[配置项

]。配置项的名有前缀CONFIG_,后面跟着定义在配置文件里的组件名。配置项的值有如下几种:

布尔值:y or n

三态值(tristate): y, n, or m(module)

字符串:

整型:

十六进制数值:

第三,配置变量可以被定义为是否需要用户指定,如果不需要,配置变量使用默认值;

第四,可以为配置变量定义依赖;依赖性用来决定配置项的可见性;

第五,每个配置变量都关联一个帮助文本。

那么[内核配置子系统]是如何将被选择的组件信息输出到kbuild的呢?[内核配置子系统]在用户完全配置操作后会生成一个配置文件.config,内有已选定组件的[名值对]列表。顶层的makefile通过包含.config来达到组件选择。

对源码进行配置

除了[makefile规则]需要[配置信息]进行动态生成外,内核源码内同样有代码依赖配置信息。比如2.4版内核源码init/main.c 有如下代码:

#ifdef CONFIG_PCI

pci_init();

#endif

宏CONFIG_PCI定义与否的信息来自用户配置操作。为了把配置信息传递入源码,kbuild

得把[名值对]翻译成宏定义,保存在include/linux/autoconf.h。然后,这个头文件会被分拆为多个头文件,保存在include

/config目录。例如上面的例子,CONFIG_PCI生成一个include/config/pci.h与之对应,内有一行:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204186.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:48
下一篇 2026年3月19日 下午8:48


相关推荐

  • 检索大赛 实验1 KIMI结果

    检索大赛 实验1 KIMI结果

    2026年3月14日
    2
  • ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)

    ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)前言最近博主为了准备七月份的百度之星的算法比赛,把C++STL的相关语法又重新学习了一遍,然后整理成此文,本文内含string、vector、deque、stack、queue、list、set、map共9种容器的概念及常用操作语法,以及对STL的遍历、查找、排序、替换、算术生成等常用算法的用法和示例,供读者阅读收藏,学习参考。给大家推荐博主本人学习过的一个c++STL质量极高的课程链接:C++进阶之STL,很适合0基础想快速入门C++STL的朋友,关于想进阶的朋友,可以去看候捷老师的C++S

    2022年7月18日
    15
  • Mac 下配置Tomcat环境「建议收藏」

    Mac 下配置Tomcat环境「建议收藏」Windows下配置Tomcat环境很easy了,那么在Mac下怎么配置Tomcat环境变量呢?首先我们到Tomcat官网上下载tomcat压缩包我下载的是apache-tomcat-7.0.64http://tomcat.apache.org/download-70.cgi下载好了之后放到我们想放的目录下面我放的是/Users/xxx/Documents/work/jav

    2022年5月13日
    51
  • PyCharm界面汉化

    PyCharm界面汉化欢迎使用 PyCharm 汉化方法第一次使用 PyCharm 界面是全英文的 如果你想学习汉化 PyCharm 软件界面 可以仔细阅读这篇文章 了解一下 使用汉化包汉化 PyCharm 网上下载汉化包打开 PyCharm 安装目录下的 lib 文件夹 个人安装目录在 D 盘 然后将 PyCharm 汉化包剪切 粘贴放入文件夹中重启 PyCharm 后 汉化的效果如下图 菜单变化显著使用插件汉化 领略插件的强大打开 PyCharm 单击 File Settings 选择 Plugins Marketplace

    2026年3月27日
    2
  • 对数的性质和基本运算

    对数的性质和基本运算对数的概念 一般地 如果那么数 X 叫做以 a 为底 N 的对数 记做 其中 a 叫做对数的底数 N 叫做真数 需要注意的是底数 a 的限制条件 对数的形式 1 常用对数 以 10 为底的对数记做 2 自然对数 以无理数 e 2 71828 为底数的对数简记为 3 一般对数 对数运算 1 基本性质 1 1 的对数是 0 2 对数恒等式 2 运算法则 设定 a gt 0 M gt 0 N gt 0 1 2 3

    2025年6月26日
    6
  • 矩阵论: 第二章: 内积空间

    矩阵论: 第二章: 内积空间这里面的内积就是向量之间的乘法运算 中学所说的内积 夹角和模长 是其中的一种形式线性空间描述了向量之间的数乘和加法内积空间描述向量之间的模长和夹角内积的结果代表的是数域中的值而线性空间是该数域上的线性空间 1 内积空间的概念欧几里得空间 欧式空间 R 的 n 次方是我们中学期间所学的向量内积 2 对于同一个线性空间可以引入不同的内积 可以自己定义 从而构

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号