依存していると思います。さまざまな種類の CPU アーキテクチャで、さまざまな方法を使用して情報を Linux カーネルに渡します。もちろん、Linux カーネルはブートローダー パス情報がなくても正常に起動できますが、ルート デバイス名、コンソール デバイス、メモリ サイズ、および有効化/無効化するパラメータなど、Linux カーネルで正しく静的に設定する必要があります。 Linux カーネルのいくつかの機能。
ブートローダがLinuxカーネルに様々な情報(パラメータ)を渡す必要がある理由は、柔軟な考察だと思います。このケースを考えてみてください。1 つの Linux カーネルを 2 つのボードで同じ CPU を使用して共有することができますが、周辺モジュールは異なります。
UBoot が情報を Linux カーネルに渡す例をいくつか示します。
(1) PowerPC CPU の場合、最近では DTB (Device Tree Blob) ファイルを使用して UBoot から Linux カーネルに詳細情報を渡します。UBoot と DTB をファームウェアと見なし、Linux カーネルでは、1 つのオープン ファームウェア (OF) インフラストラクチャを採用しています。UBoot の「bootm」コマンドをご存知かもしれませんが、bootm には 3 つのパラメータを指定できます。1 つ目は uImage アドレス、2 つ目は initrd アドレス、3 つ目は dtb アドレスです。
(2) 以前は、bootargs を使用して Linux カーネルに情報を渡していました。また、UBoot には gd/bd 構造があり、Linux カーネルに情報を渡すこともできます。ただし、この方法で渡される情報は制限されており、DTB とは異なります。
上記の情報があなたの質問を理解するのに役立つことを願っています.