我不清楚他们的意思和使用时间.
请以最简单的方式解释我:
Q1:什么是initrd?为什么我们需要那个?
Q2:什么是ramdisk?为什么以及我们需要这个?
Q3:什么是initramfs?我们为什么以及在哪里使用它?
Q4:什么是ramfs?我们为什么以及在哪里使用它?
有关这些术语的深入了解,请参阅文档/参考书….
谢谢
Phogat
解决方法
接下来我将为您提供有关initrd和initramfs的详细信息.
简单来说,initrd和initramfs都指的是早期的用户空间根文件系统(也就是rootfs),它可以让你在内存中运行一个非常小的文件系统.
该文档出现在linux内核源代码树的Documentation/filesystems/ramfs-rootfs-initramfs.txt
部分,它还可以为您提供这些内容的长度描述.
什么是initrd?
需要这种早期文件系统的一种常见情况是加载硬盘控制器的驱动程序模块.如果驱动程序存在于硬盘驱动器上,则会成为鸡与蛋的问题.将这些驱动程序作为此早期rootfs的一部分,可帮助内核为任何检测到的硬盘控制器加载驱动程序,然后才能从硬盘驱动器安装实际的根文件系统.此问题的另一个解决方案是将所有驱动程序模块内置到内核中,但是您将以这种方式增加内核二进制文件的大小.这种文件系统映像通常称为initrd.它使用ramfs或tmpfs实现.它使用环回块设备进行模拟.
引导加载程序将内核映像加载到内存地址,将initrd映像加载到另一个内存地址,并告诉内核在哪里找到initrd,将引导参数传递给内核,并将控制传递给内核以使其继续引导过程.
那么它与initramfs有什么不同呢?
与内核中内置的initrd相比,initramfs是一个更早的阶段文件系统(当然由内核配置控制).
据我所知,initrd和initramfs都是由这个单一内核配置控制的,但它可能在最近的内核中被更改了.
config BLK_DEV_INITRD
我不会深入研究如何构建自己的initramfs,但我可以告诉你它只是使用cpio格式来存储文件,并且可以在构建内核时使用usr / Kconfig进行配置.即使您没有指定自己的initramfs映像,但已启用对initramfs的支持,内核也会自动嵌入一个非常简单的initramfs,其中包含/ dev / console,/ root和其他一些文件/目录.
此外,还有一个较新的tmpfs文件系统,它通常用于实现内存中的文件系统.事实上,较新的内核使用tmpfs而不是ramfs来实现initrd.
更新:
刚好偶然发现了a similar question
This也可能有用