Linuxカーネルは未知のカーネルパラメータをどのように処理しますか?

Linuxカーネルは未知のカーネルパラメータをどのように処理しますか?

たとえば、カーネルが理解できないパラメータをカーネルに渡すとします。blablaあるいは、eat=cakeカーネルがこれらの未知のパラメータをどのように処理するかについての伝統的なケースは、initLinuxカーネルが初期ユーザーとして起動したときに未知のパラメータをに渡すことです。 space(initramfs)initramfsに渡されます/initか?

答え1

~からカーネル文書:

カーネルはカーネルコマンドラインから引数を解析します--。引数が認識されず、aが含まれていない場合、.引数はinitに渡されます。引数は=initの環境に入り、他の引数はコマンドライン引数としてinitに渡されます。それ以降の内容はすべて--initにパラメータとして渡されます。

これは/initinitramfs にも当てはまります。ソースコードでは、initramfs/initと最終ルート/sbin/init(または他の場所)の両方が次のように呼び出されます。run_init_process同じ引数を使用します(実行ファイルへのパスである引数0を除く)。マニュアルで指示が見つかりませんが、カーネルインタフェースが安定しているため変更されません。

これは/linuxrcinitrdでは機能しません。この関数はパラメータなしで呼び出されますが、/init同じ環境を使用します/sbin/init。 procファイルシステムをマウントし、/proc/cmdlineカーネルコマンドライン引数を読み取るために読み取ることができます。

関連情報