站长网 Linux 分析Linux内核:Kconfig/kbuild的秘密

分析Linux内核:Kconfig/kbuild的秘密

深入理解 Linux 配置/构建系统是如何工作的。 自从 Linux 内核代码迁移到 Git 以来,Linux 内核配置/构建系统(也称为 Kconfig/kbuild)已存在很长时间了。然而,作为支持基础设施,它很少成为人们关注的焦点;甚至在日常工作中使用它的内核开发人员也从未

深入理解 Linux 配置/构建系统是如何工作的。

自从 Linux 内核代码迁移到 Git 以来,Linux 内核配置/构建系统(也称为 Kconfig/kbuild)已存在很长时间了。然而,作为支持基础设施,它很少成为人们关注的焦点;甚至在日常工作中使用它的内核开发人员也从未真正思考过它。

为了探索如何编译 Linux 内核,本文将深入介绍 Kconfig/kbuild 内部的过程,解释如何生成 .config 文件和 vmlinux/bzImage 文件,并介绍一个巧妙的依赖性跟踪技巧。

Kconfig

构建内核的第一步始终是配置。Kconfig 有助于使 Linux 内核高度模块化和可定制。Kconfig 为用户提供了许多配置目标:

配置目标

解释

config  

利用命令行程序更新当前配置  

nconfig  

利用基于 ncurses 菜单的程序更新当前配置  

menuconfig  

利用基于菜单的程序更新当前配置  

xconfig  

利用基于 Qt 的前端程序更新当前配置  

gconfig  

利用基于 GTK+ 的前端程序更新当前配置  

oldconfig  

基于提供的 .config 更新当前配置  

localmodconfig  

更新当前配置,禁用没有载入的模块  

localyesconfig  

更新当前配置,转换本地模块到核心  

defconfig  

带有来自架构提供的 defconcig 默认值的新配置  

savedefconfig  

保存当前配置为 ./defconfig(最小配置)  

allnoconfig  

所有选项回答为 no 的新配置  

allyesconfig  

所有选项回答为 yes 的新配置  

allmodconfig  

尽可能选择所有模块的新配置  

alldefconfig  

所有符号(选项)设置为默认值的新配置  

randconfig  

所有选项随机选择的新配置  

listnewconfig  

列出新选项  

olddefconfig  

同 oldconfig 一样,但设置新符号(选项)为其默认值而无须提问  

kvmconfig  

启用支持 KVM 访客内核模块的附加选项  

xenconfig  

启用支持 xen 的 dom0 和 访客内核模块的附加选项  

tinyconfig  

配置尽可能小的内核  

我认为 menuconfig 是这些目标中最受欢迎的。这些目标由不同的主程序host program处理,这些程序由内核提供并在内核构建期间构建。一些目标有 GUI(为了方便用户),而大多数没有。与 Kconfig 相关的工具和源代码主要位于内核源代码中的 scripts/kconfig/ 下。从 scripts/kconfig/Makefile 中可以看到,这里有几个主程序,包括 conf、mconf 和 nconf。除了 conf 之外,每个都负责一个基于 GUI 的配置目标,因此,conf 处理大多数目标。

从逻辑上讲,Kconfig 的基础结构有两部分:一部分实现一种来定义配置项(参见内核源代码下的 Kconfig 文件),另一部分解析 Kconfig 语言并处理配置操作。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/server/linux/2021/0609/10114.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部