uImage

作者: zoug2016 | 来源:发表于2018-10-28 22:55 被阅读0次

linux内核经过编译后会生成一个ELF格式的可执行程序,叫vmlinux或vmlinuz,是原始的未经任何处理加工的原版内核ELF文件;嵌入式系统烧录的一般不是这个vmlinuz/vmlinux,而是要用objcopy工具制作成烧录镜像格式,经过制作加工成烧录镜像的文件就叫Image(这个制作烧录镜像主要目的就是缩减大小,节省空间)。原则上Image就可以直接被烧录到Flash上进行启动执行(类似于u-boot.bin),但是实际上并不是这样。实际上linux的大牛们觉得Image还是太大了所以对Image进行了压缩,并且在image压缩后的文件的前端附加了一部分解压缩代码,构成了一个压缩格式的镜像就叫zImage。解压的时候,通过zImage镜像头部的解压缩代码进行自解压,然后执行解压出来的内核镜像。uboot为了启动linux内核,还发明了一种内核格式叫uImage。uImage是由uboot编译生成的工具mkimage,可以将zImage加工生成uImage。

uImage不关linux内核的事,linux内核只管生成zImage即可,然后uboot的mkimage工具再去将zImage加工生成uImage来给uboot启动。这个加工过程其实就是在zImage前面加上64字节的uImage的头信息即可。

Lagacy-uImage大致过程

uImage类型

  • Legacy-uImage
  • FIT-uImage

Legacy-uImage

在kernel镜像的基础上,加上64Byte的信息提供给uboot使用。

FIT-uImage

将kernel、dtb、ramdisk等打包到一个image file中,并且加上一些需要的属性。uboot只要获得了这个image file,就可以得到kernel、dtb、ramdisk等镜像的具体信息和内容。

两种类型uImage的思维导图如下:

uboot-Legacy-uImage&FIT-uImage

总结

  • 两种类型的uImage
  • 从未压缩的vmlinux到uImage的大致过程

针对Legacy-uImage在后面imx6u平台上再进行。

相关文章

网友评论

    本文标题:uImage

    本文链接:https://www.haomeiwen.com/subject/vfnptqtx.html