什么是zImage,rootfs

see*_*har 9 linux boot linux-kernel root-filesystem

我对嵌入式 Linux 非常陌生。我们使用 poky 构建系统。我们只是使用 bitbake linux-imx 命令来构建内核。它生成一些文件 zImage、rootfs、uboot 以及一个 sdcard 映像。我们只需复制 sdcard 映像并在我们的自定义板上运行 linux。我的问题 rootfs 和 zImage 实际上包含什么?

小智 10

要了解每个文件负责什么,您应该了解 MPU 是如何启动的。
正如我从您的问题中了解到的,您使用 NXP(飞思卡尔)i.MX 微处理器系列。它包括小型 ROM 加载程序,它将进行基本的系统设置(内存接口、时钟树等),搜索要从中启动的媒体(基于烧录的 OTP 位或 GPIO),在数据表中指定的确切地址,加载并启动它。U-boot 将初始化更多接口(例如以太网),找到应该传递给内核的参数(屏幕设置、控制台、网络设置,如果您使用 NFS),将内核复制到 DDR 并传递所有参数。内核将加载所有驱动程序,并搜索包含所有库、应用程序等的 rootfs。此后内核将启动 init 脚本,它将初始化所有系统并启动您的应用程序。

  1. u-boot 是 ROM 引导加载程序之后将启动的第一件事。如果您希望 MPU 在没有操作系统的情况下运行裸机代码(如微控制器),您可以将其替换为您自己的代码。
  2. zImage 是自解压的 Linux 内核映像的压缩版本。
  3. rootfs 是根文件系统,它包含所有应用程序、库以及大多数情况下的所有内容,包括主文件夹。
  4. sdcard 镜像就是上面提到的所有可以(用 dd)复制到卡上的东西,复制后你会看到 FAT 分区与内核和设备树和 EXT 分区与 rootfs,u-boot 位于 FAT 之前的未分区区域(以防万一你使用 i.MX6 它是 0x80000)。它的存在只是为了让您的生活更轻松。

  • 除了内核之外,zImage 还可能包含内核在挂载 rootfs 之前用于“启动系统”的初始文件系统(initramfs、initrd)。 (2认同)

Sha*_*dur 5

  • zImage是编译内核的实际二进制映像。这是引导加载程序将加载并尝试执行的内容(我相信在嵌入式 linux 上它以某种方式直接写入引导扇区;请参阅您的嵌入式 linux 发行版手册以获取说明)
  • rootfs 是所谓的 INITial RamDisk(也称为 initrd)映像,它包含内核启动到可以挂载实际根文件系统的状态所需的一切。
  • uboot是嵌入式linux使用的引导加载程序;它基本上告诉 BIOS(基本输入输出系统)zImage使用告诉zImage在哪里可以找到根文件系统的选项运行,以便它知道如何启动。

如果我不得不猜测,我会冒险在生成实际 SD 卡映像的过程中创建所有这些文件,即使您不再需要手动将前三个文件添加到最终映像中。