From cf763e204f421def01683441fbc5e64f219b1feb Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 3 Feb 2021 12:22:41 +0100 Subject: [PATCH 1/3] init: create /run tmpfs in init The filesystem options are set to match what systemd is using when it would create the /run tmpfs, see src/core/mount-setup.c in systemd source code. Signed-off-by: Matthias Reichl --- packages/sysutils/busybox/scripts/init | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index b747a53e88..988e3a7f89 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -14,6 +14,7 @@ /usr/bin/busybox mkdir -p /flash /usr/bin/busybox mkdir -p /sysroot /usr/bin/busybox mkdir -p /storage +/usr/bin/busybox mkdir -p /run # temp mountpoint for updates /usr/bin/busybox mkdir -p /update @@ -22,6 +23,8 @@ /usr/bin/busybox mount -t devtmpfs devtmpfs /dev /usr/bin/busybox mount -t proc proc /proc /usr/bin/busybox mount -t sysfs sysfs /sys +# /run options have to match what systemd uses by default +/usr/bin/busybox mount -t tmpfs -o mode=755,size=20%,nr_inodes=800k,nosuid,nodev,strictatime tmpfs /run UPDATE_ROOT=/storage/.update UPDATE_DIR="$UPDATE_ROOT" From 8f1344f6fd174ee64fdceb6b3a5586e91e83cfc0 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 3 Feb 2021 12:28:48 +0100 Subject: [PATCH 2/3] 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 From a62294272aa1acd4671646b976f3d12a5d0d01b9 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Wed, 3 Feb 2021 12:29:30 +0100 Subject: [PATCH 3/3] busybox: create /storage/.cache/kernel-overlays via tmpfiles.d Signed-off-by: Matthias Reichl --- packages/sysutils/busybox/scripts/kernel-overlays-setup | 1 - packages/sysutils/busybox/tmpfiles.d/z_01_busybox.conf | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sysutils/busybox/scripts/kernel-overlays-setup b/packages/sysutils/busybox/scripts/kernel-overlays-setup index db36ff0896..e405ed740b 100755 --- a/packages/sysutils/busybox/scripts/kernel-overlays-setup +++ b/packages/sysutils/busybox/scripts/kernel-overlays-setup @@ -13,7 +13,6 @@ USER_FIRMWARE_DIR="/storage/.config/firmware" mkdir -p "${MODULES_DIR}" mkdir -p "${FIRMWARE_DIR}" -mkdir -p "${OVERLAY_CONFIG_DIR}" log() { echo "kernel-overlays-setup: $@" > /dev/kmsg diff --git a/packages/sysutils/busybox/tmpfiles.d/z_01_busybox.conf b/packages/sysutils/busybox/tmpfiles.d/z_01_busybox.conf index 2bc4684981..b3d937099a 100644 --- a/packages/sysutils/busybox/tmpfiles.d/z_01_busybox.conf +++ b/packages/sysutils/busybox/tmpfiles.d/z_01_busybox.conf @@ -6,5 +6,6 @@ d /var/media 0755 root root - - d /storage/backup 0755 root root - - d /storage/.update 0755 root root - - d /storage/.cache/cores 0755 root root - - +d /storage/.cache/kernel-overlays 0755 root root - - d /storage/.cache/services 0755 root root - - d /storage/.config 0755 root root - -