initrdを使わずにLVMにルートを置くことはできますか?

initrdを使わずにLVMにルートを置くことはできますか?

私はGentooベースシステムを設定しました(つまり、起動してログインしていくつかの操作を実行できます)。私のルートパーティションはLVM2仮想グループ(別の/bootパーティションを含む)にあります。起動するには、次のパラメータをカーネルに渡す必要があります。

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

明らかに、初期のRAMディスクを使用してルートをマウントする前に作業を実行します(私の推測ではLVMエントリをロードする)。 initrdが必要ないように、このコードをカーネル自体に入れる方法はありますか?そうでない場合、どのように直接initrdを作成できますか?

役に立つかもしれない追加の注意:initrdなしでLVM以外のルートをカーネルでコンパイルしようとしましたが、うまくいきました。その後、すべてをLVMの下に置こうとしましたが、コンピュータを起動できませんでした(LVMタスクを処理できなかったようです)。その後、genkernelそのオプションと一緒にツールを使用して、--lvm現在使用中の動作カーネルとinitrdを作成しました。

genkernel今、私はマシンがより速く起動するようにinitrdなしですべてを直接スキップしたいと思います(とにかく柔軟性は必要ありません)。

ベストアンサー1

簡単な答え:いいえ。 LVMが必要な場合はinitrdが必要です。

しかし、以前に他の人が言ったように、LVMはシステムの速度を遅くしたり悪いことをしないでください。

initrdを使用すると、カーネルをロードできます。カーネルがLVMドライブにある場合は、カーネルを含むバイナリをロードする前にLVM環境全体を設定する必要があります。

確認するinitrdのWikipediaエントリinitrdが何をするのか、そしてこれが必要な理由について説明します。

もう一つの注意:自分で仕事をしたいあなたの意図を理解してください。しかし、genkernelを使用しても手が汚れている可能性があります。 genkernel --menuconfig allを使用すると、デフォルトではツールサポートなしでカーネルを構築するのと同じようにすべてを設定できます。 genkernel は make bzImage、makemodules、makemodules_install の行を追加し、不快な initrd 操作を実行します。

明らかに説明されているようにinitrdを直接作成できます。ここにinitramfsがありますまたはここにinitrdがあります

おすすめ記事