summaryrefslogtreecommitdiff
path: root/units
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2013-03-14 13:12:10 +0100
committerHarald Hoyer <harald@redhat.com>2013-03-15 00:49:37 +0100
commit9e5f0f92915b777308797294c6e103e430957b5d (patch)
treedaf284ba6992764b083d43bb9cfb66eed8319c6e /units
parentc1dae1b3c9729fb8ab749dd4e2dad07e0fad7ed8 (diff)
Make initrd.target the default target in the initrd
First, rename root-fs.target to initrd-root-fs.target to clarify its usage. Mount units with "x-initrd-rootfs.mount" are now ordered before initrd-root-fs.target. As we sometimes construct /sysroot mounts in /etc/fstab in the initrd, we want these to be mounted before the initrd-root-fs.target is active. initrd.target can be the default target in the initrd. (normal startup) : : v basic.target | ______________________/| / | | sysroot.mount | | | v | initrd-root-fs.target | | | v | initrd-parse-etc.service (custom initrd services) | | v | (sysroot-usr.mount and | various mounts marked | with fstab option | x-initrd.mount) | | | v | initrd-fs.target | | \______________________ | \| v initrd.target | v initrd-cleanup.service isolates to initrd-switch-root.target | v ______________________/| / | | initrd-udevadm-cleanup-db.service | | (custom initrd services) | | | \______________________ | \| v initrd-switch-root.target | v initrd-switch-root.service | v switch-root
Diffstat (limited to 'units')
-rw-r--r--units/initrd-cleanup.service.in3
-rw-r--r--units/initrd-fs.target1
-rw-r--r--units/initrd-parse-etc.service.in7
-rw-r--r--units/initrd-root-fs.target (renamed from units/root-fs.target)2
-rw-r--r--units/initrd-switch-root.target4
-rw-r--r--units/initrd.target17
6 files changed, 27 insertions, 7 deletions
diff --git a/units/initrd-cleanup.service.in b/units/initrd-cleanup.service.in
index 5bef090e0..218ec807f 100644
--- a/units/initrd-cleanup.service.in
+++ b/units/initrd-cleanup.service.in
@@ -10,8 +10,7 @@ Description=Cleaning Up and Shutting Down Daemons
DefaultDependencies=no
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.target
-Wants=root-fs.target initrd-fs.target
-After=root-fs.target initrd-fs.target
+After=initrd-root-fs.target initrd-fs.target initrd.target
[Service]
Type=oneshot
diff --git a/units/initrd-fs.target b/units/initrd-fs.target
index 6ba1758e4..7578b8824 100644
--- a/units/initrd-fs.target
+++ b/units/initrd-fs.target
@@ -11,3 +11,4 @@ Documentation=man:systemd.special(7)
OnFailure=emergency.target
OnFailureIsolate=yes
ConditionPathExists=/etc/initrd-release
+After=initrd-parse-etc.service
diff --git a/units/initrd-parse-etc.service.in b/units/initrd-parse-etc.service.in
index 44fee7bd3..07728e200 100644
--- a/units/initrd-parse-etc.service.in
+++ b/units/initrd-parse-etc.service.in
@@ -8,13 +8,14 @@
[Unit]
Description=Reload Configuration from the Real Root
DefaultDependencies=no
-Requires=root-fs.target
-After=root-fs.target
+Requires=initrd-root-fs.target
+After=initrd-root-fs.target
OnFailure=emergency.target
ConditionPathExists=/etc/initrd-release
[Service]
Type=oneshot
ExecStartPre=@rootbindir@/systemctl daemon-reload
-ExecStart=@rootbindir@/systemctl start initrd-fs.target
+# we have to retrigger initrd-fs.target after daemon-reload
+ExecStart=-@rootbindir@/systemctl --no-block start initrd-fs.target
ExecStart=@rootbindir@/systemctl --no-block start initrd-cleanup.service
diff --git a/units/root-fs.target b/units/initrd-root-fs.target
index 13515341e..cd189f029 100644
--- a/units/root-fs.target
+++ b/units/initrd-root-fs.target
@@ -9,3 +9,5 @@
Description=Initrd Root File System
Documentation=man:systemd.special(7)
ConditionPathExists=/etc/initrd-release
+OnFailure=emergency.target
+OnFailureIsolate=yes
diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target
index cf646c4ef..f34768790 100644
--- a/units/initrd-switch-root.target
+++ b/units/initrd-switch-root.target
@@ -12,5 +12,5 @@ DefaultDependencies=no
Requires=initrd-switch-root.service
Before=initrd-switch-root.service
AllowIsolate=yes
-Wants=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target systemd-journald.service
-After=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target emergency.service emergency.target
+Wants=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target systemd-journald.service
+After=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target emergency.service emergency.target
diff --git a/units/initrd.target b/units/initrd.target
new file mode 100644
index 000000000..5622de477
--- /dev/null
+++ b/units/initrd.target
@@ -0,0 +1,17 @@
+# 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=Initrd Target
+Documentation=man:systemd.special(7)
+OnFailure=emergency.target
+OnFailureIsolate=yes
+ConditionPathExists=/etc/initrd-release
+Requires=basic.target
+Wants=initrd-root-fs.target initrd-fs.target initrd-parse-etc.service
+After=initrd-root-fs.target initrd-fs.target basic.target rescue.service rescue.target
+AllowIsolate=yes