質問: image vs zimage vs uimage それらの違いは何ですか?u-bootにはuimage形式のカーネルが必要であることは知っています。私が最初に使用するシステムは、ステージ1ローダーから起動し、次にu-bootを呼び出します。 u-bootを破棄し、ステージ1ローダーから直接起動したい。どのタイプのカーネルイメージを使用する必要がありますか?
回答: それらの違いは何ですか? image:汎用linuxカーネルバイナリイメージファイル。zimage:自己解凍型のlinuxカーネルイメージの圧縮バージョン。image:osタイプとローダー情報を含むu-bootラッパー(mkimageユーティリティによってインストールされる)を含むイメージファイル。 非常に一般的なプラクティス(たとえば、典型的なlinuxカーネルmakefile)は、zimageファイルを使用することです。 zimageファイルは自己解凍型なので(つまり、外部の解凍プログラムは必要ありません)、ラッパーは、実際には圧縮されていてもこのカーネルが「圧縮されていない」ことを示します。u-bootの作成者/管理者は、uimage内でzimageを使用する(広く普及している)使用を疑問視していることに注意してください。 実際、uimage内でzimageを使用するのはかなり愚かです。通常の(非圧縮)カーネルイメージを使用し、gzipのみを使用して圧縮し、これをmkimageのpoayloadとして使用することをお勧めします。このように、u-bootは、各カーネルイメージにさらに別の解凍プログラムを含める代わりに、解凍を行います。 ( https://lists.yoctoproject.org/pipermail/yocto/2013-october/016778.html から引用) どのタイプのカーネルイメージを使用する必要がありますか? プログラミングしたいものは何でも選択できます。 ストレージを節約するために、おそらく非圧縮イメージよりも圧縮イメージを選択する必要があります。 カーネル(おそらくlinuxカーネル)の実行には、カーネルイメージをメモリにロードするだけではないことに注意してください。アーキテクチャ(例:arm)およびlinuxカーネルバージョン(例:dtbの有無)に応じて、カーネル用に準備する必要があるレジスタとメモリバッファーがあります。 1つの例では、u-bootが実行するハードウェアの初期化もあり、複製する必要がありました。補遺 u-bootにはuimage形式のカーネルが必要であることは知っています。 これは、bootmコマンドのみを持つu-bootのすべてのバージョンで正確です。 しかし、最新バージョンのu-bootには、zimageを起動できるbootzコマンドを含めることもできます。