はじめに
技適が通り、やっと国内で流通し始めたラズベリーパイ4が手に入ったので、Yocto Projectで動かしてみる。 発熱がすごいらしいのでファン付きのケースも同時に購入した。
構築手順
ソース取得
依存関係がいつの間にか改善されている。最小限の構成であればmeta-openembeddedは不要となったようだ。
$ 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 $ cd ../
環境変数設定
$ source layers/poky/oe-init-build-env build
自動的にビルドディレクトリに移動される。 これで、bitbake関連のツールが使用可能になる。
レイヤ追加
こちらもmeta-raspberrypiのみの追加で行ける。
$ bitbake-layers add-layer ../layers/meta-raspberrypi
local.confの修正
MACHINEをraspberrypi4
に設定し、UARTを有効化する。
MACHINE = "raspberrypi4" 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.1 (zeus)" VERSION_ID="3.0.1" PRETTY_NAME="Poky (Yocto Project Reference Distro) 3.0.1 (zeus)"
メモリもきちんと4G見えているようだ。
# free total used free shared buff/cache available Mem: 3999780 86908 3871760 8796 41112 3849068 Swap: 0 0 0
きちんと動かしてないけど、USB3.0デバイスも認識している様子。
~# lsusb Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 002: ID 0480:0200 Toshiba America Inc External Disk Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub # lsusb -t /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
USB3.0のHDDを接続したらきちんとBus 02の下にHDDが入った。
まとめ
大体問題なく動作しているようだ。