目录
🎜🎜Kconfig层级关系🎜🎜
Kconfig语法介绍" >Kconfig语法介绍
首页 运维 linux运维 一个Linux驱动工程师必知的内核配置知识

一个Linux驱动工程师必知的内核配置知识

Jul 31, 2023 pm 03:51 PM
linux

Linux内核配置系统的组成

Linux内核源码很多,有上千条配置选项,配置相当复杂。

为了更好选择自己想要的功能配置,linux内核源码组织了一个配置系统;

配置系统包括三部分:

  • Makefile:负责整体的配置编译
  • Makefile:负责整体的配置编译
  • Kconfig:配置选项的来源
  • 配置菜单
  • 这个配置系统就是执行make menuconfig显示的图形化界面:

    一个Linux驱动工程师必知的内核配置知识

    内核Kconfig文件

    Kconfig层级关系

    内核配置选项的源文件是 Kconfig文件;

    主选项的配置源文件是:arch/$(ARCH)/KconfigKconfig:配置选项的来源

    🎜配置菜单🎜这个配置系统就是执行make menuconfig显示的图形化界面:🎜
    一个Linux驱动工程师必知的内核配置知识
    🎜🎜🎜🎜内核Kconfig文件🎜🎜 🎜🎜

    🎜🎜Kconfig层级关系🎜🎜

    🎜内核配置选项的源文件是 Kconfig文件;🎜🎜主选项的配置源文件是:arch/$(ARCH)/Kconfig文件🎜;🎜

    Kconfig文件调用其他目录的Kconfig文件,其他目录的Kconfig文件又调用MQ子目录的Kconfig文件,形成树状的配置选项;Kconfig文件调用其他目录的Kconfig文件,其他目录的Kconfig文件又调用各级子目录的Kconfig文件,形成树状的配置选项;

    Kconfig语法介绍

    例如: drivers/net/usb/Kconfig中,DM9601菜单:

    一个Linux驱动工程师必知的内核配置知识

    config USB_NET_DM9601菜单项;菜单项下面的是菜单的属性

    菜单都是以config

    Kconfig语法介绍

    例如: drivers/net/usb/Kconfig中,DM9601菜单:🎜
    一个Linux驱动工程师必知的内核配置知识
    🎜config USB_NET_DM9601菜单项;菜单项下面是菜单的属性;🎜 🎜菜单都是以config 地下,中间有空格,后面大写的就是菜单项。🎜
    • tristate :表示提示信息,在配置菜单中显示的字符串
    • tristate :表示提示信息,在配置菜单中显示的字符串
    • depends :表示依赖于的选项(依赖的选项选上,才能选这个选项)
    • select :表示本菜单选上后,自动选上的菜单
    • Help :帮助文字;

    Kconfig的语法详细参考:Documentation/kbuild/kconfig-languages.txt

    .config文件

    内核配置完毕之后,会在内核源码的顶层目录下生成.config文件

    打开.config文件,我们可以看到内容如下:

    一个Linux驱动工程师必知的内核配置知识

    这里在配置中选上了”Davicom DM96xx based USB 10/100 ethernet device”选项,在.config文件中会生成“CONFIG_USB_NET_DM9601=y

    depends :表示依赖于的选项(依赖的选项选上,才能选这个选项)🎜🎜select :表示本菜单选上后,自动选上的菜单🎜🎜Help :帮助文字;

    Kconfig的语法详细参考:Documentation/kbuild/kconfig-languages.txt🎜

    .config文件

    内核配置完毕之后,会在内核源码的顶层目录下生成.config文件;🎜

    打开.config文件,我们可以看到内容如下:🎜

    一个Linux驱动工程师必知的内核配置知识

    这里在配置中选上了”Davicom DM96xx based USB 10/100 ethernet device”选项,在.config文件中会生成“CONFIG_USB_NET_DM9601=y”的配置信息;如果没有选上,这个选上会用“#”注释掉;🎜

    内核Makefile文件

    Kconfig一样,顶层以及各子目录下都有一个Makefile文件。其作用如下:Kconfig一样,顶层以及各子目录下都有一个Makefile文件。其作用如下:

    • 顶层Makefile负责配置编译整个linux内核;
    • 顶层Makefile读取.config文件,根据.config文件的配置选项编译内核;
    • 顶层makfile递归地遍历内核源码中的所有子目录,编译所有的目标文件;
    • 每个子目录下都有Mekefile文件,这些Makefile文件会使用.config文件中的信息,编译相应的文件;

    Makefile

    • 顶层Makefile负责配置编译整个linux内核;
    • 顶层Makefile读取.config文件,根据.config文件的配置选项编译内核;
    • 顶层makfile递归地遍历内核源码中的所有子目录,编译所有的目标文件;
    • 每个子目录下都有Mekefile文件,这些Makefile文件会使用.config文件中的信息,编译相应的文件;
    Makefile中的例子:🎜
    一个Linux驱动工程师必知的内核配置知识

    obj-$(CONFIG_USB_NET_DM9601) += dm9601 .oobj-$(CONFIG_USB_NET_DM9601) += dm9601.o

    相当于:

    obj-y += dm9601.o

    • obj-y的意思是把dm9601.o目标文件编译进内核,dm9601.o目标文件应该从dm9601.cdm9601.S文件中编译过来;
    • obj-m 的意思是把目标文件编译成模块

    加载内核配置的方法

    通常每个厂商都有自己的defconfig文件,加载配置时只需执行make xxx_defconfig,然后就会生成一个.config

    实际上:🎜🎜 obj-y += dm9601.o🎜
    • obj-y的意思是把dm9601.o目标文件编译进内核,dm9601.o 目标文件应来自dm9601.cdm9601.S文件中编译过来;
    • obj-m 的意思是把目标文件编译成模块

    加载内核配置的方法

    🎜通常每个厂商都有自己的defconfig文件,加载配置时只需执行make xxx_defconfig,然后就会生成一个.config文件,即代表加载完成配置。🎜

    在日常开发过程中,对于修改过.config,通常也将.config拷贝覆盖原来的xxx_defconfig,然后上传代码。

    以上是一个Linux驱动工程师必知的内核配置知识的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    deepseek网页版入口 deepseek官网入口 deepseek网页版入口 deepseek官网入口 Feb 19, 2025 pm 04:54 PM

    DeepSeek 是一款强大的智能搜索与分析工具,提供网页版和官网两种访问方式。网页版便捷高效,免安装即可使用;官网则提供全面产品信息、下载资源和支持服务。无论个人还是企业用户,都可以通过 DeepSeek 轻松获取和分析海量数据,提升工作效率、辅助决策和促进创新。

    deepseek怎么安装 deepseek怎么安装 Feb 19, 2025 pm 05:48 PM

    DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

    如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

    Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

    BITGet官方网站安装(2025新手指南) BITGet官方网站安装(2025新手指南) Feb 21, 2025 pm 08:42 PM

    BITGet 是一款加密货币交易所,提供各种交易服务,包括现货交易、合约交易和衍生品。该交易所成立于 2018 年,总部位于新加坡,致力于为用户提供安全可靠的交易平台。BITGet 提供多种交易对,包括 BTC/USDT、ETH/USDT 和 XRP/USDT。此外,该交易所还在安全性和流动性方面享有盛誉,并提供多种功能,如高级订单类型、杠杆交易和 24/7 全天候客户支持。

    gate.io安装包免费拿 gate.io安装包免费拿 Feb 21, 2025 pm 08:21 PM

    Gate.io是一款受欢迎的加密货币交易所,用户可通过下载其安装包并安装在设备上使用。获取安装包步骤如下:访问Gate.io官方网站,点击“下载”,选择对应操作系统(Windows、Mac或Linux),将安装包下载至计算机。安装过程中建议暂时禁用杀毒软件或防火墙,确保安装顺利。完成后,用户需创建Gate.io账户以开始使用。

    如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

    如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

    欧易okx安装包直接进 欧易okx安装包直接进 Feb 21, 2025 pm 08:00 PM

    欧易 OKX,全球领先的数字资产交易所,现推出官方安装包,提供安全便捷的交易体验。欧易 OKX 安装包无需通过浏览器访问,可直接在设备上安装独立应用程序,为用户打造稳定高效的交易平台。安装过程简便易懂,用户只需下载最新版本安装包,按照提示一步步操作即可完成安装。

    欧易交易所下载官方入口 欧易交易所下载官方入口 Feb 21, 2025 pm 07:51 PM

    欧易,又称OKX,是一个全球领先的加密货币交易平台。文章提供了欧易官方安装包的下载入口,方便用户在不同设备上安装欧易客户端。该安装包支持 Windows、Mac、Android 和 iOS 系统,用户可根据自己的设备类型选择相应版本下载。安装完成后,用户即可注册或登录欧易账户,开始交易加密货币和享受平台提供的其他服务。

    See all articles