Description=Cleanup udev Database
DefaultDependencies=no
AssertPathExists=/etc/initrd-release
-Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd-varlink.socket systemd-udev-trigger.service systemd-udev-settle.service
-After=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd-varlink.socket systemd-udev-trigger.service systemd-udev-settle.service
+Conflicts=systemd-udevd.service systemd-udev-trigger.service systemd-udev-settle.service
+After=systemd-udevd.service systemd-udev-trigger.service systemd-udev-settle.service
Before=initrd-switch-root.target
[Service]
Before=soft-reboot.target systemd-soft-reboot.service
Conflicts=soft-reboot.target
+# To avoid this service being triggered by a relevant socket unit during
+# switching root, which easily happens due to kernel events.
+# Note, unlike soft-reboot (and any other shutting down processes),
+# initrd-switching-root.service is started after initrd-switch-root.target.
+# Hence, we need to also add the service to Conflicts=.
+Before=initrd-switch-root.target initrd-switch-root.service
+Conflicts=initrd-switch-root.target initrd-switch-root.service
+
[Service]
CapabilityBoundingSet=~CAP_SYS_TIME CAP_WAKE_ALARM
Delegate=