日本でもようやくラズベリーパイゼロ(RPi0)が入手しやすくなったので、あきばお〜の店頭で入手してみた。
RPi0はmeta-raspberrypiでも対応済みなので、早速bitbakeをしてみる。
今回購入したのはベースキットなので、ピンヘッダからケーブルから一通りついているので、モニタやらキーボードを接続することもできるが、ピンヘッダを実装してUARTでシリアルコンソールからログインする。
ベース環境の取得
$ git clone git://git.yoctoproject.org/poky.git -b morty $ cd poky $ git clone git://git.yoctoproject.org/meta-raspberrypi -b morty
使用するのはmortyブランチ。
oe-init-build-envの読み込み
下記を実行する。
$ cd ~/rpi0 $ source poky/oe-init-build-env
これにより、クロスコンパイルに必要な環境変数が設定され、ビルドディレクトリに移動される。
meta-raspberrypiをビルド対象に追加
次のコマンドを実行する。
$ bitbake-layers add-layer ../poky/meta-raspberrypi
local.confの修正
次の行をlocal.confの先頭の方に追加する。
MACHINE ?= "raspberrypi0"
MACHINEはraspberrypi0
に設定
動作確認
bitbakeの実行
$ bitbake rpi-basic-image
成功すると次のように表示される。
Parsing recipes: 100% |##########################################| Time: 0:00:27 Parsing of 884 .bb files complete (0 cached, 884 parsed). 1338 targets, 73 skipped, 0 masked, 0 errors. NOTE: There are 1 recipes to be removed from sysroot raspberrypi0, removing... NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.32.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "universal" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi0" DISTRO = "poky" DISTRO_VERSION = "2.2.1" TUNE_FEATURES = "arm armv6 vfp arm1176jzfs callconvention-hard" TARGET_FPU = "hard" meta meta-poky meta-yocto-bsp = "morty:924e576b8930fd2268d85f0b151e5f68a3c2afce" meta-raspberrypi = "morty:5de45f285e15770300f5b496ff16dec5c6c44e4a" Initialising tasks: 100% |#######################################| Time: 0:00:05 NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 2163 tasks of which 2128 didn't need to be rerun and all succeeded.
SDカードの作成
$ sudo dd if=tmp/deploy/images/raspberrypi0/rpi-basic-image-raspberrypi0.rpi-sdimg of=/dev/sdb bs=40M
/dev/sdb
はSDカードのデバイス。環境により変更が必要な場合がある。
実行
Poky (Yocto Project Reference Distro) 2.2.1 raspberrypi0 /dev/ttyAMA0 raspberrypi0 login:
若干、うちのUSB-TTL変換ケーブルの動作が怪しかったが、無事起動した。 minicomを後から起動すると調子が良いみたいだった。