Kernel

是否可以在不使用 initrd 的情況下將 root 放入 LVM?

  • December 17, 2010

我剛剛建立了一個 Gentoo 基礎系統(這意味著我現在可以啟動並登錄並使用它做一些事情)。我的根分區位於 LVM2 虛擬組中(帶有單獨的/boot分區)。為了啟動,我需要將以下參數傳遞給核心:

root=/dev/ram0 real_root=/dev/vg/rootlv init=/linuxrc dolvm

顯然,它在掛載 root 之前使用初始 ramdisk 來做一些事情(我猜是載入 LVM 的東西)。有沒有辦法可以將此程式碼放入核心本身,這樣就不需要 initrd 了?如果沒有,我怎樣才能自己製作initrd?

補充一下,我曾嘗試在沒有 initrd 的情況下為非 LVM 根目錄編譯核心並且它執行良好,這可能會很有用。然後我試圖將整個東西放在 LVM 下,但無法啟動機器(我猜它無法處理 LVM 的東西)。然後我將該genkernel工具與該--lvm選項一起使用,它創建了我目前正在使用的工作核心和 initrd。

現在我想跳過genkernel並自己做所有事情,最好不使用 initrd,以便機器啟動得更快一些(無論如何我不需要靈活性)。

簡單的回答:不。如果你想要 LVM,你需要一個 initrd。

但正如其他人之前所說:LVM 不會減慢您的系統速度或以其他方式做任何壞事,它們只是允許您創建一個環境,​​允許您的核心載入並完成其工作。

initrd 允許載入核心:如果核心位於 LVM 驅動器上,則必須先建立整個 LVM 環境,然後才能載入包含核心的二進製文件。

查看有關 initrd 的 Wikipedia 條目,它解釋了 initrd 的作用以及您需要它的原因。

另一個注意事項:我明白你想自己做事的意思,但即使使用 genkernel,你也可以弄髒你的手。使用 genkernel –menuconfig all,您基本上可以設置所有內容,就好像您將在沒有工具支持的情況下完全建構您的核心一樣,genkernel 只需為您添加 make bzImage、make modules 和 make modules_install 行並執行討厭的 initrd 內容。

顯然,您可以自己建構 initrd,因為它在此處為 initramfs此處為 initrd概述。

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