2

I have the following linux kernel source repo cloned to a couple different hosts (my local machine and a Github Actions runner)

https://gitlab.conclusive.pl/devices/linux/-/tree/master

I'm using the kstr-sama5d27 defconfig

When building modules using make modules -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOCALVERSION=-kstr-sama5d27 I receive the following error on the GA host:

make[2]: *** No rule to make target '/lib/firmware', needed by 'net/wireless/extra-certs.c'. Stop.

whereas on my local machine building succeeds:

GEN net/wireless/extra-certs.c
CC [M] net/wireless/extra-certs.o

I looked in net/wireless/Makefile but nothing within lead me to any ideas on how to troubleshoot this.

I figure the issue must be caused by differences in build environments.

2
  • Do you get that consistently (every time), and also without -j4?
    – Kusalananda
    Commented Sep 22, 2022 at 6:00
  • Yes, consistently and without -j4
    – davegravy
    Commented Sep 22, 2022 at 6:15

2 Answers 2

2

This is caused by CONFIG_CFG80211_EXTRA_REGDB_KEYDIR which is set to /lib/firmware. When this configuration entry is not empty, it causes the build to rely on extra-certs.o, which itself depends on the directory given as the configuration value. So the build succeeds on your own system, which has /lib/firmware, but fails on the GitHub action runner, which doesn’t.

If you don’t need to include extra certificates, you should override this configuration setting so that it ends up empty. That will allow the build to proceed without /lib/firmware.

If you do need extra certificates, place them in a directory next to your clone of the kernel repository (e.g. firmware next to linux) and change CONFIG_CFG80211_EXTRA_REGDB_KEYDIR to point to that (../firmware).

0
1

Github Actions runners do not apparently include packaged firmware at /lib/firmware as is common for Linux distributions.

Stephen Kitt's answer is good for the case where you don't need the extra certificates. If you do need these certs then you'll need to obtain the firmware and point the config to them.

The firmware can be obtained by cloning git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

You may want place the firmware in a directory other than /lib/firmware to avoid overwriting existing firmware (not an issue it seems for Github Actions).

1
  • It would be better to change the directory to something else — by doing this you’ll overwrite your distribution’s packaged firmware. Commented Sep 23, 2022 at 4:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .