はじめに
Yocto Project 3.3がリリースされていた。
リリースされた事自体は知っていたが、meta-raspberrypiをビルドする際に、bitbake-layers layerindex-fetch
がうまく動かなかったので、しばらく様子を見ていた。
具体的には下記のようなこと。
- OpenEmbedded Layer Indexとの接続に使用される証明書がエラーになった
- OpenEmbedded Layer Indexのhardknottブランチにmeta-raspberrypiが登録されていなかった
5/26時点で、これらの問題が解消されたことを確認した。
構築手順
ソース取得
下記のコマンドでソースを取得する。
$ mkdir -p rpi-hardknott $ cd rpi-hardknott $ git clone git://git.yoctoproject.org/poky.git -b hardknott
環境変数設定
$ source poky/oe-init-build-env build
自動的にビルドディレクトリに移動される。 これで、bitbake関連のツールが使用可能になる。
レイヤ追加
下記のコマンドでビルド対象にmeta-raspberrypi
を追加する。
$ bitbake-layers layerindex-fetch meta-raspberrypi
local.confの修正
MACHINEをraspberrypi4-64
に設定し、UARTを有効化する。
MACHINE = "raspberrypi4-64" 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
書き込み
bmaptoolで書き込む。
$ sudo bmaptool copy core-image-base-raspberrypi4.wic.bz2 /dev/sdX
/dev/sdX
は環境に応じて適宜読み替える。
起動
OSを書き込んだマイクロSDカードをラズベリーパイ4に挿入し起動する。
rootでログインしたあと下記のコマンドで環境を確認する。
# cat /etc/os-release ID=poky NAME="Poky (Yocto Project Reference Distro)" VERSION="3.3.1 (hardknott)" VERSION_ID=3.3.1 PRETTY_NAME="Poky (Yocto Project Reference Distro) 3.3.1 (hardknott)" # uname -a Linux raspberrypi4-64 5.10.31-v8 #1 SMP PREEMPT Fri Apr 23 15:16:49 UTC 2021 aarch64 GNU/Linux
hardknottが起動したことが確認できた。
まとめ
3.3がリリースされていた。
リリース直後はbitbake-layers layerindex-fetch
がうまく動作しないことがあるということがわかった。
ユーザーが使用する機能としては便利になった反面、正しく動作する環境を提供するコストは高くなったのかもしれない。
開発者の皆さんに感謝。