110 lines
3.7 KiB
Diff
110 lines
3.7 KiB
Diff
|
|
Rather than ordering systemd-random-seed-load.service after local-fs.target,
|
|
start it by path-activation.
|
|
|
|
We need write access to the seed, so we order the path unit after
|
|
remount-rootfs.service (in case /var is on the root fs).
|
|
|
|
A better solution might be to introduce PathIsWritable=, but that is not
|
|
necessary in order to solve the problem, and I don't know of any other
|
|
usecases for it.
|
|
|
|
Cc: Frederic Crozat <fcrozat@suse.com>
|
|
Cc: Michal Schmidt <mschmidt@redhat.com>
|
|
---
|
|
|
|
This is my second attempt at solving this problem. The first one had
|
|
some issues as pointed out by Frederic and Michael.
|
|
|
|
Makefile.am | 7 +++++--
|
|
TODO | 2 --
|
|
units/.gitignore | 1 +
|
|
units/systemd-random-seed-load.path.in | 18 ++++++++++++++++++
|
|
units/systemd-random-seed-load.service.in | 3 +--
|
|
5 files changed, 25 insertions(+), 6 deletions(-)
|
|
create mode 100644 units/systemd-random-seed-load.path.in
|
|
|
|
diff -urB systemd-38/Makefile.am new/Makefile.am
|
|
--- systemd-38/Makefile.am 2012-01-11 04:01:36.734404653 +0100
|
|
+++ new/Makefile.am 2012-01-18 09:53:12.763115731 +0100
|
|
@@ -1530,11 +1530,14 @@
|
|
|
|
nodist_systemunit_DATA += \
|
|
units/systemd-random-seed-save.service \
|
|
- units/systemd-random-seed-load.service
|
|
+ units/systemd-random-seed-load.service \
|
|
+ units/systemd-random-seed-load.path
|
|
+
|
|
|
|
EXTRA_DIST += \
|
|
units/systemd-random-seed-save.service.in \
|
|
- units/systemd-random-seed-load.service.in
|
|
+ units/systemd-random-seed-load.service.in \
|
|
+ units/systemd-random-seed-load.path.in
|
|
|
|
systemd_random_seed_SOURCES = \
|
|
src/random-seed.c
|
|
@@ -1550,8 +1553,8 @@
|
|
rm -f systemd-random-seed-save.service && \
|
|
$(LN_S) ../systemd-random-seed-save.service systemd-random-seed-save.service )
|
|
( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
|
|
- rm -f systemd-random-seed-load.service && \
|
|
- $(LN_S) ../systemd-random-seed-load.service systemd-random-seed-load.service )
|
|
+ rm -f systemd-random-seed-load.path && \
|
|
+ $(LN_S) ../systemd-random-seed-load.path systemd-random-seed-load.path )
|
|
|
|
INSTALL_DATA_HOOKS += \
|
|
randomseed-install-data-hook
|
|
@@ -2052,6 +2055,7 @@
|
|
-e 's,@exec_prefix\@,$(exec_prefix),g' \
|
|
-e 's,@libdir\@,$(libdir),g' \
|
|
-e 's,@includedir\@,$(includedir),g' \
|
|
+ -e 's,@localstatedir\@,$(localstatedir),g' \
|
|
< $< > $@ || rm $@
|
|
|
|
units/%: units/%.in Makefile
|
|
diff --git a/units/systemd-random-seed-load.path.in b/units/systemd-random-seed-load.path.in
|
|
new file mode 100644
|
|
index 0000000..614c1d4
|
|
--- /dev/null
|
|
+++ b/units/systemd-random-seed-load.path.in
|
|
@@ -0,0 +1,18 @@
|
|
+# This file is part of systemd.
|
|
+#
|
|
+# systemd is free software; you can redistribute it and/or modify it
|
|
+# under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+
|
|
+[Unit]
|
|
+Description=Random Seed
|
|
+DefaultDependencies=no
|
|
+Conflicts=shutdown.target
|
|
+Before=basic.target shutdown.target
|
|
+# in case the seed is on the rootfs, we must
|
|
+# wait for the rootfs to be remonuted rw
|
|
+After=remount-rootfs.service
|
|
+
|
|
+[Path]
|
|
+PathExists=@localstatedir@/lib/random-seed
|
|
diff --git a/units/systemd-random-seed-load.service.in b/units/systemd-random-seed-load.service.in
|
|
index a2b6a55..2bcf1aa 100644
|
|
--- a/units/systemd-random-seed-load.service.in
|
|
+++ b/units/systemd-random-seed-load.service.in
|
|
@@ -8,9 +8,8 @@
|
|
[Unit]
|
|
Description=Load Random Seed
|
|
DefaultDependencies=no
|
|
-Wants=local-fs.target
|
|
Conflicts=shutdown.target
|
|
-After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
|
|
+After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-random-seed-load.path
|
|
Before=sysinit.target shutdown.target
|
|
|
|
[Service]
|
|
--
|
|
1.7.8
|
|
|
|
|
|
|