【问题标题】:LEDE: The uImage compress type not supportedLEDE:不支持 uImage 压缩类型
【发布时间】:2017-09-24 09:46:24
【问题描述】:

我正在尝试在 LEDE 中为 Atmel at91 SAMA5D3 平台构建内核映像,压缩类型为 XZ。 uImage 成功后,我将此图像传输到我的 SD 卡并尝试使用它启动。但是,启动总是失败并显示以下消息:

正在启动 uImage … 不支持 uImage 压缩类型 SD/MMC:图片加载失败

我尝试了其他人的镜像,效果很好,所以我不确定是否还有任何内核配置需要我也需要启用或禁用。

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: linux-kernel kernel openwrt


    【解决方案1】:

    该消息似乎表明您用于加载 Linux 内核的任何引导程序都没有任何解压缩功能。
    因此,您需要构建一个自解压的内核映像,即 zImage,而不是期望引导程序执行解压缩。
    如果您坚持,您可以将 zImage 包装在 uImage 标头中,但由于 zImage 是自解压的,因此需要将图像标记为“未压缩”。

    请注意,uImage 文件类型是由 U-Boot 实用程序 mkimage 生成的,这种类型的图像是为 U-Boot 提供的。
    其他引导程序可能会也可能不会识别 uImage。
    ARM 的引导程序预计将支持 zImage。

    您的帖子在细节方面很少。
    如果您所做的只是在内核的 menuconfig 中为 Kernel compression mode 选择 XZ 而不是默认的 gzip,并且确实构建了一个 zImage,那么 mkimage 使用的参数不正确。
    uImage 中的 zImage 必须标记为“未压缩”。

    【讨论】:

    • 谢谢@sawdust!我明白了,但是是否有任何内核配置可以将 uImage 标记为“未压缩”类型?
    • "是否有任何内核配置将 uImage 标记为 'uncompressed' 类型?" -- 不,因为内核配置指定了内核 的格式 i> 构建,并且 mkimage 命令在构建内核映像(和 zImage)之后 执行。研究 mkimage 命令的 man 页面。使用的压缩类型是 mkimage 命令的参数。 但也许你问错了后续问题。你知道你有什么样的内核映像吗?
    • 谢谢。我的内核映像有一个 uImage,验证魔法后显示的错误消息。所以也许我必须找到“mkimage”的执行位置并检查参数对吗?
    • "我的内核映像有一个 uImage" -- 我们已经知道你加载了一个 uImage;这是在错误消息中报告的。我所说的“某种内核映像”是指 in uImage 是什么。重新阅读我的答案和stackoverflow.com/questions/22322304/image-vs-zimage-vs-uimagestackoverflow.com/questions/45314335/…mkimage 命令(可能是从 make 脚本执行)中提交了什么文件?在你的构建目录中为“mkimage”尝试grep
    • 谢谢@sawdust!看起来我可以使用我的内核映像并将其明确标记为未压缩的映像。我确实在内核 menuconfig 中选择了未压缩类型,但不知何故它被其他一些配置覆盖了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多