通常のレシピによるインストールではrootfsに反映されない
以前は、各レシピでdo_install
と FILES_%{PN}
で/lib/firmware
にファイルを追加すれば、
問題なくrootfsに反映されていたが、oe-coreにlinux-firmware_git.bbが導入されてから、状況は一変した。
linux-firmware以外のレシピからインストールされたファイルが、rootfsに反映されなくなった。
解決策
自分で作成したファームウェアを/lib/firmware
以下にインストールするにはlinux-firmware_git.bbappend
を作成し次のようにPACKAGEを追加する。
FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI_append = " file://myfirm.bin" PACKAGES =+ "${PN}-myfirm" FILES_${PN}-myfirm = " \ /lib/firmware/myfirm.bin" do_install_append() { install -d ${D}/lib/firmware install -m 0644 ${WORKDIR}/myfirm.bin ${D}/lib/firmware/myfirm.bin }
追加したパッケージはlocal.confもしくはraspberrypi.confなどのconfファイルからMACHINE_EXTRA_RRECOMMENDS
などで追加する必要がある。
bbやbbappendからの追加はうまく行かない。
local.confへ次の行を追加する。
MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-myfirm"
これで/lib/firmware/myfirm.bin
がインストールされる。
linux-firmwareについて
通常/lib/firmware
に配置されるファイルはプロプライエタリなバイナリファイルであるため、オープンソースではないライセンスが付与されている。
yoctoprojectでは、これらを一元に管理するためにlinux-firmwareのレシピですべてを管理するようにしたと推測されるが、経緯は詳しく調べていない。
とはいえ、/lib/firmware
にファイルを追加する場合は、注意が必要である。