summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-06-13 13:10:30 +0200
committerLennart Poettering <lennart@poettering.net>2014-06-13 13:26:32 +0200
commitecde7065f7b11a7a226d2f7b0e90e998a6347a59 (patch)
tree50fc81d63a475f851c935cf6f5b1a10ab77fa227
parenta55654d598c78f8e084aa6a18fec6eff900c9aed (diff)
units: rebuild /etc/passwd, the udev hwdb and the journal catalog files on boot
Only when necessary of course, nicely guarded with the new ConditionNeedsUpdate= condition we added.
-rw-r--r--Makefile.am25
-rw-r--r--units/.gitignore3
-rw-r--r--units/systemd-journal-catalog-update.service.in22
-rw-r--r--units/systemd-networkd.service.in2
-rw-r--r--units/systemd-sysusers.service.in22
-rw-r--r--units/systemd-timesyncd.service.in2
-rw-r--r--units/systemd-tmpfiles-setup.service.in2
-rw-r--r--units/systemd-udev-hwdb-update.service.in22
-rw-r--r--units/systemd-udevd.service.in2
9 files changed, 93 insertions, 9 deletions
diff --git a/Makefile.am b/Makefile.am
index 8fd933be51..abf8a2bb3e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -491,6 +491,7 @@ nodist_systemunit_DATA = \
units/systemd-udevd.service \
units/systemd-udev-trigger.service \
units/systemd-udev-settle.service \
+ units/systemd-udev-hwdb-update.service \
units/debug-shell.service \
units/initrd-parse-etc.service \
units/initrd-cleanup.service \
@@ -1783,10 +1784,17 @@ systemd_sysusers_LDADD = \
rootlibexec_PROGRAMS += \
systemd-sysusers
+nodist_systemunit_DATA += \
+ units/systemd-sysusers.service
+
+SYSINIT_TARGET_WANTS += \
+ systemd-sysusers.service
+
nodist_sysusers_DATA = \
sysusers.d/systemd.conf
EXTRA_DIST += \
+ units/systemd-sysusers.service.in \
sysusers.d/systemd.conf.in
INSTALL_DIRS += \
@@ -2753,19 +2761,23 @@ CLEANFILES += \
EXTRA_DIST += \
units/systemd-udevd.service.in \
units/systemd-udev-trigger.service.in \
- units/systemd-udev-settle.service.in
+ units/systemd-udev-settle.service.in \
+ units/systemd-udev-hwdb-update.service.in
CLEANFILES += \
units/systemd-udevd.service \
units/systemd-udev-trigger.service \
- units/systemd-udev-settle.service
+ units/systemd-udev-settle.service \
+ units/systemd-udev-hwdb-update.service
SOCKETS_TARGET_WANTS += \
systemd-udevd-control.socket \
systemd-udevd-kernel.socket
+
SYSINIT_TARGET_WANTS += \
systemd-udevd.service \
- systemd-udev-trigger.service
+ systemd-udev-trigger.service \
+ systemd-udev-hwdb-update.service
rootbin_PROGRAMS += \
udevadm
@@ -3540,7 +3552,8 @@ dist_systemunit_DATA += \
nodist_systemunit_DATA += \
units/systemd-journald.service \
- units/systemd-journal-flush.service
+ units/systemd-journal-flush.service \
+ units/systemd-journal-catalog-update.service
dist_pkgsysconf_DATA += \
src/journal/journald.conf
@@ -3557,11 +3570,13 @@ SOCKETS_TARGET_WANTS += \
SYSINIT_TARGET_WANTS += \
systemd-journald.service \
- systemd-journal-flush.service
+ systemd-journal-flush.service \
+ systemd-journal-catalog-update.service
EXTRA_DIST += \
units/systemd-journald.service.in \
units/systemd-journal-flush.service.in \
+ units/systemd-journal-catalog-update.service.in \
src/journal/journald-gperf.gperf
CLEANFILES += \
diff --git a/units/.gitignore b/units/.gitignore
index 45ddab72e8..8ae6ca8946 100644
--- a/units/.gitignore
+++ b/units/.gitignore
@@ -32,6 +32,7 @@
/systemd-initctl.service
/systemd-journal-flush.service
/systemd-journal-gatewayd.service
+/systemd-journal-catalog-update.service
/systemd-journald.service
/systemd-kexec.service
/systemd-localed.service
@@ -54,12 +55,14 @@
/systemd-shutdownd.service
/systemd-suspend.service
/systemd-sysctl.service
+/systemd-sysusers.service
/systemd-timedated.service
/systemd-timesyncd.service
/systemd-tmpfiles-clean.service
/systemd-tmpfiles-setup-dev.service
/systemd-tmpfiles-setup.service
/systemd-tmpfiles.service
+/systemd-udev-hwdb-update.service
/systemd-udev-settle.service
/systemd-udev-trigger.service
/systemd-udevd.service
diff --git a/units/systemd-journal-catalog-update.service.in b/units/systemd-journal-catalog-update.service.in
new file mode 100644
index 0000000000..d45381d47b
--- /dev/null
+++ b/units/systemd-journal-catalog-update.service.in
@@ -0,0 +1,22 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Rebuild Journal Catalog
+Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
+Before=sysinit.target shutdown.target systemd-update-done.service
+RefuseManualStart=yes
+RefuseManualStop=yes
+ConditionNeedsUpdate=/etc
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@rootbindir@/journalctl --update-catalog
diff --git a/units/systemd-networkd.service.in b/units/systemd-networkd.service.in
index 48f4d63a87..57c3fbff51 100644
--- a/units/systemd-networkd.service.in
+++ b/units/systemd-networkd.service.in
@@ -9,7 +9,7 @@
Description=Network Service
Documentation=man:systemd-networkd.service(8)
DefaultDependencies=no
-After=dbus.service network-pre.target
+After=dbus.service network-pre.target systemd-sysusers.service
Before=network.target
Wants=network.target
ConditionCapability=CAP_NET_ADMIN
diff --git a/units/systemd-sysusers.service.in b/units/systemd-sysusers.service.in
new file mode 100644
index 0000000000..e123f398a4
--- /dev/null
+++ b/units/systemd-sysusers.service.in
@@ -0,0 +1,22 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Create System Users
+Documentation=man:sysusers.d(5) man:systemd-sysusers.service(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+Before=sysinit.target shutdown.target systemd-update-done.service
+RefuseManualStart=yes
+RefuseManualStop=yes
+ConditionNeedsUpdate=/etc
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@rootlibexecdir@/systemd-sysusers
diff --git a/units/systemd-timesyncd.service.in b/units/systemd-timesyncd.service.in
index 3a1bc48a91..a20621dd58 100644
--- a/units/systemd-timesyncd.service.in
+++ b/units/systemd-timesyncd.service.in
@@ -11,7 +11,7 @@ Documentation=man:systemd-timesyncd.service(8)
ConditionCapability=CAP_SYS_TIME
DefaultDependencies=off
RequiresMountsFor=/var/lib/systemd/clock
-After=systemd-remount-fs.service systemd-tmpfiles-setup.service
+After=systemd-remount-fs.service systemd-tmpfiles-setup.service systemd-sysusers.service
Before=sysinit.target shutdown.target
Conflicts=shutdown.target
Wants=time-sync.target
diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
index 747c9a8d65..d3c6da88c4 100644
--- a/units/systemd-tmpfiles-setup.service.in
+++ b/units/systemd-tmpfiles-setup.service.in
@@ -10,7 +10,7 @@ Description=Create Volatile Files and Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
-After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
+After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target systemd-sysusers.service
Before=sysinit.target shutdown.target
RefuseManualStart=yes
RefuseManualStop=yes
diff --git a/units/systemd-udev-hwdb-update.service.in b/units/systemd-udev-hwdb-update.service.in
new file mode 100644
index 0000000000..4e7b845ea4
--- /dev/null
+++ b/units/systemd-udev-hwdb-update.service.in
@@ -0,0 +1,22 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Rebuild Hardware Database
+Documentation=man:udev(7) man:systemd-udevd.service(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+Before=sysinit.target shutdown.target systemd-update-done.service
+RefuseManualStart=yes
+RefuseManualStop=yes
+ConditionNeedsUpdate=/etc
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@rootbindir@/udevadm hwdb --update
diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
index ddee01537a..f6acd6fe4c 100644
--- a/units/systemd-udevd.service.in
+++ b/units/systemd-udevd.service.in
@@ -10,7 +10,7 @@ Description=udev Kernel Device Manager
Documentation=man:systemd-udevd.service(8) man:udev(7)
DefaultDependencies=no
Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket
-After=systemd-udevd-control.socket systemd-udevd-kernel.socket
+After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udev-hwdb-update.service systemd-sysusers.service
Before=sysinit.target
ConditionPathIsReadWrite=/sys