Yocto プロジェクトは、他のいくつかのオープン ソース プロジェクトを利用する組み込み Linux ディストリビューション ビルダーです。 Linux ディストリビューションは、ソフトウェア パッケージとポリシーのコレクションであり、何百もの Linux ディストリビューションが利用可能です。これらのほとんどは組み込みシステム用に設計されておらず、目標のフットプリント サイズと機能の微調整を達成するために必要な柔軟性に欠けているだけでなく、リソースに制約のあるシステムにもうまく対応できません。
対照的に、Yocto プロジェクト自体はディストリビューションではありません。特定の組み込みシステム用に設計された Linux ディストリビューションを作成できます。 Yocto プロジェクトは、Poky と呼ばれる組み込み Linux のリファレンス ディストリビューションを提供しています。
Yocto プロジェクトのベースには、BitBake および OpenEmbedded-Core (OE-Core) プロジェクトがあります。これらは一緒になって、組み込み Linux 製品に必要なコンポーネントをビルドする Yocto ビルド システムを形成します。
- ブートローダー イメージ
- Linux カーネル イメージ
- ルート ファイル システム イメージ
- アプリケーション開発用のツールチェーンとソフトウェア開発キット (SDK)
これらにより、Yocto Project はシステム開発者とアプリケーション開発者の両方のニーズをカバーします。 Yocto プロジェクトがブートローダー、Linux カーネル、およびユーザー空間アプリケーションの統合環境として使用される場合、それをシステム開発と呼びます。
1. Linux カーネル menuconfig を開くには (ここでは meta-intel レイヤーを使用しています)、次のコマンドを実行します。
bitbake -c menuconfig linux-intel
yocto カーネルを使用している場合は、次のようになります:
bitbake -c menuconfig linux-yocto
2. bbappend レシピが bitbake によって解析されているかどうかを確認するには、次のコマンドを実行します:
bitbake-layers show-appends
3. ルート ファイル システムに特定のパッケージを追加する。
local.conf ファイルを開き、以下にレシピ名を追加します:
IMAGE_INSTALL += "recipe-name"
例:
IMAGE_INSTALL += "libusb"
または
IMAGE_INSTALL_append = "libusb"
このパッケージを特定の画像だけに含めたい場合は、
IMAGE_INSTALL_append_pn-[image-name] = "recipe-name"
例:
IMAGE_INSTALL_append_pn-core-image-sato = "libusb"
4. ルート ファイル システムにカーネル モジュールを含めるには:
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-module-cp210x"
5. 起動時にモジュールを自動的にロードするには:
KERNEL_MODULE_AUTOLOAD += "cp210x"
6. 利用可能な画像のリストを確認するコマンド。
ソース ディレクトリで次のコマンドを実行します:
$ ls meta*/recipes*/images/*.bb
7. 生成されたイメージを QEMU で実行するコマンド:
$ runqemu [machine] [zImage] [filesystem]
例:
$ runqemu qemux86 core-image-minimal
8. 利用可能なマシンを一覧表示するコマンド:
$ ls meta*/conf/machine/*.conf
9. 特定の画像の SDK を生成するコマンド:
$ bitbake [imagename] -c populate_sdk
例:
$ bitbake core-image-full-cmdline -c populate_sdk
10. 実行されたすべてのタスクが保存される順序:
[build directory]/tmp/work/[machine toolchain]/[package name]/[package version]/temp/log.task_order
例:
build/tmp/work/corei7-64-poky-linux/grep/3.1-r0/temp/log.task_order
11. ドット構文で依存関係ツリー情報を生成します:
$ bitbake -g core-image-minimal
上記のコマンドは、依存関係グラフを生成します。 Bitbake は pn-buildlist、recipe-depends.dot、および task-depends.dot ファイルを作成します。
- pn-buildlist :ビルドするパッケージの簡単なリスト
- recipe-depends.dot :レシピ間の依存関係を表示
- task-depends.dot :タスク間の依存関係を示します。
12. 環境変数を表示します:
$ bitbake -e [recipe/target name]
例:
$ bitbake -e core-image-minimal | grep ^SDKMACHINE
13. シェルタスクの詳細出力を有効にします:
$ bitbake -v [recipe/target name]
例:
$ bitbake -v core-image-minimal
14. エラーが発生しても bitbake を続行します。これは、ビルドを開始して昼食に出かけ、インターネット経由でファイルを取得できない場合に bitbake を停止させたくない場合に役立ちます。
$ bitbake -k [target]
例:
$ bitbake -k core-image-minimal
15. sstate-cache が使用可能な場合でも、ターゲットを強制的に実行します。
$ bitbake -f [target/recipe name]
例:
$ bitbake -f busybox