它们之间有什么区别?
我知道u-boot需要uImage格式的内核。
我首先使用从第1阶段加载程序引导的系统,然后调用u-boot。我想放弃u-boot并直接从第1阶段加载程序启动。我必须使用哪种类型的内核映像?
它们之间有什么区别?
我知道u-boot需要uImage格式的内核。
我首先使用从第1阶段加载程序引导的系统,然后调用u-boot。我想放弃u-boot并直接从第1阶段加载程序启动。我必须使用哪种类型的内核映像?
Answers:
它们之间有什么区别?
Image:通用Linux内核二进制映像文件。
zImage:自解压的Linux内核映像的压缩版本。
uImage:具有U引导程序包装(由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也可能具有可以启动zImage的bootz命令。