【Linux】Image、zImage与uImage的区别

1、Image

1.1 什么是 Image

  • Image 是一种未压缩的 Linux 内核镜像文件,包含了内核的所有代码、数据和必要的元信息。
  • 它是 Linux 内核在编译过程中生成的一个原始的二进制文件,未经过任何压缩或额外的封装处理。
  • 由于未压缩,Image 文件相对较大,但它不需要解压过程,加载速度较快。

1.2 内部结构

  • 头部:包含基本的内核信息(如内核版本、加载地址等),用于引导加载程序识别。
  • 内核代码:实际的 Linux 内核代码和数据段。
  • 内核数据:初始化和常驻的数据段,包括全局变量、静态变量等。

1.3 工作原理

  • 引导加载程序(如 U-Boot、GRUB 等)从存储介质(如 NAND Flash、SD 卡、硬盘等)中读取 Image 文件。
  • Image 文件加载到内存中的指定位置(通常是 RAM)。
  • 引导加载程序将控制权转交给 Image 的入口地址。
  • 内核开始执行初始化过程,设置硬件和系统环境,最终启动用户空间的操作系统。

1.4 编译生成Image

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Image

2、zImage

2.1 什么是 zImage

  • zImage 是一种经过压缩的 Linux 内核镜像格式,它通过 gzip 压缩内核代码和数据,使文件大小大大减小。
  • zImage 也称为 “compressed kernel image”,在加载时会自解压缩到内存中然后执行。

2.2 内部结构

  • 解压缩头部:包括解压缩代码和一个简单的引导程序,用于引导和解压缩内核。
  • 压缩的内核代码和数据:使用 gzip 压缩后的内核代码和数据。
  • 尾部校验和:用于验证文件完整性。

2.3 工作原理

  • 引导加载程序(如 U-Boot 或其他加载器)从存储介质中读取 zImage 文件。
  • zImage 文件加载到内存中。
  • 解压缩头部代码运行,解压缩内核到内存中的指定位置。
  • 内核解压完成后,控制权转移到解压后的内核入口点,开始内核初始化和启动过程。

2.4 编译生成 zImage

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage

3、uImage

3.1 什么是 uImage

  • uImage 是 U-Boot 引导加载程序专用的内核镜像格式。
  • 它是在 zImageImage 的基础上加上一个 U-Boot 头部信息(U-Boot Header),使 U-Boot 能够识别并加载内核镜像。

3.2 内部结构

  • U-Boot Header:一个 64 字节的头部信息,其中头部包含的信息可看下文:【Linux】uImage头部信息详细解析-CSDN博客
  • 内核镜像:可以是 zImageImage 或其他类型的镜像。

3.3 工作原理

  • U-Boot 读取 uImage 文件。
  • U-Boot 解析头部信息,验证镜像的合法性和完整性。
  • 将内核镜像加载到指定的内存地址。
  • 如果内核镜像是压缩的,U-Boot 会解压缩它。
  • 将控制权交给内核的入口地址,启动 Linux 内核。

3.4 编译生成 uImage

mkimage -A arm -O linux -T kernel -C gzip -a 0x8000 -e 0x8000 -n "Linux Kernel" -d zImage uImage
  • -A:目标架构(ARM)。
  • -O:操作系统(Linux)。
  • -T:镜像类型(内核)。
  • -C:压缩类型(gzip)。
  • -a:加载地址(0x8000)。
  • -e:入口点地址(0x8000)。
  • -n:镜像名称("Linux Kernel")。
  • -d:源文件(zImage)。

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

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

相关文章

C语言刷题日记(附详解)(5)

一、选填部分 第一题: 下面代码在64位系统下的输出为( ) void print_array(int arr[]) {int n sizeof(arr) / sizeof(arr[0]);for (int i 0; i < n; i)printf("%d", arr[i]); } int main() {int arr[] { 1,2,3,4,5 };print_array(arr);return 0; } A . 1…

Arcgis实现面空间位置从东至西从南至北排序

效果 背景 工作项目中经常会遇到需要对网格进行编号,而编号是有一定原则的,比如空间位置从上到下从左到右,或者其它原则,那么都可以通过下面的方式来实现 1、准备数据 点shp文件,查看初始FID字段标注,目前是一个无序的状态 2、排序 字段选择空间字段,空间排序方法…

02请求响应(简单参数)

一、操作目的 前端通过post/get请求&#xff0c;传递给后端简单的数据&#xff0c;后端接收后在控制台打印出来&#xff0c;并将结果返回给前端页面展示出来。&#xff08;这里我们用postman来模拟前端页面&#xff0c;而非真实的通过编写前端代码&#xff0c;通过浏览器来展示…

k8s /apis/batch/v1beta1 /apis/policy/v1beta1 接口作用

在 Kubernetes 中&#xff0c;/apis/batch/v1beta1 和 /apis/policy/v1beta1 是两个 API 组的版本化接口&#xff0c;它们用于处理不同类型的资源和操作。 1. /apis/batch/v1beta1: API 组: batch版本: v1beta1资源类型: 此接口通常用于处理 Kubernetes 中的批量资源&#xf…

STM32与ESP8266的使用

串口透传 “透传”通常指的是数据的透明传输&#xff0c;意思是在不对数据进行任何处理或修改的情况下&#xff0c;将数据从一个接口转发到另一个接口。值得注意的是要避免串口之间无限制的透明&#xff0c;可以采用互斥锁的方式进行限制使用方法 对USART1和USART3(用他俩举例…

【ArcGIS Pro实操第一期】研究区域制图-以粤港澳GBA地区为例

ArcGIS Pro实操第一期&#xff1a;研究区域制图-以粤港澳GBA地区为例 数据准备1 ArcGIS Pro绘制研究区域图1.1 基本处理1.2 导入数据并制图1.3 添加整饰要素 参考 数据准备 DEM高程数据市区边界文件&#xff08;.shp文件&#xff09; 目标成图如下&#xff1a; 1 ArcGIS Pr…

TalkSphere项目介绍

TalkSphere项目介绍 文章目录 TalkSphere项目介绍一、前言二、技术栈及开发环境三、主要功能&#xff08;一&#xff09;用户登录与注册&#xff08;二&#xff09;用户历史消息展示&#xff08;三&#xff09;在线用户实时聊天 四、结语 一、前言 在线聊天室作为一个虚拟社交…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传…

安卓玩机工具-----无需root权限 卸载 禁用 删除当前机型app应用 ADB玩机工具

ADB玩机工具 ADB AppControl是很实用的安卓手机应用管理工具&#xff0c;无需root权限&#xff0c;通过usb连接电脑后&#xff0c;可以很方便的进行应用程序安装与卸载&#xff0c;还支持提取手机应用apk文件到电脑上&#xff0c;此外还有手机系统垃圾清理、上传文件等…

面试题总结(四) -- STL与算法篇

面试题总结(四) – STL与算法篇 文章目录 面试题总结(四) -- STL与算法篇<1> 请列举 C STL 中常用的容器&#xff08;如 vector、list、map 等&#xff09;及其特点。<2> 如何在 C 中使用 STL 算法&#xff08;如排序、查找等&#xff09;&#xff1f;<3> 解…

QUIC的loss detection学习

PTO backoff backoff 补偿 /ˈbkɒf/PTO backoff 是QUIC&#xff08;Quick UDP Internet Connections&#xff09;协议中的一种机制&#xff0c;用于处理探测超时&#xff08;Probe Timeout, PTO&#xff09;重传策略 它逐步增加探测超时的等待时间&#xff0c;以避免网络拥塞…

[网络]http请求中的URL,方法,header 和 http响应中的状态码

文章目录 一. http请求1. 认识URLurlencode 2. 认识方法应用场景构造http请求 2. 认识请求报头header 二. http响应1. 状态码 一. http请求 1. 认识URL 我们所说的"网址", 其实就是URL(Uniform Resource Locator 统⼀资源定位符) 1.协议方案名 常见的有http和http…

警惕!甲状腺病的早期“信号弹”,你捕捉到了吗?

在快节奏的现代生活中&#xff0c;健康问题往往被忽视&#xff0c;尤其是那些初期症状不明显、容易被误解或忽视的疾病。甲状腺&#xff0c;这个位于颈部下方、形状如蝴蝶的小腺体&#xff0c;虽然不起眼&#xff0c;却是人体内分泌系统中的重要一员&#xff0c;负责调节新陈代…

AIGC:python 文生图代码(python + stable-diffusion+ cuda)

解决什么问题 搭建一个文生图环境 + python文生图代码,通过输入prompt,生成图片 解决方法 文生图的代码比较简易,主要是搭建环境+下载文生图大模型 步骤一: 创建虚拟环境(用python 3.10版本,起得名字最好可以一看就知道Python的版本) conda create -n text2img3.10 py…

【RAG】RAG再进化?基于长期记忆的检索增强生成新范式-MemoRAG

前言 RAG现在工作很多&#xff0c;进化的也很快&#xff0c;再来看看一个新的RAG工作-MemoRAG。 文章提出&#xff0c;RAG在减少大模型对于垂类知识的问答幻觉上取得了不错的效果&#xff0c;也成为私域知识问答的一种范式。然而&#xff0c;传统RAG系统主要适用于明确信息需…

HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059238 HTML5超酷炫的水果蔬菜在线商城网…

LSS中的BevEncoder

LSS中的BevEncoder其实很简单,主要是使用了resnet18来提取生成的(200x200)BEV图中的bev特征。 class BevEncode(nn.Module):def __init__(self, inC, outC):super(BevEncode

深入理解Go语言中的接口定义与使用

在Go语言的编程实践中&#xff0c;接口&#xff08;Interface&#xff09; 是一个强大而灵活的特性&#xff0c;它允许我们定义一组方法&#xff0c;而不需要指定这些方法的具体实现。通过接口&#xff0c;我们可以将不同类型的值组合在一起&#xff0c;只要它们实现了接口中定…

软件工程毕业设计开题汇总

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 大数据电商…

Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解

目录 一、Linux软件包管理器 - yum&#xff08;ubuntu用apt代替yum&#xff09;1、Linux下安装软件的方式2、认识 yum3、查找软件包4、安装软件5、如何实现本地机器和云服务器之间的文件互传 二、Linux编辑器 - vim1、vim 的基本概念2、vim 下各模式的切换3、vim 命令模式各命令…