From 8f1344f6fd174ee64fdceb6b3a5586e91e83cfc0 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 3 Feb 2021 12:28:48 +0100 Subject: [PATCH] Move kernel overlays setup to init When running kernel-overlays-setup as a systemd service we have a short window where /lib/firmware isn't available. This causes drm edid override to occasionally fail if the edid file is requested between switching to sysroot and completion of the kernel-overlays-setup script. Setting up firmware and module overlays in init, before switching to sysroot, closes the gap and also has the benefit that we no longer need to care about the rather tedious systemd unit ordering. Signed-off-by: Matthias Reichl --- .../system.d/brcmfmac-firmware.service | 1 - packages/sysutils/busybox/package.mk | 3 +++ packages/sysutils/busybox/scripts/init | 4 ++++ .../scripts/kernel-overlays-setup | 0 .../busybox/system.d/rpi-flash-firmware.service | 4 ++-- packages/sysutils/systemd/package.mk | 2 -- .../systemd/system.d/kernel-overlays.service | 12 ------------ .../system.d/modprobe@.service.d/dependencies.conf | 2 -- 8 files changed, 9 insertions(+), 19 deletions(-) rename packages/sysutils/{systemd => busybox}/scripts/kernel-overlays-setup (100%) delete mode 100644 packages/sysutils/systemd/system.d/kernel-overlays.service delete mode 100644 packages/sysutils/systemd/system.d/modprobe@.service.d/dependencies.conf diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service index 75f1746401..06f7ab2ee4 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service @@ -1,6 +1,5 @@ [Unit] Description=Broadcom SDIO Firmware Symlink Service -After=kernel-overlays.service Before=kodi.service [Service] diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index bdec2db98a..9556a1c488 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -136,6 +136,9 @@ makeinstall_target() { cp ${PKG_DIR}/scripts/pastebinit ${INSTALL}/usr/bin/ ln -sf pastebinit ${INSTALL}/usr/bin/paste + mkdir -p ${INSTALL}/usr/sbin + cp ${PKG_DIR}/scripts/kernel-overlays-setup ${INSTALL}/usr/sbin + mkdir -p ${INSTALL}/usr/lib/libreelec cp ${PKG_DIR}/scripts/functions ${INSTALL}/usr/lib/libreelec cp ${PKG_DIR}/scripts/fs-resize ${INSTALL}/usr/lib/libreelec diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 988e3a7f89..b999230c94 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -1113,8 +1113,12 @@ done /usr/bin/busybox mount --move /dev /sysroot/dev /usr/bin/busybox mount --move /proc /sysroot/proc /usr/bin/busybox mount --move /sys /sysroot/sys +/usr/bin/busybox mount --move /run /sysroot/run /usr/bin/busybox rm -fr /tmp +# setup kernel overlays +/usr/bin/busybox chroot /sysroot /usr/sbin/kernel-overlays-setup + # tell OE settings addon to disable updates if [ "$UPDATE_DISABLED" = "yes" ]; then echo "" > /sysroot/dev/.update_disabled diff --git a/packages/sysutils/systemd/scripts/kernel-overlays-setup b/packages/sysutils/busybox/scripts/kernel-overlays-setup similarity index 100% rename from packages/sysutils/systemd/scripts/kernel-overlays-setup rename to packages/sysutils/busybox/scripts/kernel-overlays-setup diff --git a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service b/packages/sysutils/busybox/system.d/rpi-flash-firmware.service index c05ea654d4..f2921242fa 100644 --- a/packages/sysutils/busybox/system.d/rpi-flash-firmware.service +++ b/packages/sysutils/busybox/system.d/rpi-flash-firmware.service @@ -1,7 +1,7 @@ [Unit] Description=RPi Flash Firmware -Requires=tmp.mount var.mount sys-kernel-config.mount kernel-overlays.service -After=tmp.mount var.mount sys-kernel-config.mount kernel-overlays.service +Requires=tmp.mount var.mount sys-kernel-config.mount +After=tmp.mount var.mount sys-kernel-config.mount DefaultDependencies=no [Service] diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index 03e3295b30..ffb52a5789 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -214,7 +214,6 @@ post_makeinstall_target() { find_file_path scripts/cpufreq && cp -PRv ${FOUND_PATH} ${INSTALL}/usr/bin mkdir -p ${INSTALL}/usr/sbin - cp ${PKG_DIR}/scripts/kernel-overlays-setup ${INSTALL}/usr/sbin cp ${PKG_DIR}/scripts/network-base-setup ${INSTALL}/usr/sbin cp ${PKG_DIR}/scripts/systemd-timesyncd-setup ${INSTALL}/usr/sbin @@ -282,7 +281,6 @@ post_install() { enable_service userconfig.service enable_service usercache.service enable_service envconfig.service - enable_service kernel-overlays.service enable_service hwdb.service enable_service cpufreq.service enable_service network-base.service diff --git a/packages/sysutils/systemd/system.d/kernel-overlays.service b/packages/sysutils/systemd/system.d/kernel-overlays.service deleted file mode 100644 index 4207403c52..0000000000 --- a/packages/sysutils/systemd/system.d/kernel-overlays.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Create kernel modules tree from overlays -DefaultDependencies=no -Before=systemd-udevd.service systemd-udev-trigger.service systemd-modules-load.service systemd-remount-fs.service swap.service machine-id.service kmod-static-nodes.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/sbin/kernel-overlays-setup - -[Install] -WantedBy=local-fs.target diff --git a/packages/sysutils/systemd/system.d/modprobe@.service.d/dependencies.conf b/packages/sysutils/systemd/system.d/modprobe@.service.d/dependencies.conf deleted file mode 100644 index c721677e3b..0000000000 --- a/packages/sysutils/systemd/system.d/modprobe@.service.d/dependencies.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Unit] -After=kernel-overlays.service