mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
Fix broken systemd shutdown services
The services systemd-random-seed-save.service and systemd-update-utmp-shutdown.service from systemd 203 don't work, because they have a RequiresMountFor dependency on /var/lib and /var/log. Such a dependency produces a cycle, causing systemd to drop those services: Fixing conflicting jobs by deleting job poweroff.target/stop Deleting job systemd-poweroff.service/stop as dependency of job poweroff.target/stop Deleting job umount.target/stop as dependency of job systemd-poweroff.service/stop Deleting job -.mount/start as dependency of job umount.target/stop Deleting job systemd-random-seed-save.service/start as dependency of job -.mount/start Deleting job systemd-update-utmp-shutdown.service/start as dependency of job -.mount/start Dropping the RequiresMountFor doesn't work either, because then /var/... may have meen unmounted or remounted read-only. Upstream systemd fixes this by doing the actual work from an ExecStop action in an already-running service than conflicts with shutdown.target. So I backported that here. The main consequence is that wtmp shutdown records now get written properly. The main lesson: shutdown.target is useless for pulling in services during shutdown if they need to write anywhere.
This commit is contained in:
parent
f5c4874b05
commit
f19065c283
2 changed files with 45 additions and 13 deletions
|
@ -76,6 +76,15 @@ rec {
|
|||
'';
|
||||
};
|
||||
|
||||
conflicts = mkOption {
|
||||
default = [];
|
||||
types = types.listOf types.string;
|
||||
description = ''
|
||||
If the specified units are started, then this unit is stopped
|
||||
and vice versa.
|
||||
'';
|
||||
};
|
||||
|
||||
requiredBy = mkOption {
|
||||
default = [];
|
||||
types = types.listOf types.string;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue