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
便利だ。