私は組み込みLinuxに初めて触れました。私たちはpokyを使ってシステムを構築します。私たちはカーネルを構築するためにbitbake linux-imxコマンドを使います。一部のファイル zImage、rootfs、uboot、および sdcard イメージを生成します。 SDカードイメージをコピーしてカスタムボードでLinuxを実行するだけです。私の質問rootfsとzImageには実際に何が含まれていますか?
答え1
各ファイルの機能を理解するには、MPUの起動方法を理解する必要があります。
あなたの質問で私が理解しているように、あなたはNXP(Freescale)i.MXマイクロプロセッサスイートを使用しています。これには、基本的なシステム設定(メモリインタフェース、クロックツリーなど)を実行し、ブートメディア(焼かれたOTPビットまたはGPIOベース)を検索し、u-bootでブートローダを見つけ、データシートをロードする小さなROMローダが含まれます。されています。そして起動してください。 U-bootはより多くのインターフェイス(イーサネットなど)を初期化し、カーネルに渡す必要があるパラメータ(画面設定、コンソール、ネットワーク設定(NFSを使用している場合))を見つけ、カーネルをDDRにコピーし、すべてのパラメータ変数を渡します。カーネルはすべてのドライバをロードし、すべてのライブラリ、アプリケーションなどを含むrootfsを検索します。その後、カーネルはすべてのシステムを初期化し、アプリケーションを起動するinitスクリプトを起動します。
- u-boot は、ROM ブートローダの後で最初に起動するものです。 MPUにオペレーティングシステム(マイクロコントローラなど)なしでベアメタルコードを実行させるには、それを独自のコードに置き換えることができます。
- zImageは自動抽出Linuxカーネルイメージの圧縮バージョンです。
- rootfsは、ホームフォルダを含むすべてのアプリケーション、ライブラリ、およびほとんどすべてを含むルートファイルシステムです。
- sdcard画像は上記のすべてで、ddを介してカードにコピーできます。コピーすると、カーネルとデバイスツリーを含むFATパーティションとrootfsを持つEXTパーティションが表示されます。 u-bootはFATゾーンの前にパーティションが解放されています(もしi.MX6を使っているなら0x80000です)。それはあなたの人生をより簡単にするために存在します。
答え2
zImage
コンパイルされたカーネルの実際のバイナリイメージ。これがブートローダがロードして実行しようとするものです。 (私の考えでは、組み込みLinuxではどういうわけかブートセクタに直接書き込むと思います。詳細については、組み込みLinux配布マニュアルを参照してください。)rootfs
実際のルートファイルシステムがマウント可能な状態でカーネルを起動するために必要なすべてを含む、いわゆるINITial RamDisk(initrdとも呼ばれる)イメージ。uboot
組み込みLinuxで使用されるブートローダです。デフォルトでは、デフォルトの入出力システム(BIOS)に起動方法を知るために、zImage
ルートファイルシステムが見つかる場所を知らせるオプションを使用して実行するように指示します。zImage
推測する必要がある場合は、最終イメージに最初の3つのファイルを手動で追加する必要がなくなっても、実際のSDカードイメージを作成する過程でこれらのファイルがすべて生成される危険があります。