initramfs、initrd和kernel在Centos 7的启动中起到什么作用?

initramfs、initrd和kernel在Centos 7的启动中起到什么作用?

我有点困惑 initramfs 和 initrd 是否是同一件事。 initramfs 是否先加载到内存中,然后内核加载到内存中,然后内核从 initramfs 映像文件(包括 systemd 进程)加载驱动程序。

或者 grub 同时将 initramfs 和 kernel 加载到内存中。然后 kernel 提取 initramfs 上的内容以继续进行 systemd 启动

我的 /boot 的内容:

在此处输入图片描述

答案1

如果 initramfs 和 initrd 是同一件事,我有点困惑。

他们不是“一样的东西”。这就是它们名称不同的原因。
但它们可以服务于相同的目的,即初始根文件系统。
它们的实现方法不同,即它们在内存中的存在方式。

initrd 是初始 ramdisk。ramdisk 是存在于内存中的块设备,通常分配在主内存之外,与使用大容量存储的块设备不同。Linux 中已不再使用 initrd,而是使用 initramfs。

initramfs 是初始 ramfs。ramfs 利用现有的文件系统缓存作为存储介质。ramfs 可以存储尽可能多的数据,只要有可用的内存。

initramfs 是否首先加载到内存中,然后内核加载到内存中,然后内核从 initramfs 映像文件(包括 systemd 进程)加载驱动程序。

不,因为你的描述毫无意义(例如“initramfs 加载到内存中”)。
引导程序(例如 Grub、U-Boot)必须从引导设备将内核加载到主内存中。
如果有 initrd,则引导程序还必须加载该 initrd 的映像文件。

或者 grub 同时将 initramfs 和 kernel 加载到内存中。然后 kernel 提取 initramfs 上的内容以继续进行 systemd 启动

关闭。
如果有一个 initramfs 而不是 initrd,则太平洋保险协会存档将链接到内核映像。在启动期间,内核会创建一个空的 initramfs。附加的太平洋保险协会然后提取档案来填充初始 ramfs。


Linux 官方文档是这里提供更多详细信息。

相关内容