[xboard] 26 kernel启动流程之initrd、initramfs、ramdisk核心异同
文章目录
-
- 一、initrd、initramfs、ramdisk 核心异同
-
- 1. ramdisk / initrd / initramfs 异同一句话版
- 2. 核心概念与本质
- 3. 核心差异总结
- 二、i.MX6 平台实现三种根文件系统挂载
-
- 1. 前提:根文件系统镜像准备
- 2. 实现 1:ramdisk 根文件系统挂载
-
- 步骤 1:创建 ramdisk 镜像
- 步骤 2:U-Boot 加载与挂载
- 内核配置
- 验证:
- 3. 实现 2:initrd 根文件系统挂载
-
- 步骤 1:创建 initrd 镜像
- 步骤 2:U-Boot 加载与挂载(关键是启动参数)
- 关键:init 脚本实现根切换(可选)
- 内核配置
- 4. 实现 3:initramfs 根文件系统挂载(推荐)
-
- 步骤 1:创建 initramfs 镜像(cpio 包)
- 步骤 2:U-Boot 加载与挂载
- 验证:
- 三、关键注意事项
简述initrd、initramfs、ramdisk三者的异同,并在imx6平台上,分别实现initrd、initramfs、ramdisk根文件系统的挂载
一、initrd、initramfs、ramdisk 核心异同
三者均为 内存中的临时文件系统,核心作用是在 Linux 内核启动后、挂载最终根文件系统(如 eMMC、NAND Flash)前,提供必要的驱动(如存储控制器驱动)和初始化脚本,但实现原理、存储形式、生命周期差异显著。
1. ramdisk / initrd / initramfs 异同一句话版
- ramdisk 纯“内存块设备”(/dev/ramX),大小固定,需文件系统格式化,靠内核 CONFIG_BLK_DEV_RAM 驱动。
- initrd 把“ramdisk 镜像”(ext2 格式,可 gzip) 单独加载到内存,由 boot-loader 把地址/大小传给内核;内核把它当 /dev/ram0 挂载为临时根,执行 /linuxrc 后再 pivot_root。
- initramfs 直接把“cpio.gz 包”链接进内核镜像(.init.ramfs 段),启动时内核 unpack_to_rootfs() 把它释放到 rootfs(一种 ramfs,无固定大小、自动伸缩),找到 /init 即跳转,不再返回内核。
initrd vs initramfs (机制差异)