素の Yocto から Raspberry Pi 用に Linux を作った事が無かったのでメモ。他にもっといい記事が沢山あるけど、最小限の作業をまとめた。
- 目的: Recipe のテスト用に軽い Linux が欲しい。
- 作業環境: Ubuntu 16.04.3
meta-raspberrypi の記述の通り作業します。現在のリリースバージョンは "pyro" (2.3.1) というらしいので meta-raspberrypi と依存しているレイヤの pyro ブランチをあるディレクトリ (例: /home/yourname/src/poky) に clone。
git clone -b pyro git://git.yoctoproject.org/poky
git clone -b pyro git://git.openembedded.org/meta-openembedded
git clone -b pyro git://git.yoctoproject.org/meta-raspberrypi
開発環境を設定。引数なしだと build ディレクトリを作成し勝手に移動する。
source poky/oe-init-build-env
docs/layer-contents.md に対象 MACHINE や image が書いてあるので今回 raspberrypi3
と rpi-basic-image
を選んでみます。
conf/local.conf を編集して MACHINE を指定。例えばこんな風に。
MACHINE = "raspberrypi3"
conf/bblayers.conf を編集して依存 layer を指定。例えばこんな風に。poky には単一のレポジトリに複数レイヤが収録されているので一つ一つ指定する。
BBLAYERS ?= " \
/home/yourname/src/poky/poky/meta \
/home/yourname/src/poky/poky/meta-poky \
/home/yourname/src/poky/poky/meta-yocto-bsp \
/home/yourname/src/poky/meta-openembedded \
/home/yourname/src/poky/meta-raspberrypi \
"
ビルド開始 (50 分)
bitbake rpi-basic-image
SD カード作成 sdimg は 100M 程度
lsblk # SD カードデバイス名確認 (/dev/sdc とする)
time sudo dd if=tmp/deploy/images/raspberrypi3/rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdc bs=1M
トラブルシューティング
- bitbake で Fetcher failure が出た時は何度か bitbake をやり直すと上手く行った。
- raspberrypi3-64 と rpi-hwup-image の組み合わせはちゃんと動かなかった