"root=" パラメータなしでカーネルを初期化する

"root=" パラメータなしでカーネルを初期化する

~からsystemd/fstab-generator.csystemdは、それをroot=マウントの唯一の設定ソースである必須カーネルパラメータとして扱います/sysroot。しかしカーネル/init/main.cそしてカーネル/init/do_mounts.cこれが本当かどうかは不明です。 Q:「root =」パラメータなしでカーネルの初期化をどのように実行しますか(そしてsystemdにそれをサポートするように指示しますか?)

望むより:https://github.com/systemd/systemd/issues/3551

答え1

存在するdo_mounts.c、この変数はコマンドライン引数(存在する場合)の値saved_root_nameに設定されます。root=値はパスに似た文字列です。カーネルによって渡される、プレフィックスはオプションですが、実際にはディスク上のパスと一致しないことがよくあります。引数がない場合に使用する値です。通常はゼロですが、システムバイナリに異なる値を挿入できます。このツールチェーンは、次のツールを含めるために使用されます。/dev/something/dev/root=ROOT_DEVutil-linux`rdevこれを行うが(x86のみ) 数年前に消えた

これはすべて、次の場合にのみ発生します。ファイルシステムの初期化または初期化プログラムルートマウントの責任はありません(initramfsを実行して/init呼び出す必要があります。mountこれはinitrdによって呼び出される必要がありますpivot_root)。

システム的な部分はわかりません。それにもかかわらず、ルートファイルシステムに対して読み書きでマウントする以外にsystemdができることはありません。

関連情報