web-dev-qa-db-ja.com

Linuxカーネルは未知のカーネルパラメータで何をしますか?

おそらく、カーネルに理解できないパラメータを渡しました。たとえば、blablaeat=cake、カーネルはこれらの未知のパラメーターで何をしますか、従来のケースでは、Linuxカーネルが初期のユーザースペース(initramfs)で開始する場合、未知のパラメーターをinitに渡します。 /init initramfsで?

2
direprobs

カーネルドキュメント から:

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

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

これは、initrdの/linuxrcには適用されないことに注意してください。これは引数なしで呼び出されますが、/initおよび/sbin/initと同じ環境で呼び出されます。 procファイルシステムをマウントし、/proc/cmdlineを読み取って、カーネルコマンドライン引数を確認できます。