はじめに
2022/10/24付でYoctoProjct 4.1 langdaleがリリースされていたので試す。
ターゲットはラズベリーパイ4
環境を構築する
作業環境
$ mkdir -p ~/yocto/rpi-langdale $ cd ~/yocto/rpi-langdale
pokyの取得
$ git clone -b langdale git://git.yoctoproject.org/poky.git
環境変数の設定
$ source poky/oe-init-build-env
meta-raspberrypiの取得
執筆時点(2022/11/08)ではlangdaleブランチはlayerindexに登録されていない様子。 一旦masterブランチを取得して切り替える。
$ bitbake-layers layerindex-fetch meta-raspberrypi -b master $ pushd ../poky/meta-raspberrypi $ git switch -c langdale origin/langdale $ cd ../meta-openembedded $ git switch -c langdale origin/langdale $ popd
local.confを編集
conf/local.conf
に下記の部分を追加
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 \ "
bitbake実行
$ bitbake core-image-base
エラー発生
下記のようなエラーが発生した。
ERROR: Nothing RPROVIDES 'linux-firmware-rpidistro-bcm43455' (but /home/mickey/yocto/rpi-langdale/poky/meta/recipes-core/packagegroups/packagegroup-base.bb RDEPENDS on or otherwise requires it) linux-firmware-rpidistro RPROVIDES linux-firmware-rpidistro-bcm43455 but was skipped: because it has a restricted license 'synaptics-killswitch'. Which is not listed in LICENSE_FLAGS_ACCEPTED
Upgrading to Yocto Langdaleに情報がある。
The linux-firmware-rpidistro package provided by the meta-raspberrypi layer has components licensed under more restrictive terms. This license must be explicitly enabled. Read more at https://meta-raspberrypi.readthedocs.io/en/latest/ipcompliance.html.
リンクを辿ると、WiFi/BT firmwareのBLOBのライセンスである「Synapticsライセンス」が法的リスクをはらんでいるっぽいので、 取り扱いを厳密にするということらしい。このリスクを受け入れる場合は、local.confかdistro.confに下記を追加すればビルド可能になるとのこと。
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
関連パッケージを確認
tmp/deploy/licenses/core-image-base-raspberrypi4-64/license.manifest
でSynapticsライセンスが適用されるパッケージを確認する。
PACKAGE NAME: linux-firmware-rpidistro-bcm43456 PACKAGE VERSION: 20210315-3+rpt7 RECIPE NAME: linux-firmware-rpidistro LICENSE: Synaptics-rpidistro
bcm43456のファームウェアだということがわかる。
書き込み
./tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64.wic.bz2
が書き込み用イメージとなる。
これをbmaptoolでマイクロSDカードに書き込む。
$ sudo bmaptool copy ./tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64.wic.bz2 /dev/sdX
/dev/sdX
は適宜読み替え。
起動確認
マイクロSDカードをラズパイ4に挿入し電源を投入する。
root@raspberrypi4-64:~# cat /etc/os-release ID=poky NAME="Poky (Yocto Project Reference Distro)" VERSION="4.1 (langdale)" VERSION_ID=4.1 PRETTY_NAME="Poky (Yocto Project Reference Distro) 4.1 (langdale)" DISTRO_CODENAME="langdale"
まとめ
langdaleをためした。
pokyの方は特に躓く点はなかったが、 meta-raspberrypiのlangdaleブランチはlayerindexにまだ登録されていないので、 若干のワークアラウンドが必要。
また、少なくともラズベリーパイ4のWiFi/BTのファームウェアのライセンスにには法的リスクが報告されているため、 使用するためにはそのリスクを受け入れたという表明が必要になっている。
おそらく個人使用時にはあまり関係ないと思われるが要注意。