vmlinuz/vmlinux、Image、zImage与uImage的区别
前言
内核镜像和其他的镜像并没有本质上的区别,都是用同一套交叉编译工具链来生成的,内核有这么多不同类型的镜像是为了满足各种启动方式,本质上和其他镜像都是一样的,只是在此基础上做了修改。生成镜像的过程:
(1)源代码经过编译链接变成elf格式的可执行文件;
(2)elf文件经过objcopy工具,变成bin文件,bin文件就是可烧录文件;
生成各种内核镜像的过程:
(1)编译生成vmlinuz/vmlinux,就是普通的elf可执行文件,嵌入式设备一般部署时不会用这种格式的镜像,因为体积太大,并且elf格式也不能直接烧录使用;
(2)用交叉编译工具链里的objcopy,将elf格式的vmlinuz/vmlinux变成bin格式的可烧录文件,名字为Image,objcopy把几十M大的vmlinuz/vmlinux精简成了几M大小的Image,因此这个制作烧录镜像主要目的就是缩减大小,节省磁盘;
(3)实际上Image已经可以直接烧录到flash中进行执行,但是人们觉得内核还是太大了,于是对Image进行压缩,再在压缩得到的文件前端加一段解压缩代码,这样就得到了zImage;(zImage= 解压缩代码 + Image压缩得到的文件)
(4)uImage是用uboot中的mkimage工具根据zImage制作而来。uImage是专门给uboot使用的,在zImage头部添加64个字节的头,说明这个内核的版本、加载位置、生成时间、大小等信息,其0x40之后与zImage没区别。
补充:uboot都支持uImage,不一定支持zImage;现在uImage的方式被设备树的方式替代;
uImage的64字节头结构
typedef struct image_header {uint32_t ih_magic; /* Image Header Magic Number */uint32_t ih_hcrc; /* Image Header CRC Checksum */uint32_t ih_time; /* Image Creation Timestamp */uint32_t ih_size; /* Image Data Size */uint32_t ih_load; /* Data Load Address */uint32_t ih_ep; /* Entry Point Address */uint32_t ih_dcrc; /* Image Data CRC Checksum */uint8_t ih_os; /* Operating System */uint8_t ih_arch; /* CPU architecture */uint8_t ih_type; /* Image Type */uint8_t ih_comp; /* Compression Type */uint8_t ih_name[IH_NMLEN]; /* Image Name */
} image_header_t;
vmlinuz/vmlinux、Image、zImage与uImage的区别相关推荐
- vmlinux、 Image, zImage、 uImage 的区别
来自正点原子<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf> vmlinux 是 ELF 格式的文件,但是在实际中我们不会使用 vmlinux,而是使用 zIm ...
- 比较zImage和uImage的区别
一.vmlinuz vmlinuz是可引导的.压缩的内核."vm"代表"Virtual Memory".Linux 支持虚拟内存,不像老的操作系统比如DOS有6 ...
- zImage与uImage的区别
在编译Linux内核时,通常都是生成zImage, 它是一般情况下默认的压缩内核映像文件. 而实际上,zImage是通过压缩内核文件vmlinux后,再加上一段解压启动代码得到. 而uImage是u- ...
- Linux内核映像vmlinux、Image、zImage、uImage区别
本文介绍几种常用的Linux内核映像的区别. 一.vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理. 该映像可用于定位内核问题,但不能直接引导Linux ...
- make zImage和make uImage的区别和mkimage工具的使用
刚刚接触到linux内核编译过程的时候,相信不少人跟我一样,都是按照手册或者网上的教程一步一步的执行,对于其中的很多原理和过程都是一知半解,这其中有一个很常见的问题,就是make image命令. 因 ...
- zImage制作uImage
bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的 ...
- mkimage工具将zImage转换为uImage
正常引导的内核文件 [root@wtstb ~]# mount /dev/sda1 /mnt/ [root@wtstb ~]# file /mnt/hi_kernel.bin /mnt/hi_kern ...
- Linux内核镜像 —— vmlinux与xImage
0 前言 编译Linux内核生成的镜像主要有Image.zImage.bzImage和uImage四种: Image为内核映像文件: zImage为内核的一种映像压缩文件: uImage是uboot专 ...
- uboot源码——内核启动分析
以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6403863.html 总结:uboot启动linux内核的整个 ...
- uboot移植——启动内核
文章目录 1. uboot和内核到底是什么 1.1 uboot是一个裸机程序 1.2内核本身也是一个"裸机程序" 1.3部署在SD卡中特定分区内 1.4运行时必须先加载到DDR中链 ...
最新文章
- 博士在读却连矩阵的秩都搞不清,我该如何毕业?
- 带你玩玩转 MySQL 查询
- fedora16配制
- boost::core模块实现分配器重新绑定的实例
- powershell实现设置程序相关性脚本
- Event Organization Site - To be published on 4th August
- vue动态设置文字布局方式_十大惊人的文字动画特效
- cannot load oci dll,193-navicate连接oracle的解决方法
- 三星Galaxy Fold中国区发布会临时取消:推迟时间未定 彻查屏幕问题
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...
- js正则匹配小数点后2位_正则实践与详解
- [Javascript]史上最短的IE浏览器判断代码
- listView中的button控件获取索引
- 营销单页程序php,Z-blogPHP单页网站模板|产品营销单页|单品推广
- 兀键和6键怎么判断_高中有机化学大兀键怎么判断电子数和参与成键的原子数?...
- 【地理信息系统GIS】教案(七章全)第五章:空间数据查询与空间分析
- 【源码】基于PMSG的风力发电机组仿真与建模
- HDU 2121 Ice_cream’s world II(最小树形图+虚根)
- html调用优酷视频播放,优酷网视频播放器站外调用详解
- Django使用旧有的数据库