linuxconfig文件
2009年11月25日 14:23 来源:ChinaUnix博客 作者:新华网 编辑:周荣茂

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

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

配置命令解释脚本Make config, make oldconfigscripts/ConfigureMake menuconfigscripts/MenuconfigMake 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与之对应,内有一行:

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/106331/showart_2103992.html

linuxconfig文件相关推荐

  1. MiniGUI开发指南

    MiniGUI 目录 MiniGUI 体系结构 概览 引言 POSIX线程 基于PThread的微客户/服务器结构 多线程通讯的关键数据结构--消息队列 面向对象技术在MiniGUI中的应用 未来考虑 ...

  2. 使用 grep 查找所有包含指定文本的文件

    目标:本文提供一些关于如何搜索出指定目录或整个文件系统中那些包含指定单词或字符串的文件. 难度:容易 约定: # - 需要使用 root 权限来执行指定命令,可以直接使用 root 用户来执行也可以使 ...

  3. 在VMware中安装新版Ubuntu后,无法跨虚拟机复制粘贴和拖拽文件的解决方法

    首先确保已经安装了VMware Tools: sudo apt install open-vm-tools 然后发现还是不能复制粘贴和拖拽文件?原因是Ubuntu(22.04,20.04等)默认启用了 ...

  4. 使用 GPG 加密和解密文件

    目标:使用 GPG 加密文件 发行版:适用于任何发行版 要求:安装了 GPG 的 Linux 或者拥有 root 权限来安装它. 难度:简单 约定: # - 需要使用 root 权限来执行指定命令,可 ...

  5. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  6. /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题

    记一次误删引发的服务雪崩 K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除   删除后,有状态服务先出现了问题,服务无法启动.停止. ...

  7. Access to XMLHttpRequest at file from origin ‘null‘ has been blocked by CORS policy谷歌浏览器本地打开项目js文件报错

    Access to XMLHttpRequest at 'file:///xxxxx/PQ.BaseInfo.proto' from origin 'null' has been blocked by ...

  8. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  9. zip压缩多个文件,解压时不包含目录层级

    假设我们有个目录叫 dev,dev中有很多文件,我们想要将dev中的文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # ...

最新文章

  1. 关于Rocchio算法和向量空间模型反馈
  2. silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发)
  3. 鸿蒙系统用没有安卓的代码,套壳?不存在!纯鸿蒙系统不含任何安卓代码,其他手机厂商可使用...
  4. react学习(61)--js contact
  5. java哈喽word,JavaWeb之HelloWord
  6. xUtils项目框架
  7. [Effective C++系列]-为多态基类声明Virtual析构函数
  8. linux brctl
  9. linux下安装字体
  10. inter至强服务器处理器型号,Intel发布新处理器,用金/银作为型号区分
  11. ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)
  12. 飞塔防火墙HA详解与配置
  13. 爬虫重试模块retry,自动重试
  14. chrome调试与设置 remote设备调试
  15. 老外名字中间的点怎么输入 微软拼音 @
  16. DJ15 8086 中断程序设计
  17. 气象卫星_全国自动站资料文件名规定(1)
  18. Asp.Net Kestrel自定义IP和端口, WTM框架自定义IP和端口
  19. 面向对象分析与设计01 - 关键抽象
  20. python不同的版本有什么区别_多版本python的区别方法

热门文章

  1. java脏字过滤_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...
  2. 刚当部门经理的一点小感悟,定时更新……
  3. 自古深情留不住,技术Leader30条套路得人心!!!
  4. 微信小程序和普通页面得区别
  5. intel酷睿游戏计算机,英特尔11代酷睿游戏芯片跑分曝光
  6. go build command-line-arguments: copying /tmp/go-build042781492/b001/exe/a.out: open main: text file
  7. 360和广点通广告SDK注意事项
  8. 显示网格(grid)
  9. selenium登录优酷
  10. Android 之UI自适应解决方案