initramfs是一个临时文件系统,用于启动系统,并在安装后将控制权传递给根目录。我不能仅使用ramfs进行操作的原因是您保存的任何内容都不会保留,而是在您每次重新启动时都会被擦除。
但是即使关闭电源,也可以写入挂载的根文件系统并记住内容。为什么是这样?rootfs如何记录更改而initramfs无法记录更改?
更重要的是,这个根fs应该在哪里?我正在寻找根分区,并且看到了uinitfs.image,但是没有看到其他任何归档文件,这些归档文件应该是我要挂载的根文件系统。物理上存储在哪里?
initramfs是一个压缩映像,通常存储在其中/boot
(例如,在我的CentOS 7机器上/boot/initramfs-3.10.0-327.18.2.el7.x86_64.img
)。这可能是gzip的cpio存档。
例如
sudo gzip -dc /boot/initramfs-3.10.0-327.4.5.el7.x86_64.img | cpio -t | head
.
etc
etc/modprobe.d
etc/modprobe.d/mlx4.conf
etc/ld.so.conf.d
etc/ld.so.conf.d/kernel-3.10.0-327.3.1.el7.x86_64.conf
etc/ld.so.conf.d/kernel-3.10.0-327.4.4.el7.x86_64.conf
etc/ld.so.conf.d/kernel-3.10.0-229.20.1.el7.x86_64.conf
etc/ld.so.conf.d/mariadb-x86_64.conf
etc/ld.so.conf.d/kernel-3.10.0-327.4.5.el7.x86_64.conf
这将存储使操作系统进入可以看到根设备的状态的最少必需的例程集。例如,它可能包含与您的HBA对话所需的驱动程序。
引导时将其解压缩到RAM中并执行。因为它是RAM映像,所以所有更改都将丢失。
找到真实的根磁盘后,将挂载该根磁盘并将其切换为根磁盘。然后启动将继续正常进行。因为此根是真实的文件系统(而不是内存映像),所以此处保存的更改是持久的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句