Linux内核镜像分析

关注vmLinux大小

这张图展示的是嵌入式 Linux 内核(以 RK3568 开发板为例)从源码到烧录镜像的完整编译 + 打包流程,对应正点原子、鲁班猫等开发板的内核开发实际操作,各环节的作用拆解如下:

1. 驱动源码编译:从.c到built-in.a

  • i2c.c/spi.c:是内核驱动的源码文件(比如你开发板上的 I2C、SPI 硬件驱动代码);
  • iic.o/spi.o :是源码编译后的目标文件(编译器将 C 代码翻译成机器指令的中间产物);
  • built-in.a :是同一目录下所有.o文件的静态打包库 (像把 I2C/SPI 驱动的机器指令 "打包成一个文件")------ 这部分代码会被直接嵌入内核镜像 (对应make menuconfig中设为*的配置)。

2. 内核镜像链接:从built-in.a到vmlinux

多个子目录的built-in.a(比如这里的 I2C/SPI 驱动包,加上内核其他模块的包)会被链接器整合 ,生成vmlinux------ 这是未压缩的原始内核镜像,包含了内核的所有功能,但体积较大,不适合嵌入式设备直接使用。

3. 内核镜像压缩:vmlinux到zImage

vmlinux会经过压缩、添加启动头,生成zImage------ 这是嵌入式开发中常用的压缩版内核镜像(相当于内核的 "瘦身版"),能节省开发板的存储 / 内存资源,是内核实际运行的 "主体文件"。

4. 最终烧录镜像打包:zImage → update.img

要让开发板能直接运行,还需要把zImage和另外两个核心组件打包:

  • uboot :开发板的启动加载器(负责开机后引导内核启动);
  • buildroot :嵌入式系统的根文件系统(包含系统命令、库、配置文件等,是内核运行的 "环境载体")。

这三者最终被打包成update.img------ 这是开发板能直接烧录的完整系统镜像,刷入板后就能启动并运行 Linux 系统。

对开发的意义

这个流程是正点原子、鲁班猫等 RK3568 开发板的标准内核交付链路:从零散的驱动 / 内核源码,到能直接烧录的镜像,每一步都是把 "代码" 转换成 "开发板能运行的系统" 的关键环节 ------ 你在开发板上编译内核、制作烧录包,走的正是这个流程。

vmlinux的路径

主要关注它的大小

二、Image


定义 : Image 是将 vmlinux 转换为一个可以直接加载的二进制格式文件,但仍然是未压缩的版本。

特性:

  1. 不含调试信息,比 vmlinux 更小。

  2. 可以直接被部分引导程序加载(例如某些嵌入式平台的 Bootloader)。

用途:

  • 部分开发环境直接加载。

  • 通常是内核被进一步处理(压缩或封装)的基础文件。

三、zImage


定义 : zImage 是对 Image 进行压缩后的文件,常用的压缩算法是 gzip。

特性:

  1. 较小,适合存储在资源受限的嵌入式设备中。

  2. 含有自解压代码,在启动时会先解压自身,再加载为可执行内核镜像。

用途:

  • 常用于嵌入式系统。

  • 被许多引导程序直接加载使用。

相关推荐
无人生还别怕2 分钟前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
无足鸟ICT19 分钟前
【RHCA+】agedu命令(查看磁盘使用情况)
linux
StarsGreen26 分钟前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
zhengfei6111 小时前
CVE-2026-98432:Linux 内核 TCP 释放后重用漏洞,CVSS 9.8 但补丁覆盖极不均衡
linux·运维·tcp/ip
叼烟扛炮1 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计
xyzzklk1 小时前
变相解决华为Mate 8锁屏后无法建立入站网络连接
linux·运维·服务器·网络·华为·go·安卓
叼烟扛炮3 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
David猪大卫10 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Android系统攻城狮10 小时前
Linux FFmpeg深度解析之avcodec_align_dimensions调用流程与实战(二十九)
服务器·linux音视频·音视频进阶·ffmpeg音视频
叼烟扛炮11 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php