みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

ラズベリーパイ3でYocto Project 3.0(Zeus)を試す

はじめに

Yocto Project 3.0(Zeus)がリリースされていたのでラズベリーパイ3で動かす。

構築手順

ソース取得

$ mkdir -p rpi-zeus/layers
$ cd rpi-zeus/layers
$ git clone git://git.yoctoproject.org/poky.git -b zeus
$ git clone git://git.yoctoproject.org/meta-raspberrypi -b zeus
$ git clone git://git.openembedded.org/meta-openembedded -b zeus
$ cd ../

環境変数設定

$ source layers/poky/oe-init-build-env build

自動的にビルドディレクトリに移動される。 これで、bitbake関連のツールが使用可能になる。

ツールの説明

今回のバージョンからbitbake以外のツールに関する説明が表示されるようになった。

Other commonly useful commands are:
 - 'devtool' and 'recipetool' handle common recipe tasks
 - 'bitbake-layers' handles common layer tasks
 - 'oe-pkgdata-util' handles common target package tasks

oe-pkgdata-utilははじめて見る。

パッケージのバージョンやファイルの一覧などを見ることができるっぽい。

レイヤ追加

$ bitbake-layers add-layer ../layers/meta-openembedded/meta-oe
$ bitbake-layers add-layer ../layers/meta-openembedded/meta-python
$ bitbake-layers add-layer ../layers/meta-openembedded/meta-networking
$ bitbake-layers add-layer ../layers/meta-raspberrypi

local.confの修正

MACHINEをraspberrypi3に設定し、UARTを有効化する。

MACHINE = "raspberrypi3"
DL_DIR ?= "${TOPDIR}/../downloads"

# enable uart
ENABLE_UART = "1"

# systemd
DISTRO_FEATURES_append = " systemd pam"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""

# connman
IMAGE_INSTALL_append = " connman \
                 connman-client \
"

ビルド

core-image-baseをビルドする。

$ bitbake core-image-base

書き込み

ddやEtcherで書き込む

ddの場合は次のようにする。

$ sudo dd if=tmp/deploy/images/raspberrypi3/core-image-base-raspberrypi3.rpi-sdimg of=/dev/sdX bs=100M 

/dev/sdXはSDのデバイスに適宜読み替え。

実行

zeusが起動した。

# cat /etc/os-release
ID="poky"
NAME="Poky (Yocto Project Reference Distro)"
VERSION="3.0 (zeus)"
VERSION_ID="3.0"
PRETTY_NAME="Poky (Yocto Project Reference Distro) 3.0 (zeus)"

まとめ

zeusも問題なく立ち上がった。