次のLinuxカーネルソースコードストアをいくつかの他のホスト(私のローカルコンピュータとGithub Actionsランナー)に複製しました。
https://gitlab.conclusive.pl/devices/linux/-/tree/master
使っていますkstr-sama5d27 defconfig
ビルドモジュールを使用すると、make modules -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOCALVERSION=-kstr-sama5d27
GAホストで次のエラーが発生します。
make[2]: *** 'net/wireless/extra-certs.c' に必要な '/lib/firmware' ターゲットを生成するルールはありません。止まる
そして私のローカルコンピュータではビルドが成功します。
GEN net/wireless/extra-certs.c
CC [M] net/wireless/extra-certs.o
net/wireless/Makefileを見ましたが、この問題を解決する方法についてのアイデアを提供するものはありません。
この問題は、ビルド環境の違いによって引き起こされると思います。
答え1
このためですCONFIG_CFG80211_EXTRA_REGDB_KEYDIR
に設定します/lib/firmware
。この構成項目が空でない場合、ビルドが発生します。頼るextra-certs.o
、それ自体構成値で指定されたディレクトリによって異なる。したがって、ビルドは自分のシステムでは成功しますが、/lib/firmware
GitHub Action Runnerでは失敗します。
追加の証明書を含める必要がない場合は、この構成設定が空になるように上書きする必要があります。これを行うと/lib/firmware
。
追加の証明書が必要な場合は、カーネルストアのレプリカ(例えば firmware
)の横にある()を指すようにlinux
変更します。CONFIG_CFG80211_EXTRA_REGDB_KEYDIR
../firmware
答え2
Github Actionsランナーには、/lib/firmware
Linuxディストリビューションなどのパッケージファームウェアが含まれていないようです。
Stephen Kittの答えは、追加の証明書を必要としない状況に適しています。これらの証明書が本当に必要な場合は、ファームウェアをインポートしてその証明書の構成を指定する必要があります。
レプリケーションでファームウェアを入手できます。
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
既存のファームウェアを上書きするのを防ぐのではなく、ファームウェアをディレクトリに保存することをお勧めします/lib/firmware
(Github Actionsでは問題にならないようです)。