【发布时间】:2017-12-07 15:31:06
【问题描述】:
这是我的问题:
我有一个 uImage 文件,其中包含 kernel + dtb + initramfs。 initramfs 有一些专有的二进制文件,因此我无法从源代码重建它。但出于不同的原因,我需要更改 Linux 内核。
因此我想如果以下步骤可以解决我的问题:
- 解压上面的uImage文件,
- 用新建的文件替换内核和dtb文件,
- 使用 new-kernel、new-dtb 但 old-initramfs 重新创建较新版本的 uImage 文件。
是否有可用的工具来执行此操作?如果没有,我很感激开发相同的任何投入。
【问题讨论】:
-
这个页面有一些相关信息:buffalo.nas-central.org/wiki/How_to_Extract_an_uImage 但是,脚本会从中生成一个zImage。并没有像我预期的那样真正提取文件。
-
另一个有用的link
-
您想要做的事情对于提供的信息没有意义。 uImage 文件只是文件的包装器。您只需删除包装器即可将 uImage 文件转换为其原始文件(并仅在包装器指示时解压缩文件)。该 uImage 中的内核映像和 dtb 应该以与 initramfs 相同的方式处理。所以 “提取” 一个但保持另一个 “原样” 是没有意义的。见stackoverflow.com/questions/22322304/image-vs-zimage-vs-uimage/…
-
@sawdust,我提供了更多信息/背景。让我知道这是否有帮助。您提供的link 帮助我了解 uImage 的结构。这样我就可以单独删除 uImage 包装器。关于如何提取文件系统部分和 dtb 部分的任何输入?
-
uImage 中的内容独立于 mkimage 实用程序进行组合。您可能需要检查 makefile 和/或 U-Boot bootcmd 以了解这些部分是如何组合和/或然后使用的。我知道 DTB 可以附加到内核 zImage(参见 events.linuxfoundation.org/sites/events/files/slides/… 的第 8 页),并且 initramfs 通常附加到 zImage,但不确定如何附加 both . .itb 可以参与吗? (见casper.berkeley.edu/svn/trunk/roach/sw/uboot/doc/uImage.FIT/…)