分析vmlinux,uImage,zImage,Image的生成以及之间的关系

news2024/10/2 14:25:41

1.在内核源码顶层目录下打开Makefile,搜索vmlinux,找到以下内容:

可知主要靠$(vmlinux-deps)生成。

继续搜索查看变量vmlinux-deps的值,找到:

KBUILD_LDS为链接文件,剩下两个变量如下:

搜索head-y未找到,猜测包含了其他路径的Makefile,找到include arch/$(SRCARCH)/Makefile,通过打印信息得知SRCARCH=arm,打开得到:

所以vmlinux通过链接脚本文件将所需的.o文件生成vmlinux可执行文件

2.打开内核源码顶层目录下的Makefile文件,搜索uImage未找到,打开内核源码目录下arch/arm/Makefile,通过以下信息得知:将arch/arm/boot/Makefile和当前Makefile.build文件合并

打开内核源码arch/arm/boot/Makefile文件,搜索uImage,找的目标文件

进入内核源码scripts/Makefile.lib,搜索cmd_uimage,

cmd_uimage=/usr/bin/mkimage -A arm -O linux -C gzip -T kerner -n uImage -d zImage

可知uImage是zImage使用mkimage工具得到的,uImage在zImage添加64字节头部信息

进入内核源码arch/arm/boot/,打开Makefile文件,搜索zImage

arm-linux-gnueabihf-objcopy $(obj)/compressed/vmlinux zImage

zImage是通过vmlinux格式化转换为的文件

进入内核源码arch/arm/boot/,打开Makefile文件,搜索vmlinux

进入内核源码arch/arm/boot/compressed,打开Makefile文件,搜索vmlinux

进入内核源码scripts/Makefile.lib目录下,搜索cmd_gzip cmd_gzip = $(KGZIP) -n -f -9 > $@ = gzip Image > vmlinx

将Image镜像文件经过gzip压缩生成rch/arm/boot/compressed/vmlinx镜像文件

进入内核源码arch/arm/boot/compressed,打开Makefile文件,搜索Image

vmlinux通过objcopy格式化转换为Image

结论:vmlinx--->objcopy--->Image--->gzip--->arch/arm/boot/compressed/vmlinx--->objcopy--->zImage--->mkimage--->uImage

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

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

相关文章

网吧电脑怎么录屏?分享3种便捷方法,一键录屏

​网吧作为一个公共场所,为用户提供了方便快捷的上网服务。然而,在使用网吧电脑的过程中,有时候我们会需要录制屏幕内容,比如游戏的精彩瞬间,教学演示视频等。那么,网吧电脑怎么录屏呢?本文将为…

Linux应用学习——多进程

进程 当一个进程正常终止时可以通过int atexit(void(*function)(void))注册进程终止处理函数 PART1——进程相关概念 ​ 进程是一个动态的过程,而非一个静态的文件,是程序的一次运行过程,当应用程序被加载到内存中运行之后才能称为一个进程…

【LeetCode——排序链表】

文章目录排序链表二、解题思路:二.实现的代码总结:排序链表 一道链表排序题,链接在这里 二、解题思路: 解题思路:使用归并排序(用递归实现) 第一步:先找到链表的中间节点 第二步…

百分之九十的人不知道的退税秘诀

为什么会有退税和补税? 公司在帮我们进行个人所得税申报的时候,个人所得税是按月或者按季度预扣预缴的,税款会在每个月或季度的收入中扣除一定的比例。在年度个人所得税汇缴清算的时候,如果实际年度收入与预扣预缴的税款不符&…

【Spring 深入学习】配置DI 以及IOC的多种方式

配置DI 以及IOC的多种方式 1. 概述 防止将来遗忘&#xff0c;记录下DI等配置方式。从xml 配置文件 以及注解的方式来配置下DI 2. XML 方式 2.1 通过bean 依赖注入 xml 配置 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http:/…

Zeek安装、使用与压力测试

Zeek安装与压力测试Zeek安装、简单使用与压力测试环境Zeek安装zeek简单运行安装PF_RING修改Zeek配置文件&#xff0c;使用PF_RING&#xff0c;实现集群流量压力测试查看zeek日志Zeek安装、简单使用与压力测试 科研需要&#xff0c;涉及到Zeek的安装、使用和重放流量压力测试评…

【牛客刷题专栏】0x0F:JZ7 重建二叉树(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录前言问题…

VKL060 SSOP24超低功耗/抗干扰15*4 LCD液晶段码驱动IC,适用于传感器/数字压力表

产品型号&#xff1a;VKL060产品品牌&#xff1a;永嘉微电/VINKA封装形式&#xff1a;SSOP24产品年份&#xff1a;新年份原厂&#xff0c;工程服务&#xff0c;技术支持&#xff01;VKL060概述:VKL060是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大60点&#xff08;15…

【ROS学习笔记13】ROS中的TF坐标变换

【ROS学习笔记13】ROS中的TF坐标变换 文章目录【ROS学习笔记13】ROS中的TF坐标变换前言1. 静态坐标变换2. 动态坐标变换3. 多坐标变换4. 坐标系关系查看5. TF坐标变换实操Reference写在前面&#xff0c;本系列笔记参考的是AutoLabor的教程&#xff0c;具体项目地址在 这里 前言…

sqli-labs靶场实战

sqli-labs靶场实战 &#xff08;手工&#xff09;SQL注入基本步骤&#xff1a; 第一步&#xff1a;注入点测试 第二步&#xff1a;查询字段数 第三步&#xff1a;判断回显位 第四步&#xff1a;查询数据库的基本信息 第五步&#xff1a;爆数据库名 第六步&#xff1a;爆数据库…

ROS云课使用CoCubeSim案例

源码压缩包&#xff1a;https://gitcode.net/ZhangRelay/cocubesim打开蓝桥ROS云课&#xff1a;下载cocubesim压缩包&#xff1a;https://gitcode.net/ZhangRelay/cocubesim.git注意文件路径&#xff0c;home文件夹下的code文件夹里面。解压缩&#xff1a;tar -xf cocubesim/co…

黑马Linux笔记03【su、sudo、groupadd、useradd、usermod、userdel、getent、chmod、chown】

资源 视频地址&#xff1a;黑马-新版Linux快速入门到精通资源下载&#xff1a;https://pan.baidu.com/s/1zExrsk09QVm3mpqaPTqe_g?pwd6666&#xff0c;提取码&#xff1a;6666笔记 黑马Linux笔记01【安装VMware Workstation、安装CentOS7、远程连接Linux系统、Win10配置WSL(Ub…

机器学习算法: Logistic 回归 详解

动动发财的小手&#xff0c;点个赞吧&#xff01; 1. 导读 逻辑回归是在因变量为二元时进行的回归分析。它用于描述数据并解释一个因二元变量与一个或多个名义、有序、区间或比率水平变量之间的关系。二元或二项式 Logistic 回归可以理解为处理其中因变量的观察结果只能是二元的…

Mac电脑,python+appium+安卓模拟器使用步骤

1、第一步&#xff0c;环境搭建&#xff0c;参考这位博主的文章&#xff0c;很齐全 https://blog.csdn.net/qq_44757414/article/details/128142859 我在最后一步安装appium-doctor的时候&#xff0c;提示权限不足&#xff0c;换成sudo appium-doctor即可 2、第二步&#xff0…

Discuz X3.1 QQ互联登陆报错解决方法

安装X3.1后QQ互联登陆出现(1054) Unknown column conuintoken in field list&#xff0c;具体截图如下&#xff1a; 原因是用QQ登陆的时候是把你的账号信息写入数据表common_member_connect中的&#xff0c;而这个语句中有conuintoken 这个字段&#xff0c;但数据表common_mem…

【Java基础】10分钟看懂Java NIO

一、IO概述IO的操作方式通常分为几种:同步阻塞BIO、同步非阻塞NIO、异步非阳塞AIO1、在JDK1.4之前&#xff0c;我们建立网络连接的时候采用的是 BIO 模式。2、Java NIO(New IO或Non Blocking IO) 是从Java 1.4版本开始引入的一个新的IOAPI&#xff0c;可以替代标准的Java IO AP…

跨域问题解决方案

目录 1.同源策略 2.解决方案(后端) (1)在后端方法添加CrossOrigin (2)添加CORS过滤器 (3)实现WebMvcConfigure接口&#xff0c;重写addCorsMappings方法 3.解决方案(前端) (1)前端配置代理 1.同源策略 同源策略&#xff08;Same origin policy&#xff09;是一种约定&am…

代码随想录算法训练营day53 | 动态规划之子序列 1143.最长公共子序列 1035.不相交的线 53. 最大子序和

day531143.最长公共子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组1035.不相交的线53. 最大子序和1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何…

【深入理解 线程池】

深入理解 线程池介绍源码学习线程池的类继承体系ThreadPoolExector核心数据结构核心配置参数线程池的执行流程如图&#xff1a;线程池的优雅关闭线程池的生命周期正确关闭线程池的步骤任务的提交过程分析任务的执行过程shutdonw() 与任务执行过程综合分析shutdonwNow() 与任务执…