Kernel 如何在uImage中提取文件?

Kernel 如何在uImage中提取文件?,kernel,u-boot,Kernel,U Boot,我的问题是: 我有一个uImage文件,其中包含内核+dtb+initramfs。initramfs有一些专有的二进制文件,因此我无法从源代码重建它。但是由于不同的原因,我需要更改Linux内核 因此,我想如果以下步骤可以解决我的问题: 提取上面的uImage文件 用新构建的文件替换内核和dtb文件 使用新内核、新dtb和旧initramfs重新创建更新版本的uImage文件 是否有可用的工具来执行此操作?如果不是的话,我非常感谢您为我提供的帮助 试试这个命令: mkimage -l kerne

我的问题是:

我有一个uImage文件,其中包含内核+dtb+initramfs。initramfs有一些专有的二进制文件,因此我无法从源代码重建它。但是由于不同的原因,我需要更改Linux内核

因此,我想如果以下步骤可以解决我的问题:

  • 提取上面的uImage文件
  • 用新构建的文件替换内核和dtb文件
  • 使用新内核、新dtb和旧initramfs重新创建更新版本的uImage文件
  • 是否有可用的工具来执行此操作?如果不是的话,我非常感谢您为我提供的帮助

    试试这个命令:

    mkimage -l kernel.uImage
    

    有关详细信息,请查看此页面。

    此页面中有一些相关信息:但是,脚本将从中生成zImage。并没有像我期望的那样提取文件。另一个有用的方法是,您想做的事情与提供的信息不符。uImage文件只是一个文件的包装器。只需移除包装器(仅当包装器指示时才解压缩文件),即可将uImage文件转换为其原始文件。该uImage中的内核映像和dtb的处理方式应与initramfs相同。所以“提取”一个而保持另一个“原样”是没有意义的。请参见@sawdust,我提供了更多的信息/背景。如果有帮助,请告诉我。您提供的帮助帮助我了解uImage的结构。有了它,我就可以单独移除uImage包装了。关于如何提取文件系统部分和dtb部分的任何输入?uImage中的内容是独立于mkimage实用程序组合而成的。您可能需要检查makefile和/或U-Boot bootcmd,以了解这些部件是如何组合和/或使用的。我知道DTB可以附加到内核zImage(参见的第8页),initramfs通常附加到zImage,但不确定如何附加这两者。是否可能涉及到itb?(请参阅)链接中的示例是关于提取打包为单个图像的2个uImages。在我的例子中,kernel+dtb+文件系统打包为一个uImage。当我做'mkimage-l'时,输出就好像只有一个一样image@AananthCN我还收到一个输出,指示只有一个图像。您是否找到了提取其内容的方法?@AananthCN,如果您提取一幅图像并再次运行
    mkimage-l
    (即嵌套图像),您会得到什么?