みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi3 yoctoでavahi

avahiを使うと、DHCPなどでIPアドレスが一定しない環境でも、hostname.localのように固定的な名前でネットワーク越しにアクセスできるようになる。

avahi自体はzeroconfのLinux向けの実装のことらしい。これが、yocto環境でも使えるということなので、試してみたが、ちょっとハマった。

問題

local.confに次のように追加してbitbakeを実行した。

IMAGE_INSTALL_append = " avahi"

すると次のようなエラーがでた。

ERROR: rpi-basic-image-1.0-r0 do_rootfs: avahi not found in the feeds (raspberrypi3 cortexa7t2hf-neon-vfpv4 cortexa7t2hf-neon cortexa7t2hf-vfp cortexa7hf-neon-vfpv4 cortexa7hf-neon cortexa7hf-vfp armv7vet2hf-neon-vfpv4 armv7vehf-neon-vfpv4 armv7vet2hf-neon armv7vehf-neon armv7vet2hf-vfp armv7vehf-vfp armv7at2hf-vfp armv7ahf-vfp armv6thf-vfp armv6hf-vfp armv5tehf-vfp armv5ehf-vfp armv5thf-vfp armv5hf-vfp noarch any all) in /home/XXXXXXX/work/yocto/rpi-morty/build/tmp/deploy/rpm.
ERROR: rpi-basic-image-1.0-r0 do_rootfs: This is often caused by an empty package declared in a recipe's PACKAGES variable. (Empty packages are not constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)
ERROR: rpi-basic-image-1.0-r0 do_rootfs: Function failed: do_rootfs
ERROR: Logfile of failure stored in: /home/XXXXXXX/work/yocto/rpi-morty/build/tmp/work/raspberrypi3-poky-linux-gnueabi/rpi-basic-image/1.0-r0/temp/log.do_rootfs.30111
ERROR: Task (/home/XXXXXXX/work/yocto/rpi-morty/poky/meta-raspberrypi/recipes-core/images/rpi-basic-image.bb:do_rootfs) failed with exit code '1'

つまり、avahiのパッケージはないということらしい。レシピはあるのに。

正解

local.confに次のように追加すると、解決する。

IMAGE_INSTALL_append = " avahi-daemon"

raspberrypi3では次のようにアクセスが可能になる。

$ ping raspberrypi3.local

便利だ。