我有一些与linux boot进程有关的问题。 Initramfs是加载的第一阶段根文件系统。
iniramfs内部的init进程负责将实际的根文件系统从硬盘安装到/目录。

现在我的问题是where is / directory created by init(initramfs的初始化过程)来安装实际的根分区。是ram还是hardisk ?
同样,一旦安装了实际的根分区,那么initramfs ?会发生什么

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

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

//艾伦

最佳答案

(initramfs的)/sbin/init的作用是加载文件系统和必要的模块。然后,它尝试加载目标真实的“rootfs”。然后,它从initramfs切换到实际的rootfs,并且“/”在硬盘上。完成硬盘驱动器格式化后,将在安装系统时创建“/”。注意,这是关于读取文件系统的内容的,因此这是先加载所需模块的先决条件。如果您的ext3分区为“/”,则将加载ext3.ko,依此类推。

回答第二个问题-完成所需的fs模块加载后,它从initramfs的init切换到实际rootfs的init,并且通常的启动过程开始,并且initramfs从内存中删除。此切换通过pivot_root()完成。

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

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

08-26 10:37