什么是zImage、rootfs

什么是zImage、rootfs

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

答案1

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

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

答案2

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

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

相关内容