From 9fc212638652fb9bfd810ec3d22a2a5d26f4292c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 23 Jan 2025 14:47:03 +0100 Subject: [PATCH 1/3] units: add a longer comment to modprobe@.service explaining when to use it --- units/modprobe@.service | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/units/modprobe@.service b/units/modprobe@.service index 05e5b4f600..b099b90eba 100644 --- a/units/modprobe@.service +++ b/units/modprobe@.service @@ -7,6 +7,20 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. +# This unit loads a specific kernel module explicitly and synchronizes on its +# initialization to be complete. This unit should only be used as dependency +# if automatic module loading cannot be used for a module, i.e. in exceptional +# cases. These cases may include: +# +# 1. The primary API exposed by the module is a device node that is normally +# managed by systemd-tmpfiles-setup-dev-early.service (and thus auto-loading +# is generally supported), but some service already needs the functionality +# during even earlier boot. +# +# 2. The primary API exposed by the module is some directory in /sys/, /proc/ +# or configfs, where simple access generally is not sufficient to load the +# module. + [Unit] Description=Load Kernel Module %i DefaultDependencies=no From 6f69568cff4e72bdb4f48452e04736af1a5b1d63 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 23 Jan 2025 14:47:10 +0100 Subject: [PATCH 2/3] units: mountfsd needs to pull DM and loop kmods mountfsd is supposed to be available during early boot aleady, before systemd-tmpfiles-setup-dev-early.service completes, hence make sure loopback devices and DM already work before that. As suggested by yuwata here: https://github.com/systemd/systemd/pull/35685#issuecomment-2608157569 --- units/systemd-mountfsd.service.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/units/systemd-mountfsd.service.in b/units/systemd-mountfsd.service.in index 20a9b425ab..ef413684c3 100644 --- a/units/systemd-mountfsd.service.in +++ b/units/systemd-mountfsd.service.in @@ -10,8 +10,9 @@ [Unit] Description=DDI File System Mounter Documentation=man:systemd-mountfsd.service(8) +Wants=modprobe@loop.service modprobe@dm_mod.service Requires=systemd-mountfsd.socket -After=systemd-mountfsd.socket +After=systemd-mountfsd.socket modprobe@loop.service modprobe@dm_mod.service Conflicts=shutdown.target Before=sysinit.target shutdown.target DefaultDependencies=no From 71b6f718e25ae2d3af291427ce7e6fadd21b3d11 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 23 Jan 2025 14:49:46 +0100 Subject: [PATCH 3/3] units: don't load squasfs/erofs kmods explicitly File system modules should be something the kernel can autoload automatically, and according to my testing that works fine, hence let's drop the explicit deps, in particular as systems usually stick to one fs for these things, not both. I inquired bluca about the reason to add it, and didn't remember anymore, and was fine with me removing this. So let's remove this for now, should issues arise we can revert this. --- units/systemd-confext-initrd.service | 4 ++-- units/systemd-sysext-initrd.service | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/units/systemd-confext-initrd.service b/units/systemd-confext-initrd.service index 4655018567..22461fa712 100644 --- a/units/systemd-confext-initrd.service +++ b/units/systemd-confext-initrd.service @@ -24,8 +24,8 @@ Before=local-fs-pre.target cryptsetup-pre.target systemd-tmpfiles-setup.service Wants=local-fs-pre.target cryptsetup-pre.target Conflicts=initrd-switch-root.target Before=initrd-switch-root.target -Wants=modprobe@loop.service modprobe@dm_mod.service modprobe@squashfs.service modprobe@erofs.service -After=modprobe@loop.service modprobe@dm_mod.service modprobe@squashfs.service modprobe@erofs.service +Wants=modprobe@loop.service modprobe@dm_mod.service +After=modprobe@loop.service modprobe@dm_mod.service [Service] Type=oneshot diff --git a/units/systemd-sysext-initrd.service b/units/systemd-sysext-initrd.service index 4f0b8ff4de..f21990aad0 100644 --- a/units/systemd-sysext-initrd.service +++ b/units/systemd-sysext-initrd.service @@ -23,8 +23,8 @@ Before=local-fs-pre.target cryptsetup-pre.target systemd-tmpfiles-setup.service Wants=local-fs-pre.target cryptsetup-pre.target Conflicts=initrd-switch-root.target Before=initrd-switch-root.target -Wants=modprobe@loop.service modprobe@dm_mod.service modprobe@squashfs.service modprobe@erofs.service -After=modprobe@loop.service modprobe@dm_mod.service modprobe@squashfs.service modprobe@erofs.service +Wants=modprobe@loop.service modprobe@dm_mod.service +After=modprobe@loop.service modprobe@dm_mod.service [Service] Type=oneshot