linux: move .config/firmware handling to kernel overlay system

Creating an updates symlink to /storage/.config/firmware in the
kernel firmware directory makes it impossible to add firmware
overlays with an updates folder.

Furthermore bluez/hciattach only looks for firmware files directly in
the /lib/firmware directory and ignores the /lib/firmware/updates
directory. So adding BT firmware via .config/firmware didn't work.

Solve this by adding files from /storage/.config/firmware as the
last step in kernel overlays setup so firmware files from there
will show up directly under /lib/firmware and override other firmware
files installed by the system and kernel overlays.

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2018-12-01 12:15:53 +01:00
parent 903346fe98
commit 315421e634
2 changed files with 9 additions and 1 deletions

View File

@ -296,7 +296,6 @@ makeinstall_init() {
post_install() {
mkdir -p $INSTALL/$(get_full_firmware_dir)/
ln -sf /storage/.config/firmware/ $INSTALL/$(get_full_firmware_dir)/updates
# regdb and signature is now loaded as firmware by 4.15+
if grep -q ^CONFIG_CFG80211_REQUIRE_SIGNED_REGDB= $PKG_BUILD/.config; then

View File

@ -8,6 +8,7 @@ OVERLAY_CONFIG_DIR=/storage/.cache/kernel-overlays
KVER=$(uname -r)
MODULES_DIR="/var/lib/modules/${KVER}"
FIRMWARE_DIR="/var/lib/firmware"
USER_FIRMWARE_DIR="/storage/.config/firmware"
mkdir -p "${MODULES_DIR}"
mkdir -p "${FIRMWARE_DIR}"
@ -73,4 +74,12 @@ if [ -d "${OVERLAY_CONFIG_DIR}" ] ; then
fi
fi
if [ -d "${USER_FIRMWARE_DIR}" -a -n "$(ls ${USER_FIRMWARE_DIR})" ] ; then
if cp -rfs "${USER_FIRMWARE_DIR}"/* "${FIRMWARE_DIR}" ; then
log "added firmware from ${USER_FIRMWARE_DIR}"
else
log "failed to add firmware from ${USER_FIRMWARE_DIR}"
fi
fi
log "done"