32blogby StudioMitsu
Archive12 min read

【2026年版】Yocto Project完全入門ガイド|組み込みLinux開発の第一歩

Yocto Projectの基礎から最初のビルドまでを完全解説。BitBake・レイヤー・レシピの仕組み、Ubuntu環境セットアップ、QEMUでの動作確認まで網羅。

Raspberry PiやJetsonに自分専用のLinuxを入れたい

IoT製品の開発でカスタムLinuxが必要になった

Yoctoって聞いたことあるけど、何から始めればいいかわからない

そんなあなたのために、この記事ではYocto Projectの基礎から実際のビルドまでを完全解説します。

組み込みLinuxの開発に10年以上携わってきた僕の経験から言うと、Yoctoは最初こそ敷居が高く感じますが、仕組みを理解すれば驚くほど柔軟です。この記事を読み終える頃には、あなたも最初のLinuxイメージをビルドできるようになっているはずです。

この記事でわかること

  • Yocto Projectとは何か、なぜ必要なのか
  • BitBake、レイヤー、レシピの仕組み
  • 開発環境のセットアップ方法
  • 最初のLinuxイメージをビルドする手順
  • QEMUでの動作確認方法

Yocto Projectとは?5分でわかる概要

Yocto Projectは、組み込みデバイス向けにカスタマイズされたLinuxディストリビューションを作成するためのオープンソースプロジェクトです。

重要なのは、Yocto自体はOSではないということ。Yoctoは「Linuxを作るための道具箱」です。

Yoctoが解決する「組み込みLinuxの課題」

組み込みLinux開発には、以下のような課題があります:

  • ストレージが少ない(数MB〜数GB)→ 不要なパッケージを削る必要がある
  • CPUが非力(ARM Cortex-Aなど)→ 軽量化が必須
  • 特殊なハードウェア(独自ドライバ)→ カーネルのカスタマイズが必要
  • 長期サポート(10年以上使う製品も)→ 再現性のあるビルドが必要

Yoctoは、これらすべてを解決できる唯一の標準的なビルドシステムです。

Buildroot / OpenWRTとの違い

項目YoctoBuildrootOpenWRT
柔軟性非常に高い中程度ルーター特化
学習コスト高い低め低め
商用サポート豊富限定的限定的
採用企業Intel, NXP, TI, Sony中小企業が多いネットワーク機器
パッケージ管理RPM/DEB/IPKなしOPKG

結論: 商用製品やIoTデバイスを開発するなら、Yoctoを学んでおいて損はありません。大手半導体メーカーのSDKは、ほぼすべてYoctoベースです。

どんな企業・製品で使われているか

  • Intel:Edison、Minnowboardなど
  • NXP:i.MXシリーズの公式BSP
  • Texas Instruments:Sitaraプロセッサ向け
  • Sony:デジタルカメラ、オーディオ機器
  • Automotive Grade Linux (AGL):車載Linuxの標準

Yoctoを構成する4つの基本要素

Yoctoを理解するには、以下の4つの概念を押さえておく必要があります。

① Poky(リファレンスディストリビューション)

Pokyは、Yocto Projectが提供するリファレンス実装です。「ひな形」だと思ってください。

Yoctoを始めるときは、まずPokyをダウンロードするところから始まります。Pokyには、BitBake、基本レイヤー、サンプルイメージなど、開発に必要なものが一式含まれています。

② BitBake(ビルドエンジン)

BitBakeは、Yoctoのビルドを実行するエンジンです。Makefileの代わりに「レシピ」を読み込み、依存関係を解決しながらビルドを進めます。

bash
# 最小構成のLinuxイメージをビルド
$ bitbake core-image-minimal

# 特定のパッケージだけビルド
$ bitbake busybox

# パッケージの情報を表示
$ bitbake -e busybox | grep ^PV=

③ レイヤー(Layers)

レイヤーは、関連するレシピや設定をまとめたディレクトリです。Yoctoの最大の特徴は、この「レイヤー構造」です。

  • meta:OpenEmbeddedのコアレイヤー
  • meta-poky:Poky固有の設定
  • meta-raspberrypi:Raspberry Pi向けBSP
  • meta-mylayer:自分のカスタマイズ用

レイヤーを積み重ねることで、ベースを壊さずにカスタマイズできます。

④ レシピ(Recipes)

レシピは、特定のソフトウェアをビルドする方法を記述した.bbファイルです。

bash
# 例:hello-world_1.0.bb
SUMMARY = "Hello World サンプルアプリケーション"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://hello.c"

S = "${WORKDIR}"

do_compile() {
    ${CC} ${CFLAGS} ${LDFLAGS} -o hello ${WORKDIR}/hello.c
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 hello ${D}${bindir}
}

開発環境の準備【Ubuntu推奨】

必要なスペック

項目最低推奨
CPU4コア8コア以上
メモリ8GB32GB以上
ディスク100GB(SSD推奨)300GB以上
OSUbuntu 22.04 LTSUbuntu 22.04/24.04 LTS

Yoctoのビルドは非常にリソースを消費します。できるだけ高スペックなマシンを用意しておくと、ビルド時間が大幅に短縮できます。

必須パッケージのインストール(Ubuntu 22.04)

bash
# 必須パッケージをインストール
$ sudo apt update
$ sudo apt install -y gawk wget git diffstat unzip texinfo gcc build-essential \
    chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
    iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
    python3-subunit mesa-common-dev zstd liblz4-tool file locales

# ロケール設定(en_US.UTF-8が必要)
$ sudo locale-gen en_US.UTF-8

Pokyのダウンロード

bash
# 作業ディレクトリを作成
$ mkdir -p ~/yocto && cd ~/yocto

# Pokyをクローン(scarthgap = 現行LTSブランチ、2027年頃までサポート)
$ git clone -b scarthgap git://git.yoctoproject.org/poky.git

# ダウンロード完了を確認
$ ls poky/
bitbake  documentation  meta  meta-poky  meta-yocto-bsp  oe-init-build-env  scripts

scarthgapはYocto 5.0のLTSブランチで、2027年頃までサポートが続く推奨ブランチです。プロダクション環境ではこのように具体的なリリース名を固定して使うのがベストプラクティスです。最新の非LTSリリースが必要な場合はstyhead(Yocto 5.1)も利用できますが、EOLが短いため注意してください。

最初のビルドを実行する

oe-init-build-envの実行

ビルド環境を初期化するスクリプトです。毎回ターミナルを開いたときに実行する必要があります。

bash
$ cd ~/yocto/poky
$ source oe-init-build-env build

# 実行後、自動的にbuildディレクトリに移動する
# 以下のメッセージが表示されればOK
You had no conf/local.conf file. This configuration file has therefore been
created for you...

sourceで実行することに注意してください。./での実行やbash経由では環境変数が引き継がれません。

local.confの設定

conf/local.confを編集して、ビルドの並列数を設定します。

bash
# conf/local.confを編集
$ nano conf/local.conf

# 以下を追加(CPUコア数に合わせて調整)
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"

# ターゲットマシン(デフォルトはqemux86-64)
MACHINE ?= "qemux86-64"

BB_NUMBER_THREADSはBitBakeが並列で実行するタスク数、PARALLEL_MAKEはmakeコマンドの並列数です。CPUコア数を設定するのが目安です。

bitbake core-image-minimalの実行

bash
# 最小構成のLinuxイメージをビルド
$ bitbake core-image-minimal

# 初回ビルドは1〜3時間かかります(スペックによる)
# 途中でエラーが出た場合は、もう一度同じコマンドを実行

初回ビルドでは、ソースコードのダウンロードからコンパイルまで全工程が走ります。キャッシュが効くので、2回目以降は大幅に速くなります。

ビルド時間の目安

環境初回ビルド再ビルド(変更なし)
8コア / 32GB RAM / SSD約1時間数分
4コア / 16GB RAM / SSD約2〜3時間約10分
4コア / 8GB RAM / HDD約4〜6時間約30分

ビルド結果をQEMUで動かす

runqemuコマンドの使い方

ビルドが成功したら、runqemuコマンドでエミュレータを起動できます。実機がなくてもLinuxイメージの動作確認ができるのが嬉しいところです。

bash
# QEMUでイメージを起動
$ runqemu qemux86-64

# GUIなしで起動する場合(SSHやシリアルで操作する場合)
$ runqemu qemux86-64 nographic

# 起動後、ログイン(ユーザー: root、パスワード: なし)
qemux86-64 login: root
root@qemux86-64:~#

動作確認のポイント

bash
# カーネルバージョンを確認
root@qemux86-64:~# uname -a
Linux qemux86-64 6.6.x-yocto-standard #1 SMP ...

# ファイルシステムを確認(最小構成なので非常にコンパクト)
root@qemux86-64:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        48M   32M   14M  70% /

# インストール済みパッケージを確認
root@qemux86-64:~# opkg list-installed

# 終了
root@qemux86-64:~# poweroff

おめでとうございます!これであなたも最初のYocto Linuxイメージをビルドできました。

次のステップ:カスタマイズへの道

Yoctoの基本がわかったら、次は実際のカスタマイズに挑戦しましょう。

  • レイヤーを追加する:meta-raspberrypiなどのBSPレイヤーを追加して実機向けビルドに挑戦
  • 自作レシピを作成する:自分のアプリをイメージに追加してみる
  • 実機で動かす:Raspberry PiやJetsonでブートさせてみる

まとめ:Yoctoを学ぶメリット

この記事では、Yocto Projectの基礎から最初のビルドまでを解説しました。

  • Yoctoは「組み込みLinuxを作るための道具箱」
  • Poky、BitBake、レイヤー、レシピの4つが基本要素
  • Ubuntu環境でbitbake core-image-minimalを実行すればビルドできる
  • QEMUで動作確認が可能

Yoctoは確かに学習コストが高いですが、一度マスターすればどんな組み込みデバイスにも対応できる汎用スキルになります。

特にIoT・車載・産業機器などの分野では、Yoctoスキルを持つエンジニアの需要は非常に高いです。ぜひこの記事をきっかけに、Yoctoの世界に飛び込んでみてください!


関連記事


※本記事は2026年1月時点の情報に基づいています。Yoctoのバージョンアップにより手順が変更される場合があります。最新情報はYocto Project公式サイトをご確認ください。