Edit online

镜像类型

25 Dec 2024
Read time: 2 minute(s)
本节介绍 U-Boot 中涉及到的各种镜像类型。
  • Image

    Image 文件是 Linux 编译生成的非压缩镜像文件,基于 ELF 文件 vmlinux 提取得到。

    riscv64-unknown-linux-gnu-objcopy -O binary -O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux arch/riscv/boot/Image
    
    • ARM64 和 RISCV 产生的 Image 文件自带一个镜像信息头,U-Boot 可以使用 booti 命令对该镜像进行解析和启动。
    • ARM32 上产生的 Image 文件不带镜像信息头。在 ArtInChip 方案中,U-Boot 也实现了一个特殊的 booti32 命令,可以直接启动未压缩的 Image 文件。
  • Image.gz

    包括 Image.gzImage.bz2Image.lzoImage.lzmoImage.lz4 等类型的压缩文件,是基于 Image 文件直接压缩得到。

    ARM64 和 RISCV 都采用这种方式产生对应的压缩文件。U-Boot 中可以使用 booti 命令解析和启动对应的压缩镜像文件。

  • zImage

    zImage 是 Linux 编译生成的压缩内核 Image 格式,基于 Image 文件生成。zImage 是一个运行时自解压缩的镜像文件。

    内核生成 zImage 时,首先将未压缩的 Image 通过 gzip 压缩(默认选择 gzip 压缩),生成 pyggy_data, 然后再与相关的解压缩代码编译和链接,生成 zImage

    cat arch/arm/boot/compressed/../Image | gzip -n -f -9 > arch/arm/boot/compressed/piggy_data

    在 U-Boot 中可以使用 bootz 命令进行解析和启动该镜像文件。

  • uImage

    uImage 基于 zImage 生成,仅在头部添加 U-Boot Image 的头信息,以便 U-Boot 正确解析。 实际上在新的内核中,已经不再生成该镜像文件。

    在 U-Boot 中使用 bootm 命令进行解析和启动该镜像文件。

  • FIT Image

    FIT Image 是一种打包格式,可以将多个镜像文件打包在一起,合并成一个 .itb 文件。 打包的具体细节通过对应的 .its 文件进行描述,然后通过 mkimage 工具进行打包。

    FIT Image 可以通过 bootm 命令进行解析和启动。

  • AIC 镜像

    在固件升级和 BROM 启动过程中,BROM 需要读取 AIC 自定义格式的镜像,以 .aic 结尾。 AIC 镜像使用 mk_image.py 脚本生成,生成的细节通过 image_cfg.json 文件进行描述。