Harald Hoyer 1a6f5e
From 9e5f0f92915b777308797294c6e103e430957b5d Mon Sep 17 00:00:00 2001
Harald Hoyer 1a6f5e
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 1a6f5e
Date: Thu, 14 Mar 2013 13:12:10 +0100
Harald Hoyer 1a6f5e
Subject: [PATCH] Make initrd.target the default target in the initrd
Harald Hoyer 1a6f5e
Harald Hoyer 1a6f5e
First, rename root-fs.target to initrd-root-fs.target to clarify its usage.
Harald Hoyer 1a6f5e
Harald Hoyer 1a6f5e
Mount units with "x-initrd-rootfs.mount" are now ordered before
Harald Hoyer 1a6f5e
initrd-root-fs.target. As we sometimes construct /sysroot mounts in
Harald Hoyer 1a6f5e
/etc/fstab in the initrd, we want these to be mounted before the
Harald Hoyer 1a6f5e
initrd-root-fs.target is active.
Harald Hoyer 1a6f5e
Harald Hoyer 1a6f5e
initrd.target can be the default target in the initrd.
Harald Hoyer 1a6f5e
Harald Hoyer 1a6f5e
                             (normal startup)
Harald Hoyer 1a6f5e
                                    :
Harald Hoyer 1a6f5e
                                    :
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                              basic.target
Harald Hoyer 1a6f5e
                                    |
Harald Hoyer 1a6f5e
             ______________________/|
Harald Hoyer 1a6f5e
            /                       |
Harald Hoyer 1a6f5e
            |                  sysroot.mount
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
            |                       v
Harald Hoyer 1a6f5e
            |             initrd-root-fs.target
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
            |                       v
Harald Hoyer 1a6f5e
            |            initrd-parse-etc.service
Harald Hoyer 1a6f5e
(custom initrd services)            |
Harald Hoyer 1a6f5e
            |                       v
Harald Hoyer 1a6f5e
            |            (sysroot-usr.mount and
Harald Hoyer 1a6f5e
            |             various mounts marked
Harald Hoyer 1a6f5e
            |               with fstab option
Harald Hoyer 1a6f5e
            |                x-initrd.mount)
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
            |                       v
Harald Hoyer 1a6f5e
            |                initrd-fs.target
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
            \______________________ |
Harald Hoyer 1a6f5e
                                   \|
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                               initrd.target
Harald Hoyer 1a6f5e
                                    |
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                          initrd-cleanup.service
Harald Hoyer 1a6f5e
                               isolates to
Harald Hoyer 1a6f5e
                         initrd-switch-root.target
Harald Hoyer 1a6f5e
                                    |
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
             ______________________/|
Harald Hoyer 1a6f5e
            /                       |
Harald Hoyer 1a6f5e
            |        initrd-udevadm-cleanup-db.service
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
(custom initrd services)            |
Harald Hoyer 1a6f5e
            |                       |
Harald Hoyer 1a6f5e
            \______________________ |
Harald Hoyer 1a6f5e
                                   \|
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                        initrd-switch-root.target
Harald Hoyer 1a6f5e
                                    |
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                        initrd-switch-root.service
Harald Hoyer 1a6f5e
                                    |
Harald Hoyer 1a6f5e
                                    v
Harald Hoyer 1a6f5e
                               switch-root
Harald Hoyer 1a6f5e
---
Harald Hoyer 1a6f5e
 Makefile.am                                     |  3 +-
Harald Hoyer 1a6f5e
 man/bootup.xml                                  | 73 +++++++++++++++++++++++++
Harald Hoyer 1a6f5e
 man/systemd.special.xml                         |  4 +-
Harald Hoyer 1a6f5e
 src/core/special.h                              |  2 +-
Harald Hoyer 1a6f5e
 src/fstab-generator/fstab-generator.c           | 11 +++-
Harald Hoyer 1a6f5e
 units/initrd-cleanup.service.in                 |  3 +-
Harald Hoyer 1a6f5e
 units/initrd-fs.target                          |  1 +
Harald Hoyer 1a6f5e
 units/initrd-parse-etc.service.in               |  7 ++-
Harald Hoyer 1a6f5e
 units/{root-fs.target => initrd-root-fs.target} |  2 +
Harald Hoyer 1a6f5e
 units/initrd-switch-root.target                 |  4 +-
Harald Hoyer 1a6f5e
 units/initrd.target                             | 17 ++++++
Harald Hoyer 1a6f5e
 11 files changed, 115 insertions(+), 12 deletions(-)
Harald Hoyer 1a6f5e
 rename units/{root-fs.target => initrd-root-fs.target} (89%)
Harald Hoyer 1a6f5e
 create mode 100644 units/initrd.target
Harald Hoyer 1a6f5e
Harald Hoyer 1a6f5e
diff --git a/Makefile.am b/Makefile.am
Harald Hoyer 1a6f5e
index 175d14b..cf21544 100644
Harald Hoyer 1a6f5e
--- a/Makefile.am
Harald Hoyer 1a6f5e
+++ b/Makefile.am
Harald Hoyer 1a6f5e
@@ -347,8 +347,9 @@ dist_systemunit_DATA = \
Harald Hoyer 1a6f5e
 	units/kexec.target \
Harald Hoyer 1a6f5e
 	units/local-fs.target \
Harald Hoyer 1a6f5e
 	units/local-fs-pre.target \
Harald Hoyer 1a6f5e
+	units/initrd.target \
Harald Hoyer 1a6f5e
 	units/initrd-fs.target \
Harald Hoyer 1a6f5e
-	units/root-fs.target \
Harald Hoyer 1a6f5e
+	units/initrd-root-fs.target \
Harald Hoyer 1a6f5e
 	units/remote-fs.target \
Harald Hoyer 1a6f5e
 	units/remote-fs-pre.target \
Harald Hoyer 1a6f5e
 	units/network.target \
Harald Hoyer 1a6f5e
diff --git a/man/bootup.xml b/man/bootup.xml
Harald Hoyer 1a6f5e
index f65abf5..6bd22ef 100644
Harald Hoyer 1a6f5e
--- a/man/bootup.xml
Harald Hoyer 1a6f5e
+++ b/man/bootup.xml
Harald Hoyer 1a6f5e
@@ -174,6 +174,79 @@
Harald Hoyer 1a6f5e
         </refsect1>
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
         <refsect1>
Harald Hoyer 1a6f5e
+                <title>Systemd in the Initrd</title>
Harald Hoyer 1a6f5e
+                <para>If the initrd creation tool used the services provided
Harald Hoyer 1a6f5e
+                by systemd, the default target in the initrd is the
Harald Hoyer 1a6f5e
+                initrd-fs.target. The process is the same as above until the basic.target is reached.
Harald Hoyer 1a6f5e
+                Systemd now continues to the initrd.target. If the root device could be mounted
Harald Hoyer 1a6f5e
+                on /sysroot, the sysroot.mount unit is active and the initrd-root-fs.target is reached.
Harald Hoyer 1a6f5e
+                initrd-parse-etc.service scans /sysroot/etc/fstab for the /usr mountpoint and for entries
Harald Hoyer 1a6f5e
+                marked with the <emphasis>x-initrd.mount</emphasis> option set. If these mountpoint are
Harald Hoyer 1a6f5e
+                mounted in /sysroot, the initrd-fs.target is reached.
Harald Hoyer 1a6f5e
+                The initrd-cleanup.service isolates to the initrd-switch-root.target,
Harald Hoyer 1a6f5e
+                where cleanup services can run. At the very last end
Harald Hoyer 1a6f5e
+                initrd-switch-root.service is activated, which will cause
Harald Hoyer 1a6f5e
+                the system to switch root to /sysroot.
Harald Hoyer 1a6f5e
+                </para>
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
+<programlisting>
Harald Hoyer 1a6f5e
+                                        (same as above)
Harald Hoyer 1a6f5e
+                                               :
Harald Hoyer 1a6f5e
+                                               :
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                         basic.target
Harald Hoyer 1a6f5e
+                                               |                                 emergency.service
Harald Hoyer 1a6f5e
+                        ______________________/|                                         |
Harald Hoyer 1a6f5e
+                       /                       |                                         v
Harald Hoyer 1a6f5e
+                       |                  sysroot.mount                          <emphasis>emergency.target</emphasis>
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+                       |                       v
Harald Hoyer 1a6f5e
+                       |             initrd-root-fs.target
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+                       |                       v
Harald Hoyer 1a6f5e
+                       |            initrd-parse-etc.service
Harald Hoyer 1a6f5e
+           (custom initrd services)            |
Harald Hoyer 1a6f5e
+                       |                       v
Harald Hoyer 1a6f5e
+                       |            (sysroot-usr.mount and
Harald Hoyer 1a6f5e
+                       |             various mounts marked
Harald Hoyer 1a6f5e
+                       |               with fstab option
Harald Hoyer 1a6f5e
+                       |                x-initrd.mount)
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+                       |                       v
Harald Hoyer 1a6f5e
+                       |                initrd-fs.target
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+                       \______________________ |
Harald Hoyer 1a6f5e
+                                              \|
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                          initrd.target
Harald Hoyer 1a6f5e
+                                               |
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                     initrd-cleanup.service
Harald Hoyer 1a6f5e
+                                          isolates to
Harald Hoyer 1a6f5e
+                                    initrd-switch-root.target
Harald Hoyer 1a6f5e
+                                               |
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                        ______________________/|
Harald Hoyer 1a6f5e
+                       /                       |
Harald Hoyer 1a6f5e
+                       |        initrd-udevadm-cleanup-db.service
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+           (custom initrd services)            |
Harald Hoyer 1a6f5e
+                       |                       |
Harald Hoyer 1a6f5e
+                       \______________________ |
Harald Hoyer 1a6f5e
+                                              \|
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                   initrd-switch-root.target
Harald Hoyer 1a6f5e
+                                               |
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                   initrd-switch-root.service
Harald Hoyer 1a6f5e
+                                               |
Harald Hoyer 1a6f5e
+                                               v
Harald Hoyer 1a6f5e
+                                          switch-root
Harald Hoyer 1a6f5e
+</programlisting>
Harald Hoyer 1a6f5e
+        </refsect1>
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
+        <refsect1>
Harald Hoyer 1a6f5e
                 <title>System Manager Shutdown</title>
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
                 <para>System shutdown also consists of various target
Harald Hoyer 1a6f5e
diff --git a/man/systemd.special.xml b/man/systemd.special.xml
Harald Hoyer 1a6f5e
index 7b78099..67a81b6 100644
Harald Hoyer 1a6f5e
--- a/man/systemd.special.xml
Harald Hoyer 1a6f5e
+++ b/man/systemd.special.xml
Harald Hoyer 1a6f5e
@@ -79,7 +79,7 @@
Harald Hoyer 1a6f5e
                 <filename>remote-fs.target</filename>,
Harald Hoyer 1a6f5e
                 <filename>remote-fs-pre.target</filename>,
Harald Hoyer 1a6f5e
                 <filename>rescue.target</filename>,
Harald Hoyer 1a6f5e
-                <filename>root-fs.target</filename>,
Harald Hoyer 1a6f5e
+                <filename>initrd-root-fs.target</filename>,
Harald Hoyer 1a6f5e
                 <filename>rpcbind.target</filename>,
Harald Hoyer 1a6f5e
                 <filename>runlevel2.target</filename>,
Harald Hoyer 1a6f5e
                 <filename>runlevel3.target</filename>,
Harald Hoyer 1a6f5e
@@ -523,7 +523,7 @@
Harald Hoyer 1a6f5e
                                 </listitem>
Harald Hoyer 1a6f5e
                         </varlistentry>
Harald Hoyer 1a6f5e
                         <varlistentry>
Harald Hoyer 1a6f5e
-                                <term><filename>root-fs.target</filename></term>
Harald Hoyer 1a6f5e
+                                <term><filename>initrd-root-fs.target</filename></term>
Harald Hoyer 1a6f5e
                                 <listitem>
Harald Hoyer 1a6f5e
                                         <para>systemd automatically
Harald Hoyer 1a6f5e
                                         adds dependencies of type
Harald Hoyer 1a6f5e
diff --git a/src/core/special.h b/src/core/special.h
Harald Hoyer 1a6f5e
index 52e593b..c7b856e 100644
Harald Hoyer 1a6f5e
--- a/src/core/special.h
Harald Hoyer 1a6f5e
+++ b/src/core/special.h
Harald Hoyer 1a6f5e
@@ -49,7 +49,7 @@
Harald Hoyer 1a6f5e
 #define SPECIAL_LOCAL_FS_TARGET "local-fs.target"
Harald Hoyer 1a6f5e
 #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target"
Harald Hoyer 1a6f5e
 #define SPECIAL_INITRD_FS_TARGET "initrd-fs.target"
Harald Hoyer 1a6f5e
-#define SPECIAL_ROOT_FS_TARGET "root-fs.target"
Harald Hoyer 1a6f5e
+#define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.target"
Harald Hoyer 1a6f5e
 #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target"       /* LSB's $remote_fs */
Harald Hoyer 1a6f5e
 #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target"
Harald Hoyer 1a6f5e
 #define SPECIAL_SWAP_TARGET "swap.target"
Harald Hoyer 1a6f5e
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
Harald Hoyer 1a6f5e
index b4fb134..cf85d31 100644
Harald Hoyer 1a6f5e
--- a/src/fstab-generator/fstab-generator.c
Harald Hoyer 1a6f5e
+++ b/src/fstab-generator/fstab-generator.c
Harald Hoyer 1a6f5e
@@ -199,6 +199,12 @@ static bool mount_in_initrd(struct mntent *me) {
Harald Hoyer 1a6f5e
                 streq(me->mnt_dir, "/usr");
Harald Hoyer 1a6f5e
 }
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
+static bool mount_is_rootfs(struct mntent *me) {
Harald Hoyer 1a6f5e
+        assert(me);
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
+        return hasmntopt(me, "x-initrd-rootfs.mount");
Harald Hoyer 1a6f5e
+}
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
 static int add_mount(const char *what, const char *where, const char *type, const char *opts,
Harald Hoyer 1a6f5e
                      int passno, bool noauto, bool nofail, bool automount, bool isbind,
Harald Hoyer 1a6f5e
                      const char *pre, const char *post, const char *source) {
Harald Hoyer 1a6f5e
@@ -434,6 +440,9 @@ static int parse_fstab(const char *prefix, bool initrd) {
Harald Hoyer 1a6f5e
                         if (initrd) {
Harald Hoyer 1a6f5e
                                 post = SPECIAL_INITRD_FS_TARGET;
Harald Hoyer 1a6f5e
                                 pre = NULL;
Harald Hoyer 1a6f5e
+                        } else if (mount_is_rootfs(me)) {
Harald Hoyer 1a6f5e
+                                post = SPECIAL_INITRD_ROOT_FS_TARGET;
Harald Hoyer 1a6f5e
+                                pre = NULL;
Harald Hoyer 1a6f5e
                         } else if (mount_is_network(me)) {
Harald Hoyer 1a6f5e
                                 post = SPECIAL_REMOTE_FS_TARGET;
Harald Hoyer 1a6f5e
                                 pre = SPECIAL_REMOTE_FS_PRE_TARGET;
Harald Hoyer 1a6f5e
@@ -525,7 +534,7 @@ static int parse_new_root_from_proc_cmdline(void) {
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
         log_debug("Found entry what=%s where=/sysroot type=%s", what, type);
Harald Hoyer 1a6f5e
         r = add_mount(what, "/sysroot", type, opts, 0, false, false, false,
Harald Hoyer 1a6f5e
-                      false, NULL, SPECIAL_ROOT_FS_TARGET, "/proc/cmdline");
Harald Hoyer 1a6f5e
+                      false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline");
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
         return (r < 0) ? r : 0;
Harald Hoyer 1a6f5e
 }
Harald Hoyer 1a6f5e
diff --git a/units/initrd-cleanup.service.in b/units/initrd-cleanup.service.in
Harald Hoyer 1a6f5e
index 5bef090..218ec80 100644
Harald Hoyer 1a6f5e
--- a/units/initrd-cleanup.service.in
Harald Hoyer 1a6f5e
+++ b/units/initrd-cleanup.service.in
Harald Hoyer 1a6f5e
@@ -10,8 +10,7 @@ Description=Cleaning Up and Shutting Down Daemons
Harald Hoyer 1a6f5e
 DefaultDependencies=no
Harald Hoyer 1a6f5e
 ConditionPathExists=/etc/initrd-release
Harald Hoyer 1a6f5e
 OnFailure=emergency.target
Harald Hoyer 1a6f5e
-Wants=root-fs.target initrd-fs.target
Harald Hoyer 1a6f5e
-After=root-fs.target initrd-fs.target
Harald Hoyer 1a6f5e
+After=initrd-root-fs.target initrd-fs.target initrd.target
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
 [Service]
Harald Hoyer 1a6f5e
 Type=oneshot
Harald Hoyer 1a6f5e
diff --git a/units/initrd-fs.target b/units/initrd-fs.target
Harald Hoyer 1a6f5e
index 6ba1758..7578b88 100644
Harald Hoyer 1a6f5e
--- a/units/initrd-fs.target
Harald Hoyer 1a6f5e
+++ b/units/initrd-fs.target
Harald Hoyer 1a6f5e
@@ -11,3 +11,4 @@ Documentation=man:systemd.special(7)
Harald Hoyer 1a6f5e
 OnFailure=emergency.target
Harald Hoyer 1a6f5e
 OnFailureIsolate=yes
Harald Hoyer 1a6f5e
 ConditionPathExists=/etc/initrd-release
Harald Hoyer 1a6f5e
+After=initrd-parse-etc.service
Harald Hoyer 1a6f5e
diff --git a/units/initrd-parse-etc.service.in b/units/initrd-parse-etc.service.in
Harald Hoyer 1a6f5e
index 44fee7b..07728e2 100644
Harald Hoyer 1a6f5e
--- a/units/initrd-parse-etc.service.in
Harald Hoyer 1a6f5e
+++ b/units/initrd-parse-etc.service.in
Harald Hoyer 1a6f5e
@@ -8,13 +8,14 @@
Harald Hoyer 1a6f5e
 [Unit]
Harald Hoyer 1a6f5e
 Description=Reload Configuration from the Real Root
Harald Hoyer 1a6f5e
 DefaultDependencies=no
Harald Hoyer 1a6f5e
-Requires=root-fs.target
Harald Hoyer 1a6f5e
-After=root-fs.target
Harald Hoyer 1a6f5e
+Requires=initrd-root-fs.target
Harald Hoyer 1a6f5e
+After=initrd-root-fs.target
Harald Hoyer 1a6f5e
 OnFailure=emergency.target
Harald Hoyer 1a6f5e
 ConditionPathExists=/etc/initrd-release
Harald Hoyer 1a6f5e
 
Harald Hoyer 1a6f5e
 [Service]
Harald Hoyer 1a6f5e
 Type=oneshot
Harald Hoyer 1a6f5e
 ExecStartPre=@rootbindir@/systemctl daemon-reload
Harald Hoyer 1a6f5e
-ExecStart=@rootbindir@/systemctl start initrd-fs.target
Harald Hoyer 1a6f5e
+# we have to retrigger initrd-fs.target after daemon-reload
Harald Hoyer 1a6f5e
+ExecStart=-@rootbindir@/systemctl --no-block start initrd-fs.target
Harald Hoyer 1a6f5e
 ExecStart=@rootbindir@/systemctl --no-block start initrd-cleanup.service
Harald Hoyer 1a6f5e
diff --git a/units/root-fs.target b/units/initrd-root-fs.target
Harald Hoyer 1a6f5e
similarity index 89%
Harald Hoyer 1a6f5e
rename from units/root-fs.target
Harald Hoyer 1a6f5e
rename to units/initrd-root-fs.target
Harald Hoyer 1a6f5e
index 1351534..cd189f0 100644
Harald Hoyer 1a6f5e
--- a/units/root-fs.target
Harald Hoyer 1a6f5e
+++ b/units/initrd-root-fs.target
Harald Hoyer 1a6f5e
@@ -9,3 +9,5 @@
Harald Hoyer 1a6f5e
 Description=Initrd Root File System
Harald Hoyer 1a6f5e
 Documentation=man:systemd.special(7)
Harald Hoyer 1a6f5e
 ConditionPathExists=/etc/initrd-release
Harald Hoyer 1a6f5e
+OnFailure=emergency.target
Harald Hoyer 1a6f5e
+OnFailureIsolate=yes
Harald Hoyer 1a6f5e
diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target
Harald Hoyer 1a6f5e
index cf646c4..f347687 100644
Harald Hoyer 1a6f5e
--- a/units/initrd-switch-root.target
Harald Hoyer 1a6f5e
+++ b/units/initrd-switch-root.target
Harald Hoyer 1a6f5e
@@ -12,5 +12,5 @@ DefaultDependencies=no
Harald Hoyer 1a6f5e
 Requires=initrd-switch-root.service
Harald Hoyer 1a6f5e
 Before=initrd-switch-root.service
Harald Hoyer 1a6f5e
 AllowIsolate=yes
Harald Hoyer 1a6f5e
-Wants=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target systemd-journald.service
Harald Hoyer 1a6f5e
-After=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target emergency.service emergency.target
Harald Hoyer 1a6f5e
+Wants=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target systemd-journald.service
Harald Hoyer 1a6f5e
+After=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target emergency.service emergency.target
Harald Hoyer 1a6f5e
diff --git a/units/initrd.target b/units/initrd.target
Harald Hoyer 1a6f5e
new file mode 100644
Harald Hoyer 1a6f5e
index 0000000..5622de4
Harald Hoyer 1a6f5e
--- /dev/null
Harald Hoyer 1a6f5e
+++ b/units/initrd.target
Harald Hoyer 1a6f5e
@@ -0,0 +1,17 @@
Harald Hoyer 1a6f5e
+#  This file is part of systemd.
Harald Hoyer 1a6f5e
+#
Harald Hoyer 1a6f5e
+#  systemd is free software; you can redistribute it and/or modify it
Harald Hoyer 1a6f5e
+#  under the terms of the GNU Lesser General Public License as published by
Harald Hoyer 1a6f5e
+#  the Free Software Foundation; either version 2.1 of the License, or
Harald Hoyer 1a6f5e
+#  (at your option) any later version.
Harald Hoyer 1a6f5e
+
Harald Hoyer 1a6f5e
+[Unit]
Harald Hoyer 1a6f5e
+Description=Initrd Target
Harald Hoyer 1a6f5e
+Documentation=man:systemd.special(7)
Harald Hoyer 1a6f5e
+OnFailure=emergency.target
Harald Hoyer 1a6f5e
+OnFailureIsolate=yes
Harald Hoyer 1a6f5e
+ConditionPathExists=/etc/initrd-release
Harald Hoyer 1a6f5e
+Requires=basic.target
Harald Hoyer 1a6f5e
+Wants=initrd-root-fs.target initrd-fs.target initrd-parse-etc.service
Harald Hoyer 1a6f5e
+After=initrd-root-fs.target initrd-fs.target basic.target rescue.service rescue.target
Harald Hoyer 1a6f5e
+AllowIsolate=yes
Harald Hoyer 1a6f5e
-- 
Harald Hoyer 1a6f5e
1.8.1
Harald Hoyer 1a6f5e