web-dev-qa-db-ja.com

「コマンドライン」はどのようにしてブートローダー(grub)からカーネル(linux)に渡されますか?

Grub(またはその他)は、特定のパラメーターを変更するために、コマンドライン引数をLinuxカーネルに送信します。

カーネルが起動する前に(そして潜在的にそれを変更する前に)、この情報を確認したい場合、どこを見ますか?これは、カーネルが検索することを知っているメモリ内の特定の場所に保存されていますか?

カーネルが起動すると/ procエントリの下に配置されることは理解していますが、これがどのように機能するかについてのOS以前の情報を探しています(おそらくこれは間違った場所ですか?)

これは、ブートローダーがシーケンス内の次のエルフ(一般的にはカーネル)に情報を渡す方法に関する質問です。これはグラブ設定とは何の関係もありません

2
Brydon Gibson

Grubは マルチブート仕様 を実装します。カーネルをロードして制御を渡すと、メモリ内の 情報構造 へのポインタが渡されます。その構造のフィールドの1つは、コマンドラインです。

Linuxカーネルには独自の ブートプロトコル がありますが、 コマンドライン も同様の方法で処理されます。ブートローダーはそれをメモリに残し、カーネルのさまざまなフィールドに入力します。カーネルがそれを見つけることを可能にするデータ構造。

4
Stephen Kitt

ブートローダーがハウスキーピングのブートロードを実行した後、通常はinitrd.imgまたはinitramfsに基づいて最小限のOS環境を開始します。 grubファイルに表示されるカーネルパラメータは、この最小限の環境の後に起動するカーネルに送信されます。通常、mkinitrdを実行するときのすべての目的と目的で、/ etcから選択された適切な設定がこのinitrdイメージの構成に使用されます。

通常の起動シーケンスが発生するまでに、初期環境はピボットされ、通常のカーネルが使用されます。注意すべき点の1つは、initrdで起動されたドライバーは、通常の実行に常駐し続けることができるため、大きな頭の傷の原因となる可能性があります。

0
placid chat