initramfs 和實際的主檔案系統有什麼不同?

initramfs 和實際的主檔案系統有什麼不同?

initramfs是用於啟動系統的暫存檔案系統,掛載後將控制權交給根FS(檔案系統)。我不能只使用 ramfs 來做事情的原因是你保存的任何東西都不會保留,每次重新啟動時它都會被刪除。

但是,即使關閉電源,安裝的根檔案系統也可以寫入並記住內容。為什麼是這樣?為什麼 rootfs 可以記錄更改,而 initramfs 卻不能?

更重要的是,這個根檔案系統應該在哪裡?我正在查看根分割區,看到了uinitfs.image,但我沒有看到任何其他應該是我要掛載的根檔案系統的存檔。它物理存儲在哪裡?

答案1

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 映像,所以任何更改都會丟失。

一旦找到真正的根磁碟,就會安裝它並將根切換到此磁碟。然後引導繼續正常進行。因為這個根是一個真正的檔案系統(而不是記憶體映像),所以此處保存的變更是持久的。

相關內容