uimage、zimage分析
vmlinux、image、zimage的关系
其关系如下图所示:
1、所有的.build-in.o链接成一个vmlinux.elf。该文件是最原始的可执行文件,大小可达几十M甚至更多。
2、使用objcopy工具将vmlinux.elf 中的符号信息与调试信息去除,减少镜像大小。
3、通过lzma或gzip等算法压缩镜像,进一步减少镜像大小。 到这里基本上可以得到一个比较小的镜像了,通常在几M,便于写进norflash 或者 nandflash等存储设备。此时得到的镜像可以用bootz命令启动
LZMA即我们常见的7z压缩算法。
4、为了便于uboot启动镜像,使用mkimage
命令给zimage加上一个64字节,uboot可以识别的头部信息,进而得到了uimage
从这个过程可以看到,到zimage阶段就可以烧写到设备中运行,但为了uboot更好的自动加载镜像,添加了64字节的头部信息,最终得到了uimage