Image zImage uImage的关系

linux 内核编译后,标准输出件是内核源码根目录下的vmlinux。

其它各种格式的镜像文件都这个这个转化出来的。

通常看内核的编译配置,比如arm64的,有时在arch\arm64\boot里面会生成Image和zImage。

Image的来源(使用交叉工具链):
aarch64-xxx-objcopy -O binary -R .note -R .comment -S vmlinux Image

zImage是由Image压缩而来,里面的内容说明参考:
https://www.cnblogs.com/genshu123/p/11210990.htmlhttps://www.cnblogs.com/genshu123/p/11210990.html
“zImage由head.o,piggy.gzip.o,misc等链接组成,piggy.gzip.o中包含压缩的内核镜像”

总结就是zImage就是添加了头,实现内核自解压的镜像。
uboot里面LINUX_ZIMAGE_MAGIC这个宏是确定能否支持?

比如:
vmlinux是120M,那Image大概在16M,zImage在3M左右。

注意arm64一般不能自解压,不能使用zImage,需要对应CPU实现自解压或者使用uboot等先解压为Image后,跳转启动。

参考内核自带说明:
Documentation\arm64\booting.txt

The AArch64 kernel does not currently provide a decompressor and
therefore requires decompression (gzip etc.) to be performed by the boot
loader if a compressed Image target (e.g. Image.gz) is used. For
bootloaders that do not implement this requirement, the uncompressed
Image target is available instead.

Documentation\arm64\booting.txt

uImage只是将各种镜像,用mkimage打上了个说明的头,给uboot加载启动内核使用的。
具体怎么使用参考uboot源码中的说明文件:
doc\uImage.FIT

参考已有的指导说明:
https://blog.csdn.net/boyemachao/article/details/109447927

建议还是使用
mkimage -f linux_arm32.its linux.itb,这种方式,实现多个内核,多个dtb,多个initrd的灵活组合使用。

后面想到再补充吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值