一、Linux内核镜像
1.Linux内核镜像的本质,是内核源代码经过编译、链接后,生成的一个包含内核代码、数据和启动指令的二进制文件;
2.内核镜像格式:
1)vmlinux: 最原始的ELF格式文件,包含完整的代码、数据和调试符号。体积庞大,通常几十到上百MB。适用全架构;
2)Image: 使用objcopy工具从vmlinux 中移除调试符号后生成的纯二进制文件。适用ARM64/RISC-V/ARM32;
3)Image.gz: gzip 压缩版 Image。适用ARM64/RISC-V;
4)zImage: 对Image文件进行gzip压缩,并在文件开头嵌入自解压代码后生成。适用ARM32;
5)bzImage: "Big zImage"的缩写,同样使用gzip压缩,但内部格式不同,支持引导更大的内核;
6)uImage: 使用mkimage工具,在zImage(或Image)前部添加一个64字节的头信息生成。头部包含加载地址、入口点等元数据。适用ARM32;
7)image.ub/.itb: FIT(Flattened Image Tree)容器,设备树格式的多组件容器。说白就是把单一容器文件,把内核、设备树、ramdisk 根文件系统、FPGA比特流打包进一个文件。适用全嵌入式架构。
3.各内核镜像格式U-Boot引导命令
1)Image: booti引导;
2)Image.gz: booti引导(自动解压);
3)zImage: bootz引导;
4)uImage: bootm引导;
5)image.ub: bootm引导。
二、根文件系统镜像
1.根文件系统镜像,说白了就是把一整套Linux目录树打包生成的二进制镜像文件。
2.根文件系统镜像格式:
1)rootfs.cpio: cpio归档(未压缩),原始内存根文件系统归档,完整打包目录树,用于内核initramfs;
2)rootfs.cpio.gz: gzip‑压缩cpio,开发中最常用,压缩版initramfs,可以打包进 image.ub(FIT‑ramdisk),内核解压到内存运行;
3)rootfs.cpio.uboot: U-Boot头部封装cpio,老式 uImage 格式ramdisk,给旧的U-Boot 加载内存文件系统使用;
4)rootfs.ext2: ext2分区镜像,可读写磁盘镜像,用于SD卡/eMMC;
5)rootfs.ext4: ext4分区镜像,SD卡、eMMC 标准根文件系统,支持日志、坏块管理;
6)rootfs.tar: tar归档包,根目录树的 tar 打包,用于手动解压部署、NFS 根文件系统调试;
7)rootfs.tar.bz2: bzip2 压缩tar包,高压缩的目录树压缩包,方便传输、备份文件系统;
8)u-rootfs: 拓展镜像,Buildroot 配套的辅助文件系统产物;
9)u-rootfs.ext2: U-Boot专用封装格式的ext2根文件系统镜像,等价于在标准 rootfs.ext2 文件系统头部,追加了U-Boot镜像头(64 字节 uImage 头部)。