Linux カーネルはどのようにしてコンピューターのアーキテクチャを認識するのでしょうか?

Linux カーネルはどのようにしてコンピューターのアーキテクチャを認識するのでしょうか?

ではstart_kernel()、カーネルが最初に行うことの 1 つは を実行することですsetup_arch()setup_arch()はサポートされているすべてのアーキテクチャに対して定義されているため、適切なコマンド ラインへのポインタが渡されます。

このポインターはどのように初期化され、カーネルはいつどのようにコンピューターのアーキテクチャを取得するのでしょうか?

答え1

特定のカーネルは単一のアーキテクチャ用に構築されるため、 の実装も 1 つになりますsetup_archジェネリックstart_kernelそれを呼び出しますが、初期化されたポインタをコマンド ラインに渡すのではなく、ポインタへのポインタをコマンド ラインに渡します。setup_archそのポインタを初期化するのは の仕事の一部です。

例えば、x86にはグローバルcommand_line変数がある、およびそのsetup_arch そのアドレスを、start_kernel

したがって、カーネルは構築時にコンピューターのアーキテクチャを効果的に取得します。

関連情報