「Raspberry PiにオリジナルのLinuxを入れたい」
「Raspbianではなく、完全にカスタマイズしたOSを作りたい」
「IoT製品のプロトタイプをRaspberry Piで開発したい」
そんな要望に応えるのがYocto Projectです。この記事では、Yoctoを使ってRaspberry Pi向けのカスタムLinuxイメージをビルドし、実機で起動するまでの手順を解説します。
🔧 必要なもの
- ビルド用PC:Ubuntu 22.04/24.04、メモリ16GB以上、ディスク200GB以上
- Raspberry Pi 4 または 5
- microSDカード:16GB以上(Class 10推奨)
- SDカードリーダー
- HDMIモニター + キーボード(動作確認用)
🛒 まだRaspberry Piをお持ちでない方へ
この記事の手順を実践するには、Raspberry Pi本体が必要です。
Amazonで購入できるおすすめ製品:
📌 この記事の前提条件
- Yoctoの基本(BitBake、レイヤー、レシピ)を理解している
- Pokyでcore-image-minimalのビルドが成功している
- Linuxの基本的なコマンド操作ができる
→ まだの方は「Yocto入門ガイド」を先にお読みください。
📚 この記事でわかること
- meta-raspberrypiレイヤーのセットアップ
- Raspberry Pi向けイメージのビルド設定
- SDカードへのイメージ書き込み方法
- 実機での起動確認
- Wi-Fi/SSH/GPIOの設定方法
全体の流れ
- Pokyと必要なレイヤーをダウンロード
- bblayers.confにレイヤーを追加
- local.confでMACHINEを設定
- bitbakeでイメージをビルド
- SDカードに書き込み
- Raspberry Piで起動確認
Step 1: 必要なレイヤーをダウンロード
# 作業ディレクトリを作成 $ mkdir -p ~/yocto && cd ~/yocto # Pokyをダウンロード(styhead = 最新安定版) $ git clone -b styhead git://git.yoctoproject.org/poky.git # meta-raspberrypiをダウンロード $ git clone -b styhead git://git.yoctoproject.org/meta-raspberrypi # meta-openembeddedをダウンロード(依存関係) $ git clone -b styhead git://git.openembedded.org/meta-openembedded # ディレクトリ構成を確認 $ ls meta-openembedded meta-raspberrypi poky
Step 2: ビルド環境を初期化
# ビルド環境を初期化 $ cd ~/yocto/poky $ source oe-init-build-env build-rpi # buildディレクトリに移動される # 初回実行時は conf/local.conf と conf/bblayers.conf が自動生成される
Step 3: レイヤーを追加
# meta-oeを追加(meta-raspberrypiの依存) $ bitbake-layers add-layer ../../meta-openembedded/meta-oe # meta-pythonを追加(任意、Python使う場合) $ bitbake-layers add-layer ../../meta-openembedded/meta-python # meta-networkingを追加(任意、ネットワーク機能使う場合) $ bitbake-layers add-layer ../../meta-openembedded/meta-networking # meta-raspberrypiを追加 $ bitbake-layers add-layer ../../meta-raspberrypi # レイヤー一覧を確認 $ bitbake-layers show-layers layer path priority ================================================================================ meta /home/user/yocto/poky/meta 5 meta-poky /home/user/yocto/poky/meta-poky 5 meta-yocto-bsp /home/user/yocto/poky/meta-yocto-bsp 5 meta-oe /home/user/yocto/meta-openembedded/meta-oe 6 meta-raspberrypi /home/user/yocto/meta-raspberrypi 9
Step 4: local.confを設定
conf/local.confを編集して、Raspberry Pi向けの設定を行います。
# conf/local.confを編集 $ nano conf/local.conf
以下の設定を追加・変更します:
# ======================================== # Raspberry Pi向け設定 # ======================================== # ターゲットマシンを指定 # raspberrypi4-64 : Raspberry Pi 4 (64bit) # raspberrypi5 : Raspberry Pi 5 # raspberrypi3-64 : Raspberry Pi 3 (64bit) MACHINE = "raspberrypi4-64" # ビルドの並列数(CPUコア数に合わせて調整) BB_NUMBER_THREADS = "8" PARALLEL_MAKE = "-j 8" # SDカードイメージを生成 IMAGE_FSTYPES = "wic.bz2 wic.bmap" # GPU メモリ割り当て(MB) GPU_MEM = "64" # シリアルコンソールを有効化(デバッグ用) ENABLE_UART = "1" # SSH を有効化 IMAGE_FEATURES += "ssh-server-dropbear" # root ログインを許可(開発用) EXTRA_IMAGE_FEATURES += "debug-tweaks" # ファームウェアを含める RPI_USE_U_BOOT = "1"
Raspberry Piのマシン設定一覧
| MACHINE設定 | 対応モデル | アーキテクチャ |
|---|---|---|
raspberrypi5 | Raspberry Pi 5 | 64bit (aarch64) |
raspberrypi4-64 | Raspberry Pi 4 | 64bit (aarch64) |
raspberrypi4 | Raspberry Pi 4 | 32bit (armhf) |
raspberrypi3-64 | Raspberry Pi 3 | 64bit (aarch64) |
raspberrypi3 | Raspberry Pi 3 | 32bit (armhf) |
raspberrypi2 | Raspberry Pi 2 | 32bit (armhf) |
raspberrypi0-2w-64 | Raspberry Pi Zero 2 W | 64bit (aarch64) |
Step 5: イメージをビルド
# 最小構成のイメージをビルド $ bitbake core-image-minimal # または、基本ツールを含むイメージ $ bitbake core-image-base # ビルド時間の目安(初回) # - 8コア/32GB RAM: 約1.5〜2時間 # - 4コア/16GB RAM: 約3〜4時間
ビルド完了後の確認
# 生成されたイメージを確認 $ ls tmp/deploy/images/raspberrypi4-64/ core-image-minimal-raspberrypi4-64.wic.bz2 # SDカードイメージ(圧縮) core-image-minimal-raspberrypi4-64.wic.bmap # 高速書き込み用マップ Image # カーネルイメージ bcm2711-rpi-4-b.dtb # デバイスツリー
Step 6: SDカードに書き込み
方法1: bmaptoolを使う(推奨・高速)
# bmaptoolをインストール $ sudo apt install bmap-tools # SDカードのデバイス名を確認(例: /dev/sdb) $ lsblk # bmaptoolで書き込み(/dev/sdXは実際のデバイス名に置き換え) $ cd tmp/deploy/images/raspberrypi4-64/ $ sudo bmaptool copy core-image-minimal-raspberrypi4-64.wic.bz2 /dev/sdX # 書き込み完了後、SDカードを安全に取り外し $ sync
方法2: ddを使う(従来方式)
# 圧縮を解凍しながら書き込み $ bzcat core-image-minimal-raspberrypi4-64.wic.bz2 | sudo dd of=/dev/sdX bs=4M status=progress # 同期 $ sync
⚠️ 注意
/dev/sdXは必ずSDカードの正しいデバイス名に置き換えてください。
間違えるとPCのハードディスクを上書きしてしまいます!lsblkコマンドで確認してから実行してください。
Step 7: Raspberry Piで起動
- SDカードをRaspberry Piに挿入
- HDMIモニターとキーボードを接続
- 電源を接続して起動
- ログインプロンプトが表示されたら
rootでログイン(パスワードなし)
Poky (Yocto Project Reference Distro) 4.3 raspberrypi4-64 ttyAMA0 raspberrypi4-64 login: root root@raspberrypi4-64:~# uname -a Linux raspberrypi4-64 6.6.x-yocto-standard #1 SMP ... aarch64 GNU/Linux root@raspberrypi4-64:~# cat /etc/os-release NAME="Poky (Yocto Project Reference Distro)" VERSION="4.3 (styhead)"
🎉 おめでとうございます!Yoctoでビルドした自作LinuxがRaspberry Piで起動しました。
追加設定: Wi-Fi / SSH / GPIO
Wi-Fiを有効化する
conf/local.confに以下を追加:
# Wi-Fiドライバとツールを追加 IMAGE_INSTALL:append = " linux-firmware-bcm43455 wpa-supplicant" # Wi-Fi SSIDとパスワードを設定(任意) # 本番環境では別の方法で設定することを推奨
SSHでリモートログイン
すでにIMAGE_FEATURES += "ssh-server-dropbear"を設定済みなら、SSHが有効です。
# IPアドレスを確認(有線LAN接続の場合) root@raspberrypi4-64:~# ip addr show eth0 # 別のPCからSSH接続 $ ssh root@192.168.1.xxx
GPIOを操作する
# GPIOツールを追加(local.confに追記) IMAGE_INSTALL:append = " libgpiod libgpiod-tools" # 再ビルド後、GPIO操作が可能 root@raspberrypi4-64:~# gpioinfo root@raspberrypi4-64:~# gpioset gpiochip0 17=1 # GPIO17をHIGHに
よくあるトラブルと解決方法
❌ 画面が真っ暗、起動しない
原因:HDMIの出力設定が合っていない
解決:local.confに以下を追加
HDMI_FORCE_HOTPLUG = "1" HDMI_GROUP = "2" HDMI_MODE = "82" # 1080p 60Hz
❌ Kernel panic – not syncing
原因:カーネルとルートファイルシステムの不整合
解決:イメージを再ビルドし、再度SDカードに書き込み
❌ No such file or directory: wic.bz2
原因:IMAGE_FSTYPESにwicが含まれていない
解決:local.confにIMAGE_FSTYPES = "wic.bz2 wic.bmap"を追加
まとめ
この記事では、Yocto ProjectでRaspberry Pi向けのカスタムLinuxをビルドする手順を解説しました。
- ✅ meta-raspberrypiレイヤーでRaspberry Piをサポート
- ✅ MACHINE設定でターゲットモデルを指定
- ✅ wic形式でSDカードイメージを生成
- ✅ bmaptoolで高速にSDカードに書き込み
これで、Raspbianとは異なる完全にカスタマイズされたLinuxをRaspberry Piで動かせるようになりました。不要なパッケージを削除したり、独自のアプリを組み込んだり、可能性は無限大です!
🚀 次のステップ
🛒 この記事で使用した機材(Amazonで購入可)
- Raspberry Pi 4 Model B(8GB)
- microSDカード 64GB(SanDisk Extreme)
- USB-C電源アダプター(5V/3A)
- Raspberry Piケース(ファン付き)


コメント