Yocto Project は、組み込み Linux ディストリビューションを作るためのビルドフレームワークです。既製の Linux ディストリビューションをインストールする仕組みではなく、対象ハードウェア・必要パッケージ・設定・起動方式に合わせて Linux image を生成します。
重要な用語
| 用語 | 意味 |
|---|---|
| Poky | Yocto Project のリファレンスディストリビューション |
| BitBake | Yocto/OpenEmbedded のタスク実行エンジン |
| Recipe | ソフトウェアの取得・ビルド・インストール方法を記述した .bb
|
| Layer | recipe や設定をまとめた単位 |
| MACHINE | 対象ハードウェア定義 |
| DISTRO | ディストリビューション方針 |
| Image | rootfs、kernel、boot 設定などを含む成果物 |
| SSTATE | task 結果を再利用する shared state cache |
| DL_DIR | ソースコードや tarball を保存する download cache |
Yocto の基本構造
source code / recipe / config
↓
BitBake
↓
tasks: fetch, unpack, patch, configure, compile, install, package, rootfs
↓
deploy/images/${MACHINE}/
↓
kernel / rootfs / wic / manifest / qemuboot.conf
なぜ Docker 化するか
Yocto はホスト OS のツールチェーン、Python、locale、ファイル権限、ディスク I/O の影響を強く受けます。Docker 化すると、ビルド環境を固定しやすくなります。
Docker化のメリット
- ホスト OS を汚さない
- 依存パッケージを Dockerfile に固定できる
- 複数 PC / CI で再現しやすい
- cache と workspace を分離しやすい
ただし、Docker コンテナ内で QEMU を動かす場合は、/dev/net/tun や権限設定に注意が必要です。確認用途では runqemu ... slirp ... を使うと簡単です。
qemux86-64 とは
qemux86-64 は、Yocto が用意している QEMU 用の仮想 x86_64 machine 定義です。
MACHINE = "qemux86-64"
これは物理ハードではなく、QEMU 上の仮想 PC 向けに Linux image を作るための設定です。
初回は Raspberry Pi 4 ではなく qemux86-64 で確認すると、問題を分離できます。
qemux86-64 で確認できること
- Docker コンテナ内で BitBake が動くか
- core-image-minimal がビルドできるか
- kernel/rootfs が生成されるか
- QEMU で boot/login できるか
qemux86-64 では確認できないこと
- Raspberry Pi 4 の boot firmware
- Device Tree
- GPIO/I2C/SPI/UART 実機挙動
- Wi-Fi/Bluetooth
- GPU/VPU
- SD/eMMC 書き込み・起動問題
これらは Raspberry Pi 4 用 BSP と実機で確認します。
推奨学習順
1. qemux86-64 + core-image-minimal
2. QEMU 起動確認
3. 自作 layer / recipe 追加
4. Raspberry Pi 4 BSP 追加
5. Raspberry Pi 4 image 生成
6. 実機起動
7. service / update / debug / recovery