如果它们是同一件事,我对initramfs和initrd不会感到困惑。
他们不是“同一件事”。这就是为什么他们使用不同的名称。
但是,它们可以达到相同的目的,即初始的根文件系统。
它们的实现方法不同,即它们在内存中的存在方式。
initrd是初始虚拟磁盘。与使用大容量存储的块设备相反,虚拟磁盘是存在于内存中的块设备,通常在主内存中分配。不赞成在Linux中使用initrd,而推荐使用initramfs。
initramfs是初始ramfs。ramfs利用现有的文件系统缓存作为存储介质。ramfs可以存储与可用内存一样多的数据。
首先将initramfs加载到内存中,然后将内核加载到内存中,然后内核从initramfs映像文件(包括systemd进程)中加载驱动程序。
不可以,因为您的描述没有任何意义(例如,“ initramfs加载到内存中”)。
引导程序(例如Grub,U-Boot)必须将内核从引导设备加载到主存储器中。
如果存在initrd,则引导程序还必须加载该映像文件。
或两个grub都将initramfs和内核同时加载到内存中。然后内核提取initramfs上的内容以进一步进行systemd启动
关闭。
如果有一个initramfs而不是initrd,则cpio归档文件将链接到内核映像中。在启动过程中,内核会创建一个空的initramfs。然后提取附件的cpio存档以填充初始ramf。
官方Linux文档在这里有更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句