可以使用vmlinux代替uImage吗?


Answers:


7

据我所知,U-Boot无法直接启动“原始” ELF映像(vmlinux)。您需要将其转换为uImage包含压缩格式vmlinux以及描述内核加载地址的元数据的一些额外字节的格式。U-Boot FAQ 2.19解释了如何生成uImage;使用mkimageU-Boot源代码树中的实用程序非常简单:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(您可能需要其他参数来指示加载地址。)


1
引导时解压缩uImage需要一些时间。我需要将其最小化。所以我想为什么不尝试使用未压缩的原始文件vmlinux。
Sharanya

3
您想要达到的效果可能与预期相反。解压缩时间通常小于从闪存复制数据的时间。
Maciej Kucia

3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

将上面示例中的gzip更改为none,您将创建一个与u-Boot兼容的未压缩图像。


1

如果使用的是Buildroot,请选择一个uImage内核输出文件(BR2_LINUX_KERNEL_UIMAGE=y)。正常编译,并且Buildroot还将vmlinux在中间步骤中创建一个文件。虽然vmlinux文件未复制到/output/images目录中,但可以在./output/build/linux-custom/(或通过运行find . -name "vmlinux")找到它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.