yil*_*lah 70 linux-kernel embedded-linux u-boot
他们之间有什么区别?
我知道u-boot需要uImage格式的内核.
我使用的系统首先从第1阶段加载器启动,然后调用u-boot.我想丢弃u-boot并直接从第1阶段加载器启动.我必须使用哪种类型的内核映像?
saw*_*ust 104
他们之间有什么区别?
图像:通用Linux内核二进制映像文件.
zImage:自我解压缩的Linux内核映像的压缩版本.
uImage:具有U-Boot包装器(由mkimage实用程序安装)的映像文件,包含操作系统类型和加载程序信息.
一种非常常见的做法(例如典型的Linux内核Makefile)是使用zImage文件.由于zImage文件是自解压缩的(即不需要外部解压缩程序),因此包装器将指示此内核即使实际上是"未压缩".
请注意,U-Boot的作者/维护者考虑在uImage中使用zImage的(广泛使用)可疑:
实际上在uImage中使用zImage非常愚蠢.使用普通(未压缩)内核映像,仅使用gzip压缩它,并将其用作mkimage的poayload要好得多.这样U-Boot就可以完成非压缩,而不是包含每个内核映像的另一个解压缩器.
(引自https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html)
我必须使用哪种类型的内核映像?
你可以选择你想要编程的任何东西.
为了节省存储空间,您应该在未压缩的图像上选择压缩图像.
请注意,执行内核(可能是Linux内核)不仅仅涉及将内核映像加载到内存中.根据体系结构(例如ARM)和Linux内核版本(例如,有或没有DTB),可能必须为内核准备寄存器和内存缓冲区.在一个实例中,还有U-Boot执行的必须复制的硬件初始化.
附录
我知道u-boot需要uImage格式的内核.
这对于只有bootm命令的所有U-Boot版本都是准确的.
但是更新版本的U-Boot也可以使用bootz命令来启动zImage.