다음 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에서는 문제가 되지 않는 것 같습니다).