3

我有一些与linuxboot进程有关的问题。Initramfs是加载的第一阶段根文件系统。iniramfs 内部的初始化进程负责将实际的根文件系统从硬盘挂载到 / 目录。

现在我的问题是where is / directory created by init(initramfs 的初始化过程)挂载实际的根分区。是在ram还是harddisk?

同样,一旦安装了实际的根分区,那么 initramfs 会发生什么?

如果从 ram 中删除了 initramfs,那么 initramfs 创建的 / 文件夹会发生什么情况?

请提出建议,可以解释一下how does this magic works

//艾伦

4

2 回答 2

2

/sbin/init (of initramfs) 的作用是加载文件系统和必要的模块。然后它会尝试加载目标真正的“rootfs”。然后它从 initramfs 切换到真正的 rootfs 并且“/”在硬盘上。“/”是在您安装系统、完成硬盘格式化时创建的。注意,它是关于读取文件系统的内容,因此它是首先加载所需模块的先决条件。如果你有一个“/”的 ext3 分区,那么 ext3.ko 将被加载等等。

回答第二个问题 - 在完成所需的 fs 模块加载后,它从 initramfs 的 init 切换到真正的 rootfs 的 init,并且通常的引导过程开始,并且 initramfs 从内存中删除。这种切换是通过 pivot_root() 完成的。

回答第三个 - initramfs 不会创建任何目录,它只是将现有的 initramfs.img 图像加载到 ram 中。

因此,简而言之,加载 iniramfs 或 rootfs 并不是要创建任何目录,而是要加载现有的文件系统映像。启动后 - 它使用 initramfs 加载必须需要的文件系统模块,就好像它可以读取真实的文件系统一样。希望它会有所帮助!

于 2013-06-12T07:56:16.420 回答
1

使用 initrd 有两个选项:

  1. 使用pivot_root将最终文件系统旋转到位,或者

  2. 清空根并在其上安装最终文件系统。

更多信息可以在这里找到。

于 2013-06-12T07:05:35.703 回答