🧠 Linux 内核镜像与启动组件全解析:从 vmlinux 到 extlinux.conf

在嵌入式 Linux 系统中,启动流程涉及多个关键文件和机制。不同的镜像格式和配置文件承担着不同的职责,从内核编译到 bootloader 加载,再到系统启动。本文将系统梳理 vmlinux、Image、zImage、uImage、System.map、extlinux.conf 的作用、生成方式及它们之间的关系。


✅ 一、vmlinux:原始内核文件(调试专用)

📦 是什么?

  • vmlinux 是 Linux 内核编译完成后生成的 ELF 格式可执行文件
  • 包含完整的符号表、调试信息、段信息
  • 不能直接用于启动系统,但是调试内核的关键文件

🔧 用途:

  • GDB 调试内核
  • crash 工具分析 vmcore
  • 提供 System.map 符号表参考

📁 位置:

通常在内核源码根目录下生成:

./vmlinux

✅ 二、Image:可启动的内核镜像(未压缩)

📦 是什么?

  • Image 是从 vmlinux 中提取出的纯内核代码二进制文件
  • 去掉了调试信息和符号表
  • 可直接被 bootloader(如 U-Boot)加载并启动

🔧 用途:

  • 嵌入式设备启动(如 RK3588)
  • 配合 extlinux.conf 或 FIT image 使用

📁 位置:

arch/arm64/boot/Image

✅ 三、zImage:压缩内核镜像(含解压引导)

📦 是什么?

  • zImageImage 的压缩版本,附带一个 boot stub(解压引导代码)
  • 启动时自动解压并跳转到内核入口

🔧 用途:

  • ARM 平台常用,适合空间受限设备
  • 可通过 bootz 命令启动(U-Boot)

📁 位置:

arch/arm/boot/zImage

✅ 四、uImage:U-Boot 专用镜像(加头信息)

📦 是什么?

  • uImage 是在 ImagezImage 前加上 U-Boot 识别的头部信息
  • 包含加载地址、镜像大小、类型等元数据
  • 使用 mkimage 工具生成

🔧 用途:

  • 老版本 U-Boot 使用 uImage 加载内核
  • 新版 U-Boot 已支持直接加载 ImagezImage

📁 生成方式:

mkimage -A arm -O linux -T kernel -C none -a 0x00200000 -e 0x00200000 -n "Linux Kernel" -d Image uImage

✅ 五、System.map:符号表文件(定位地址)

📦 是什么?

  • System.map 是编译内核时生成的符号表文件
  • 记录了所有函数、变量的地址与名称

🔧 用途:

  • 分析内核崩溃日志(定位 PC/LR 地址)
  • 查找符号是否存在
  • 配合 /proc/kallsyms 做符号对比
  • crash 工具分析 vmcore(需配合 vmlinux)

📁 位置:

/boot/System.map-<kernel-version>

✅ 六、extlinux.conf:启动配置文件(U-Boot 菜单)

📦 是什么?

  • extlinux.conf 是 U-Boot 支持的启动配置文件
  • 定义启动项、内核路径、设备树路径、initrd 路径、启动参数等

🔧 用途:

  • 多启动项管理
  • 设置默认启动项、超时、菜单背景
  • 配合 Image 使用,简化启动流程

📁 示例配置:

LABEL linux-6.1.118KERNEL /Image-6.1.118FDT /rk3588-firefly.dtbINITRD /initrd-6.1.118APPEND root=/dev/mmcblk0p7 rw console=ttyFIQ0 loglevel=8

🔗 七、它们之间的关系图解

vmlinux ──▶ System.map│├──(objcopy)──▶ Image ──▶ zImage ──▶ uImage│                      │           ││                      └──▶ extlinux.conf 引用└──▶ GDB / crash 工具调试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/100246.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/100246.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/100246.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统分析师】2024年下半年真题:论文及解题思路

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 试题一:论devops在企业信息系统开发中的应用 试题二:论系统业务流程分析方法及应用 试题三:论软件测试方法及应用 试题四:论信息系统运维管理 试题一:论devops在企业信息系统开发中的应用 1、概要叙述你参与管理和…

AI GEO 实战:借百度文小言优化,让企业名称成搜索热词

在当今数字化浪潮中&#xff0c;企业的线上曝光度和搜索可见性至关重要。百度作为国内占据主导地位的搜索引擎&#xff0c;其推出的大模型文小言蕴含着巨大的潜力。通过巧妙运用 AI GEO&#xff08;生成式引擎优化&#xff09;策略&#xff0c;企业完全有可能让自己的公司名称成…

文件操作知识点总结

目录 1.为什么使用文件 2.什么是文件&#xff1f; 2.1 程序文件 2.2 数据文件 2.3 文件名 3.二进制文件和文本文件 4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 文件的打开和关闭 4.3.1 fopen函数 4.3.2 fclose函数 5.文件的顺序…

oracle认证有哪几种?如何选择

Oracle&#xff08;甲骨文&#xff09;不仅是全球领先的数据库软件巨头&#xff0c;更是企业级数据管理的代名词&#xff0c;获得Oracle认证&#xff0c;证明可从事Oracle数据库服务器的数据操作和管理等工作。下面给大家详细其主要认证类型及其在职业发展中的含金量&#xff0…

AppTest邀请测试测试流程

相比AppGallery邀请测试&#xff0c;AppTest邀请测试具备以下全新能力&#xff1a;若您同时发布了多个测试版本&#xff0c;AppTest支持测试版本自动升级到最新的测试版本。您可以选择将当前最新在架版本的应用介绍截图展示给测试人员&#xff0c;视觉效果更好&#xff0c;提升…

硬件 - oring多电源切换

目录 一、ORing电路 1.1 ORING 电路 1.2 ORING 电路关键部分 二、多电源切换 2.1 主要思路 2.2 适用场景 一、ORing电路 1.1 ORING 电路 中文常称 “或环电路” 或 “并联冗余电路”是一种电源并联冗余拓扑结构 核心功能&#xff1a;将多路独立电源的输出 “并联整合”&a…

Qt多语言翻译实战指南:常见陷阱与动态切换解决方案

问题背景 在Qt项目国际化过程中&#xff0c;开发者经常会遇到各种翻译逻辑问题&#xff0c;特别是需要实现运行时语言动态切换功能时。一个典型场景是&#xff1a;程序默认英文显示&#xff0c;加载中文翻译文件后界面变为中文&#xff0c;但再次切换回英文时却失败。本文将深入…

机器人要增加力矩要有那些条件和增加什么

机器人要增加力矩要有那些条件和增加什么进行详细讲解 好的&#xff0c;这是一个非常专业且重要的问题。为机器人增加力矩&#xff08;通常指提升关节输出扭矩&#xff09;不是一个简单的部件替换&#xff0c;而是一个涉及动力链、结构、控制和散热的系统性工程。 以下将详细讲…

spring集成aes加密、rsa加密

文章目录spring集成对称加密spring集成rsa加密spring集成对称加密 encrypt:key: aaabbb # 只配置这个参数就实现了对称加密salt: 333444 # 这个可以不配置spring集成rsa加密 例如apollo&#xff0c;如果没有配置encrypt.key&#xff0c;那么apollo不配置应该也是可以的&#…

OpenSTL PredRNNv2 模型复现与自定义数据集训练

OpenSTL PredRNNv2 模型复现与自定义数据集训练 概述 本文将详细介绍如何复现 OpenSTL 中的 PredRNNv2 模型&#xff0c;并使用自定义的 NPY 格式数据集进行训练和预测。我们将从环境配置开始&#xff0c;逐步讲解数据预处理、模型构建、训练过程和预测实现&#xff0c;最终实现…

Linux内核IPv4隧道模式封装机制剖析

概述 在Linux网络栈中,XFRM(Transform)子系统负责实现IPsec等安全协议的功能。其中,xfrm4_mode_tunnel.c是实现IPv4隧道模式封装的核心模块,为IPv4数据包提供隧道模式的封装和解封装能力。本文将深入分析这一模块的实现机制。 模块架构与功能 该模块通过注册到XFRM框架…

OPC Client第10讲:实现主界面;获取初始界面传来的所有配置信息config【C++读写Excel:xlnx;ODBC;缓冲区】

接前面代码内容&#xff1a; OPC Client第6讲&#xff08;wxwidgets&#xff09;&#xff1a;Logger.h日志记录文件&#xff08;单例模式&#xff09;&#xff1b;登录后的主界面_wx.logger-CSDN博客 OPC Client第8讲&#xff1a;OPC UA&#xff1b;KEPServerEX创建OPC服务器…

快速入门HarmonyOS应用开发(一)

目录 前言 一、准备工作 二、实战开发 2.1、Navigation简介 2.2、页面路由开发 2.2.1、创建常量 2.2.2、创建字符串资源 2.2.3、创建float资源 2.2.4、创建color资源 2.2.5、创建数据实体 2.2.6、创建页面路由表 2.2.7、创建Navigation根容器 2.2.8、创建NavDesti…

AI 进课堂 - 语文教学流程重塑

AI 进课堂 - 语文教学流程重塑执教语文十余年&#xff0c;备课案头的参考书堆得比学生作业本还高&#xff0c;批改作文时红笔芯换得比粉笔还勤。 直到去年把 JBoltAI 请进课堂&#xff0c;那些重复机械的工作突然有了新解法&#xff0c;连课堂上孩子们的眼神都亮了许多 —— 这…

用户是否可以同时使用快照和备份来保护云服务器数据安全?

在云计算环境中&#xff0c;云服务器已成为企业和个人数据存储、应用部署和业务运营的重要平台。随着业务数据量的不断增长&#xff0c;数据安全和业务连续性成为用户关注的核心问题。云服务器提供的快照和备份功能为用户提供了有效的数据保护手段&#xff0c;但很多人会疑问&a…

RDS-MYSQL,这个RDS是什么?和mysql有什么区别?

好的&#xff0c;这是一个非常常见且重要的问题。我用最通俗易懂的方式给你解释清楚。 一、大白话解释 你可以把 MySQL 和 RDS MySQL 的关系&#xff0c;想象成&#xff1a;MySQL&#xff1a;就像是你自己买零件组装的一台电脑。 你需要自己挑选CPU、内存、硬盘、主板&#xff…

arcgis中实现四色/五色法制图

四色定理是图论中的一个著名定理&#xff0c;它指出在任何地图上&#xff0c;只需四种颜色就足以使任何相邻的区域&#xff08;拥有共同边界线段&#xff0c;而非单个点&#xff09;颜色不同。五色定理则是另一个更早被证明的、较弱但更易证的定理。在地图制图中&#xff0c;这…

Spring如何巧妙解决循环依赖问题

什么是循环依赖&#xff1f;循环依赖是指两个或多个Bean之间相互依赖&#xff0c;形成闭环的情况。例如&#xff1a;AService依赖BService&#xff0c;而BService又依赖AService。这种场景下&#xff0c;传统的创建顺序无法满足依赖注入的要求。Spring的三级缓存机制Spring通过…

CUDA 中Thrust exclusive_scan使用详解

1. 基本概念Thrust 是 NVIDIA CUDA 提供的类似 C STL 的并行算法库。Scan (前缀和)&#xff1a;给定数组 [a0, a1, a2, ...]&#xff0c;产生前缀和序列。Exclusive Scan (排他前缀和)&#xff1a; 输出位置 i 存放的是输入数组中 0 到 i-1 的累积结果。换句话说&#xff0c;结…

Linux -- 信号【上】

目录 一、信号的引入 1、信号概念 2、signal函数 普通标准信号详解表 3、前台/后台进程 3.1 概念 3.2 查看后台进程 3.3 后台进程拉回前台 3.4 终止后台进程 3.5 暂停前台进程 3.6 回复运行后台进程 4、发信号的本质 二、信号的产生 1、终端按键 2、系统调用 2…