当前位置: 首页 > article >正文

Linux kernel目录、配置文件介绍

1. linux代码目录结构kernel/ -------内核核心代码进程调度相关模块mm/------------内存管理子系统fs/------------文件子系统net/-----------不包含网络驱动的网络子系统ipc/-----------进程间通信子系统arch/----------体系架构相关代码arch/mach------具体machine/board相关代码arch/include/asm/—体系结构相关文件arch/boot/dts–设备树相关文件init/----------linux初始化相关文件block/---------块设备相关sound/---------音频子系统drivers/-------设备驱动lib/-----------内核中需要使用的库函数crypto/--------加密、解密相关的库函数security/------安全相关selinuxvirt/----------提供虚拟机技术的支持(KVM等)usr/-----------用于生成initramfs的代码firmware/------用于驱动的第三方设备固件samples/-------一些示例代码tools/---------一些常用工具Kconfig----Kbuild-----Makefile----2. Kconfig defconfig Kbuild Makefile .config介绍Kconfig提供菜单选项 —》 defconfig 默认配置模板—》XX_prune.config厂商剪裁配置—》 用户配置.config —》 Makefile/Kbuild根据.config执行编译Kconfig(定义配置菜单)位于内核源码各个子目录下drivers/net/Kconfig用于各种配置的源文件执行make menuconfig 系统读取Kconfig文件生成配置界面供开发进行配置make menuconfig最后生成.config文件下面是一段Kconfig中的一个config配置项CONFIG_MODVERSIONS的配置config MODVERSIONS bool Set version information on all module symbols depends on MODULES help Usually, modules have to be recompiled whenever you switch to a new kernel. ...关键字说明config表示一个配置项配置项为CONFIG_xxx(CONFIG_MODVERSIONS)bool:类型定义depends on:依赖关系依赖XXX,只有XXX选项被选中时才能设置当前选项help:后面文字为配置界面的帮助信息defconfig(默认配置模板)Kconfig中定义的配置项可以提供make menuconfig进行选择y m ny编译进内核镜像m编译成模块n不编译来决定是否开启或者关闭。同时也可以通过defconfig文件进行打开。文件位置通常位于 arch/架构/configs/ 目录下例如 arch/arm64/configs/defconfig 或 arch/x86/configs/x86_64_defconfig文件内容仅包含修改过的配置项文件用途作为生成.config的种子工作流程从defconfig—》.config当你执行命令 make _defconfig 时Kbuild 系统会做以下事情读取 arch/架构/configs/_defconfig。将其中的配置项展开并合并内核默认的通用配置。生成根目录下的 .config 文件。XX_prune.config厂商裁剪配置文件位置通常位于板级支持包BSP或特定厂商的目录中如 TI 的 Processor SDK。文件作用这是一个增量配置或裁剪配置文件。XX_prune.config会将.config中的一些功能进行剪裁掉“prune” (裁剪) 的含义这个文件通常用于关闭Disable某些在通用 defconfig 中开启、但在特定硬件上不需要或不兼容的功能以减小内核体积。使用方式在 TI 的构建系统中通常会先加载通用的 defconfig然后应用这个XX_prune.config 来覆盖关闭特定选项。.config(最终配置文件)文件位置源码根目录 (linux-kernel/)文件内容包含所有配置项无论是否修改文件用途用于提供给Makefile进行编译内容解释CONFIG_NETWORKINGy 表示将网络支持直接编译进内核CONFIG_EXT4_FSm 表示将 ext4 文件系统编译成可加载模块CONFIG_DEBUGn#CONFIG_DEBUG is not set 表示关闭调试选项y编译进内核镜像built-in。m编译成模块module。n不编译。Makefile 与 Kbuild编译规则的执行者内核顶层和各子目录下的 Makefile以及专门用于内核构建的 Kbuild 文件会读取 .config 中的配置项动态决定哪些代码需要被编译以及以何种方式编译是打包进内核 vmlinux还是生成独立的 .ko 模块。顶层makefile负责整体框架的初始化各个子目录的makefile:负责该目录下的编译规则obj-y foo.o表示将 foo.c 编译并链接进内核主镜像。obj-m bar.o表示将 bar.c 编译成独立的内核模块 bar.ko。obj-$(CONFIG_XXX) baz.o这是最关键的一点它实现了配置驱动编译。如果 .config 中 CONFIG_XXXy则编译进内核如果 CONFIG_XXXm则编译成模块如果没有设置则跳过编译。文件角色类比defconfig基础模板汽车的“标准出厂配置单”只有轮子和发动机。ti_arm64_prune.config定制/裁剪单4S店的“选装包”去掉天窗换个轮毂。.config最终施工图纸最终确定的“购车合同”工厂Makefile完全照此生产。在 TI SDK 或类似的嵌入式编译环境中流程通常是这样的1.初始加载系统读取 defconfig默认全量配置。2.裁剪系统读取 arm64_prune.config关闭不需要的选项。3.生成合并上述两者生成最终的 .config 文件。4.编译Kbuild/Makefile 读取 .config开始根据配置编译代码。3.kernel下面的目录及作用核心基础与进程管理sched/ (Scheduler)功能进程调度器。这是内核中最复杂的子系统之一。内容包含了完全公平调度器CFS的实现、实时调度策略、调度类的定义等。它决定了哪个进程在什么时候获得 CPU 时间片。rcu/ (Read-Copy Update)功能RCU 同步机制。内容实现了一种高效的读写锁机制允许读操作和写操作并发执行广泛用于内核中读多写少的场景如路由表、文件系统目录项等。cgroup/ (Control Groups)功能控制组。内容用于对一组进程进行资源限制CPU、内存、IO等、统计和隔离。这是 Docker、Kubernetes 等容器技术实现资源隔离的底层基石。module/功能内核模块支持。内容实现了内核模块的加载insmod、卸载rmmod以及符号版本管理等核心逻辑。 中断与并发控制irq/ (Interrupt Request)功能中断核心处理。内容管理中断描述符、中断流控制、中断线程化等。注意具体的硬件中断控制器驱动通常在 drivers/irqchip/ 或 arch/ 下。locking/功能锁机制与并发原语。内容包含了信号量semaphore、互斥体mutex、读写锁rwlock以及并发调试工具如 lockdep的实现。futex/ (Fast Userspace Mutex)功能快速用户空间互斥锁。内容实现了 futex 系统调用。这是用户态线程库如 pthread实现高效锁的基础只有在发生竞争时才会陷入内核态。events/功能事件接口。内容通常指 eventfd 等相关的实现用于用户空间和内核空间或进程间的事件通知机制。 调试、追踪与监控trace/功能内核追踪子系统 (Ftrace)。内容这是内核强大的调试工具集用于追踪函数调用、中断延迟、调度延迟等。bpf/ (Berkeley Packet Filter)功能eBPF 虚拟机与核心。内容现代 Linux 内核中最热门的功能之一。允许用户在内核中安全地运行沙盒程序用于高性能网络、监控、安全策略等。debug/功能通用调试代码。内容包含一些用于调试内核的辅助代码例如 KGDB内核调试器的核心部分。gcov/功能代码覆盖率分析。内容用于收集内核代码的执行覆盖率数据帮助开发者测试内核代码的测试完整性。kcsan/ (Kernel Concurrency Sanitizer)功能并发错误检测器。内容一种动态分析工具用于检测内核中的数据竞争Data Race问题。livepatch/功能内核热补丁。内容允许在不重启系统的情况下动态修复正在运行的内核中的安全漏洞或 Bug。⚡ 电源与硬件辅助power/功能电源管理核心。内容实现了系统挂起Suspend、休眠Hibernate以及运行时的电源管理框架Runtime PM。dma/功能DMA直接内存访问核心框架。内容管理 DMA 引擎帮助设备在不占用 CPU 的情况下进行数据传输。 其他time/功能时间子系统。内容管理内核的时间保持、定时器、时钟源Clocksource和时钟事件设备Clockevent。printk/功能内核日志打印系统。内容实现了 printk 函数负责将内核消息格式化并写入到内核日志缓冲区供 dmesg 读取。entry/功能系统调用入口。内容处理系统调用的通用逻辑连接架构相关的汇编入口和 C 语言实现的内核服务。configs/功能内核配置片段。内容通常包含一些预定义的配置选项用于启用特定的调试功能或发行版配置。

相关文章:

Linux kernel目录、配置文件介绍

1. linux代码目录结构: kernel/ -------内核核心代码,进程调度相关模块 mm/------------内存管理子系统 fs/------------文件子系统 net/-----------不包含网络驱动的网络子系统 ipc/-----------进程间通信子系统 arch/----------体系架构相关代码 arch/…...

50 ubuntu22.04

联系IT,制作U盘启动盘 进BIOS关闭安全启动 格式化磁盘:https://blog.csdn.net/zhg2546179328/article/details/136223186 系统安装,并配置:https://blog.csdn.net/m0_75114321/article/details/155456810...

铁路局信息化综合管理平台总体设计方案

一、五层架构支撑全域智能化 平台以感知、网络、数据、平台、应用五层架构贯通铁路资源数字化链路,为铁路局打造横向到边、纵向到底的智能化管理底座。 应用层-业务功能模块–物资仓储、卧具跟踪、工具管理、档案管理等业务功能模块 平台层-微服务与技术中心–提…...

Failed to initialize NVML: Driver/library version mismatch:一次驱动报错

Failed to initialize NVML: Driver/library version mismatch:一次驱动报错 引子:一个看似简单的系统就卡爆了。嗯。我的系统就会卡爆了。你的系统可能还是但我觉得有可能是我的。这什么?啊?受不了我的大 U 盘了。报错 那天我在自己的 Ubuntu 工作站上准…...

萌新学习第九天,python篇,内置函数

内置函数:一句话:Python 自带的、不需要A import 导入就可以直接使用的函数。比如你经常用的 print()、len()、input()、type() 都是内置函数。输出类:函数作用print()打印输出input()从键盘读取输入format()格式化字符串类型转换类:函数作用…...

电力市场再调度成本飙升:高比例可再生能源与简化市场设计的结构性矛盾

1. 项目概述:当低净需求成为常态,电力市场再调度成本为何飙升?作为一名长期关注电力市场与能源转型的从业者,我一直在思考一个问题:当风电和光伏成为电力系统的主力军,我们的市场机制真的准备好了吗&#x…...

3步快速诊断法:BlenderGIS插件从崩溃到稳定运行的完整解决方案

3步快速诊断法:BlenderGIS插件从崩溃到稳定运行的完整解决方案 【免费下载链接】BlenderGIS Blender addons to make the bridge between Blender and geographic data 项目地址: https://gitcode.com/gh_mirrors/bl/BlenderGIS BlenderGIS是一款强大的Blend…...

2026年最新亲测3款亲子教育免费AI工具,再也不用为辅导作业头大了

作为一个天天跟音频、视频打交道的IT技术博主,同时也是一位二年级小学生的家长,我这两年踩过的“教育工具坑”真不少。孩子上课注意力不集中、回家记不住重点、家长会信息记不全、辅导作业时自己讲得口干舌燥孩子却一脸懵……这些场景,估计有…...

智在记录 AI 语音转写效果实测与场景价值展示

在日常的高强度工作与学习中,我们常常面临一个共同的痛点:信息输入的速度远远超过了我们消化和记录的能力。无论是长达两小时的部门战略会议,还是节奏飞快的在线网课,亦或是需要精准捕捉细节的医疗问诊,传统的“笔头记…...

基于计算机视觉与物联网的智能虫害监测系统设计与实践

1. 项目概述:从“人眼巡查”到“智能感知”的虫害管理革命在农业种植、仓储物流乃至城市绿化管理中,虫害监测一直是一项耗时耗力且高度依赖经验的工作。传统的做法是依靠人工定期巡查,不仅效率低下,覆盖面有限,而且对巡…...

远程办公时代,如何防止公司机密被截屏泄露?

远程办公已经成为很多企业的常态,但随之而来的信息安全问题也日益突出。其中,截屏泄露是最常见也最难防范的一种。员工可以轻易地将聊天记录、文件内容截屏保存,然后转发给他人,而企业却很难察觉和追踪。【图片1】 传统的防截屏方…...

5分钟掌握NormalMap-Online:免费在线法线贴图生成终极指南

5分钟掌握NormalMap-Online:免费在线法线贴图生成终极指南 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 你是否曾为3D模型添加真实纹理而烦恼?想让游戏角色拥有…...

项目管理专题会议圆满举办丨AI+数据驱动:重塑项目管理全链路

2026 年 5 月 20 日,由深圳市软件行业协会、易趋 、腾讯TAPD主办的第十四期项目管理专题活动 ——AI 如何重塑项目管理全链路主题沙龙在深圳圆满举行。来自IT、制造、金融等领域的PMO、项目管理专家、技术实践者,以及CIO/CTO等高层决策者共同探讨 AI 时代…...

如何在浏览器中直接查看SQLite数据库文件?WebAssembly技术带来的零安装解决方案

如何在浏览器中直接查看SQLite数据库文件?WebAssembly技术带来的零安装解决方案 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 你是否曾经需要快速查看一个SQLite数据库文件&#xff…...

如何用Red Panda Dev-C++打造轻量高效的C++开发环境

如何用Red Panda Dev-C打造轻量高效的C开发环境 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 在当今C开发工具日益臃肿的背景下,Red Panda Dev-C以其轻量级架构和现代化功能,为开…...

Android Native内存泄漏系统化分析与排查实战指南

引言 在Android开发中,内存管理是一个至关重要的环节,直接影响应用的性能、稳定性和用户体验。随着应用复杂度增加,内存泄漏问题日益突出,尤其是在Native层(如C/C++代码),其排查难度更大。Native内存泄漏可能导致应用崩溃、卡顿或系统资源耗尽,因此系统化分析和排查成…...

深度学习-基于YOLOv8的香蕉成熟度检测系统 YOLOV8预训练模型如何训练香蕉成熟度检测数据集

深度学习-基于YOLOv8的香蕉成熟度检测系统,包括 全部源码 完整标注的数据集 训练好的模型及训练结果 项目运行教程 内含 10000 张数据集,包括 [‘freshripe’, ‘freshunripe’, ‘overripe’, ‘ripe’, ‘rotten’, ‘unripe’],6 类本项目…...

Android主流架构演进:从MVC到MVI,聚焦MVVM核心实践

引言 在Android应用开发中,架构设计是确保代码可维护性、可测试性和可扩展性的关键。随着技术演进,主流架构从传统的MVC(Model-View-Controller)逐步过渡到MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel),再到新兴的MVI(Model-View-Intent)。这种演进反映…...

深度学习 标注 训练一体化解决方案 | 深度学习AI平台

标注 & 训练一体化解决方案 | 深度学习AI平台|自研【核心功能】1、训练任务:支持目标检测、语义分割、图像分类、旋转目标、实例分割五类任务 2、可视化训练 一键开启模型训练实时查看训练进度和效果过漏检数据自动保存实时查看模型在测试图像上的可…...

深入理解Android网络开发:以OkHttp为核心的全面指南

引言 在移动应用开发中,网络通信是核心功能之一。Android平台提供了丰富的网络库和工具,但开发者常面临挑战,如性能优化、安全配置和弱网环境处理。OkHttp作为Android生态中最流行的HTTP客户端库,由Square公司开发,以其高效、灵活和易扩展的特性成为行业标准。它支持同步…...

告别杂乱窗口:QTTabBar如何用标签页重塑Windows文件管理体验

告别杂乱窗口:QTTabBar如何用标签页重塑Windows文件管理体验 【免费下载链接】qttabbar QTTabBar is a small tool that allows you to use tab multi label function in Windows Explorer. https://www.yuque.com/indiff/qttabbar 项目地址: https://gitcode.com…...

WarcraftHelper终极教程:5分钟搞定魔兽争霸3现代化优化

WarcraftHelper终极教程:5分钟搞定魔兽争霸3现代化优化 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》这款经典游戏在…...

厂房分区控温需求,水冷空调按需布设灵活调配

在工业生产与商业运营中,高温作业环境长期困扰着企业和劳动者。一方面,传统中央空调的高昂安装与运营成本让大多数中小企业望而却步;另一方面,超大厂房、物流仓库、汽车制造车间等开放或半开放场景,难以实现完全密封&a…...

还在熬夜调地图?让AI替你干

你还在为地图开发熬夜吗? "这个标注位置怎么不对?" "图层叠加出问题了,谁来看看?" "地图加载太慢,客户在催……" 每次做地图相关项目,开发者群里总是一片哀嚎。查文档、…...

AI时代如何精准识人?大客户销售话术与沟通,AI赋能销售成交铁军的专业销售技巧成交赢单培训老师

读懂这个人,比说服他更重要 AI时代销售影响力 在大客户销售与高效沟通中,我们最大的误区不是话术不够好,而是压根就没读懂对方是谁。AI时代给了我们一把新的钥匙——用三个维度拆解每一个人,让影响力真正落地。 目录 销售沟通的本…...

边缘计算中的RSNN语音识别加速器设计与优化

1. 项目背景与核心创新在边缘计算设备上实现高效语音识别一直是个颇具挑战性的任务。传统基于RNN/LSTM的解决方案虽然精度尚可,但功耗和计算开销往往难以满足实时性要求。我们团队在28nm工艺节点上实现的这款RSNN(循环脉冲神经网络)语音识别加…...

# 我花了一天,给 AI Coding Agent 搭了一个 Mini Harness

最近在折腾 AI Coding Agent(Claude Code / Cursor / 自定义 Agent)时,我发现一个很常见的问题:**模型会写代码,但不一定会“按流程工作”。**它可能:- 需求还没对齐,直接开始改代码 - 改着改着…...

Serverless多事件触发器:提升FaaS效率的关键技术

1. Serverless计算中的多事件触发器:突破传统FaaS的局限在当今云原生架构中,Serverless计算已成为构建弹性应用的重要范式。作为其核心组件的函数即服务(FaaS)平台,如AWS Lambda和Google Cloud Functions,通过事件驱动机制实现了资…...

RTX166任务调度:K_IVL与K_TMO事件机制详解

1. RTX166任务调度中的K_IVL与K_TMO事件机制解析在RTX166实时操作系统中,os_wait函数提供的K_IVL和K_TMO事件是任务调度的核心机制。这两个看似相似的延时控制参数,在实际应用中却有着截然不同的行为模式。作为深耕嵌入式领域十余年的开发者,…...

ReAct 循环的 50 行 Go 实现,逐行拆解

ReAct 循环的 50 行 Go 实现,逐行拆解 系列「企业级 AI Agent 实现拆解」第三篇。上一篇讲了 Session 聚合根和状态机——状态怎么迁移、事件怎么发、终态怎么判。但状态机本身是静态的,谁在驱动这些迁移? 答案是 RunTurnHandler.Handle()——…...