From 315421e634577b87d6cf2cee57edf367ac6868b6 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sat, 1 Dec 2018 12:15:53 +0100 Subject: [PATCH] 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 --- packages/linux/package.mk | 1 - packages/sysutils/systemd/scripts/kernel-overlays-setup | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 7eba1e703c..b4fbc68d5b 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -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 diff --git a/packages/sysutils/systemd/scripts/kernel-overlays-setup b/packages/sysutils/systemd/scripts/kernel-overlays-setup index f9d1b27353..8b27956967 100755 --- a/packages/sysutils/systemd/scripts/kernel-overlays-setup +++ b/packages/sysutils/systemd/scripts/kernel-overlays-setup @@ -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"