前言

内核镜像和其他的镜像并没有本质上的区别,都是用同一套交叉编译工具链来生成的,内核有这么多不同类型的镜像是为了满足各种启动方式,本质上和其他镜像都是一样的,只是在此基础上做了修改。生成镜像的过程:
(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的区别相关推荐

  1. vmlinux、 Image, zImage、 uImage 的区别

    来自正点原子<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf> vmlinux 是 ELF 格式的文件,但是在实际中我们不会使用 vmlinux,而是使用 zIm ...

  2. 比较zImage和uImage的区别

    一.vmlinuz vmlinuz是可引导的.压缩的内核."vm"代表"Virtual Memory".Linux 支持虚拟内存,不像老的操作系统比如DOS有6 ...

  3. zImage与uImage的区别

    在编译Linux内核时,通常都是生成zImage, 它是一般情况下默认的压缩内核映像文件. 而实际上,zImage是通过压缩内核文件vmlinux后,再加上一段解压启动代码得到. 而uImage是u- ...

  4. Linux内核映像vmlinux、Image、zImage、uImage区别

    本文介绍几种常用的Linux内核映像的区别. 一.vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理. 该映像可用于定位内核问题,但不能直接引导Linux ...

  5. make zImage和make uImage的区别和mkimage工具的使用

    刚刚接触到linux内核编译过程的时候,相信不少人跟我一样,都是按照手册或者网上的教程一步一步的执行,对于其中的很多原理和过程都是一知半解,这其中有一个很常见的问题,就是make image命令. 因 ...

  6. zImage制作uImage

    bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的,什么叫做经过u-boot的工具mkimage打包后的kernel image,这个就要看mkimage的 ...

  7. mkimage工具将zImage转换为uImage

    正常引导的内核文件 [root@wtstb ~]# mount /dev/sda1 /mnt/ [root@wtstb ~]# file /mnt/hi_kernel.bin /mnt/hi_kern ...

  8. Linux内核镜像 —— vmlinux与xImage

    0 前言 编译Linux内核生成的镜像主要有Image.zImage.bzImage和uImage四种: Image为内核映像文件: zImage为内核的一种映像压缩文件: uImage是uboot专 ...

  9. uboot源码——内核启动分析

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6403863.html 总结:uboot启动linux内核的整个 ...

  10. uboot移植——启动内核

    文章目录 1. uboot和内核到底是什么 1.1 uboot是一个裸机程序 1.2内核本身也是一个"裸机程序" 1.3部署在SD卡中特定分区内 1.4运行时必须先加载到DDR中链 ...

最新文章

  1. 博士在读却连矩阵的秩都搞不清,我该如何毕业?
  2. 带你玩玩转 MySQL 查询
  3. fedora16配制
  4. boost::core模块实现分配器重新绑定的实例
  5. powershell实现设置程序相关性脚本
  6. Event Organization Site - To be published on 4th August
  7. vue动态设置文字布局方式_十大惊人的文字动画特效
  8. cannot load oci dll,193-navicate连接oracle的解决方法
  9. 三星Galaxy Fold中国区发布会临时取消:推迟时间未定 彻查屏幕问题
  10. 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...
  11. js正则匹配小数点后2位_正则实践与详解
  12. [Javascript]史上最短的IE浏览器判断代码
  13. listView中的button控件获取索引
  14. 营销单页程序php,Z-blogPHP单页网站模板|产品营销单页|单品推广
  15. 兀键和6键怎么判断_高中有机化学大兀键怎么判断电子数和参与成键的原子数?...
  16. 【地理信息系统GIS】教案(七章全)第五章:空间数据查询与空间分析
  17. 【源码】基于PMSG的风力发电机组仿真与建模
  18. HDU 2121 Ice_cream’s world II(最小树形图+虚根)
  19. html调用优酷视频播放,优酷网视频播放器站外调用详解
  20. Django使用旧有的数据库

热门文章

  1. 100个java编程实例_100个java编程实例
  2. java代码性能优化
  3. java生成电子发票_Java电子发票管理系统
  4. linux 软件装哪个目录下,Linux查看软件安装目录及位置 方法
  5. Pytorch-NLU,一个中文文本分类、序列标注(实体识别、分词、词性标注)的极简工具包,基于pytorch与tramsforers
  6. c语言烟花代码,C语言烟花程序
  7. U盘无法格式化,变成8M,RAW格式,0字节的U盘修复教程
  8. MapX bug 和设计缺陷
  9. adb命令安装apk
  10. 电压传感器: 工作原理、类型及电路图