rootfs打包方式

参考资料:
 

initrd和initramfs的基本概念:

initrd(Initial RAM Disk)和initramfs(Initial RAM File System)都是用于在 Linux 系统引导过程中加载临时文件系统的方法,它们的区别如下:
  1. initrd
  • initrd 是最早期使用的一种方式,它是一个固定大小的内存磁盘,其中包含用于启动系统所需的程序和驱动程序。在引导过程中,内核会先加载 initrd 到内存中,然后将其挂载为根文件系统。一旦 initrd 加载完成,它的使命就完成了,此后真正的根文件系统会被挂载到系统中。
  • initrd 的缺点是固定大小和浪费空间,因为它需要预先分配一个固定大小的内存块。
  1. initramfs
  • initramfs 是 initrd 的进化版本,它是由内核动态生成的临时文件系统,可以根据系统需要加载所需的模块和文件。相比于 initrd,initramfs 更加灵活和高效,因为它只包含引导所需的文件和程序,不会浪费空间。
  • 内核会在引导过程中加载 initramfs 到内存中,并将其作为初始根文件系统。之后,initramfs 负责加载必要的驱动程序和文件,最终将真正的根文件系统挂载到系统中
 
在了解initramfs之后,说明下两种rootfs打包方式:

1、rootfs与zImage分开镜像

也就是常用的配置方法,rootfs一个镜像,zImage + dtb为一个镜像,uboot一个镜像
内核配置去掉CONFIG_INITRAMFS_SOURCE宏定义
 

2、rootfs打包进zImage

将 rootfs 编译进内核意味着在编译内核时将文件系统直接嵌入到内核镜像中,而不是作为一个独立的文件系统映像。这种做法通常被称为"initramfs"或"initrd",它允许将根文件系统的内容打包进内核,以便在引导时直接使用。
要实现这一点,你需要在内核配置中启用相关的选项,一般来说,需要设置 CONFIG_INITRAMFS_SOURCE 选项来指定 initramfs 的源文件或目录路径,并启用 CONFIG_RD_GZIP 或其他相关选项来启用 initramfs 支持。
posted @ 2024-03-20 19:57  lethe1203  阅读(112)  评论(0编辑  收藏  举报