他们之间有什么区别?
我知道u-boot需要uImage格式的内核。
我使用的系统首先从第1阶段加载器启动,然后调用u-boot。我想丢弃u-boot并直接从第1阶段加载器启动。我必须使用哪种类型的内核映像?
答案 0 :(得分:97)
他们之间有什么区别?
图像:通用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。