Linux-Kernel

在 Linux 核心中設置 initrd/initramfs

  • May 9, 2020

我的理解是 initrd/initramfs 在 RAM 中建立了一個文件系統來幫助核心初始化。我有以下疑問;

(1) initrd/initramfs 是否由引導載入程序設置(例如:GRUB 2)?

(2) 這個 initrd/initramfs 設置是否發生在核心初始化頁表之前?

(3) 這是暫時的嗎?核心初始化成功後這個文件系統會發生什麼?

(1) 在一個initramfs中,通常核心和初始文件系統存在於同一個文件中。因此,如果引導載入程序必須知道核心文件在哪裡,它也知道 initramfs 在哪裡。反之亦然。如果 initramfs 是一個單獨的文件,那麼它必須被引導載入程序引用並作為參數傳遞給核心;

引導載入程序將控制權傳遞給核心,核心在初始化所有需要準備的內容時提取 initramfs 並將控制權傳遞給 init(在 initramfs 內)。

(2) 核心准備好虛擬記憶體子系統後,提取initramfs;

(3) 通常在 initramfs 完成它的工作(即掛載系統的根文件系統)後,會採取一組微妙的步驟“移動”到新掛載的根文件系統,並將 initramfs 的內容從 RAM 中刪除(顯式地通過執行“rm”);

我建議閱讀: https ://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

引用自:https://unix.stackexchange.com/questions/585498