是否可以在不使用 initrd 的情況下將 root 放入 LVM?
我剛剛建立了一個 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概述。