chiark / gitweb /
units: introduce emergency.target
authorLennart Poettering <lennart@poettering.net>
Mon, 12 Jul 2010 21:49:20 +0000 (23:49 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 12 Jul 2010 21:49:20 +0000 (23:49 +0200)
14 files changed:
Makefile.am
man/systemctl.xml
man/systemd.special.xml.in
src/manager.c
src/special.h
src/systemctl.c
units/emergency.service
units/fedora/halt.service
units/fedora/poweroff.service
units/fedora/reboot.service
units/fedora/sysinit.service
units/multi-user.target.m4
units/rescue.target
units/sysinit.target.m4

index 6351537fadf811ae84a26e92858e0173953ad0ce..51fe5a946139c47d7e6461f131de357c0339fdb6 100644 (file)
@@ -113,6 +113,7 @@ dbusinterface_DATA = \
 
 dist_systemunit_DATA = \
        units/emergency.service \
 
 dist_systemunit_DATA = \
        units/emergency.service \
+       units/emergency.target \
        units/basic.target \
        units/getty.target \
        units/halt.target \
        units/basic.target \
        units/getty.target \
        units/halt.target \
@@ -183,7 +184,8 @@ dist_systemunit_DATA += \
        units/fedora/prefdm.service \
        units/fedora/rc-local.service \
        units/fedora/reboot.service \
        units/fedora/prefdm.service \
        units/fedora/rc-local.service \
        units/fedora/reboot.service \
-       units/fedora/sysinit.service
+       units/fedora/sysinit.service \
+       units/fedora/single.service
 endif
 
 if TARGET_SUSE
 endif
 
 if TARGET_SUSE
@@ -755,7 +757,8 @@ install-data-hook:
                $(LN_S) ../system-services/org.freedesktop.systemd1.service org.freedesktop.systemd1.service )
 if TARGET_FEDORA
        $(MKDIR_P) -m 0755 \
                $(LN_S) ../system-services/org.freedesktop.systemd1.service org.freedesktop.systemd1.service )
 if TARGET_FEDORA
        $(MKDIR_P) -m 0755 \
-               $(DESTDIR)$(SYSTEM_SYSVINIT_PATH)
+               $(DESTDIR)$(SYSTEM_SYSVINIT_PATH) \
+               $(DESTDIR)$(systemunitdir)/rescue.target.wants
        ( cd $(DESTDIR)$(pkgsysconfdir)/system && \
                rm -f display-manager.service && \
                $(LN_S) $(systemunitdir)/prefdm.service display-manager.service )
        ( cd $(DESTDIR)$(pkgsysconfdir)/system && \
                rm -f display-manager.service && \
                $(LN_S) $(systemunitdir)/prefdm.service display-manager.service )
@@ -765,6 +768,9 @@ if TARGET_FEDORA
        ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \
                rm -f rc-local.service && \
                $(LN_S) $(systemunitdir)/rc-local.service rc-local.service )
        ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \
                rm -f rc-local.service && \
                $(LN_S) $(systemunitdir)/rc-local.service rc-local.service )
+       ( cd $(DESTDIR)$(systemunitdir)/rescue.target.wants && \
+               rm -f single.service && \
+               $(LN_S) $(systemunitdir)/single.service single.service )
        ( cd $(DESTDIR)$(systemunitdir) && \
                rm -f local.service && \
                $(LN_S) rc-local.service local.service )
        ( cd $(DESTDIR)$(systemunitdir) && \
                rm -f local.service && \
                $(LN_S) rc-local.service local.service )
index f0de186ea591cda852629178986f2e91caee8c4d..22d3f6ee5e5befb12860f465e1945749677d876d 100644 (file)
                                 <listitem><para>Enter emergency
                                 mode. This is mostly equivalent to
                                 <command>isolate
                                 <listitem><para>Enter emergency
                                 mode. This is mostly equivalent to
                                 <command>isolate
-                                emergency.service</command> but also
+                                emergency.target</command> but also
                                 prints a wall message to all
                                 users.</para></listitem>
                         </varlistentry>
                                 prints a wall message to all
                                 users.</para></listitem>
                         </varlistentry>
index 64e37d1149e76f1991fab9c452015712520b22b0..c6c2393fc3b4121b7204507e27d515c1f57c2c81 100644 (file)
@@ -54,7 +54,7 @@
                 <filename>dbus.target</filename>,
                 <filename>default.target</filename>,
                 <filename>display-manager.service</filename>,
                 <filename>dbus.target</filename>,
                 <filename>default.target</filename>,
                 <filename>display-manager.service</filename>,
-                <filename>emergency.service</filename>,
+                <filename>emergency.target</filename>,
                 <filename>exit.service</filename>,
                 <filename>graphical.target</filename>,
                 <filename>halt.target</filename>,
                 <filename>exit.service</filename>,
                 <filename>graphical.target</filename>,
                 <filename>halt.target</filename>,
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term><filename>emergency.service</filename></term>
+                                <term><filename>emergency.target</filename></term>
                                 <listitem>
                                 <listitem>
-                                        <para>A special service unit
+                                        <para>A special target unit
                                         that starts an emergency
                                         shell on the main
                                         console. This unit is supposed
                                         that starts an emergency
                                         shell on the main
                                         console. This unit is supposed
index 6dfef713ed9abcf16a3809cf713b2c6ee00b92bd..9667e299f3f299faa195c4443c98af9eb442a6f4 100644 (file)
@@ -1947,7 +1947,7 @@ static int manager_process_signal_fd(Manager *m) {
                         static const char * const table[] = {
                                 [0] = SPECIAL_DEFAULT_TARGET,
                                 [1] = SPECIAL_RESCUE_TARGET,
                         static const char * const table[] = {
                                 [0] = SPECIAL_DEFAULT_TARGET,
                                 [1] = SPECIAL_RESCUE_TARGET,
-                                [2] = SPECIAL_EMERGENCY_SERVICE,
+                                [2] = SPECIAL_EMERGENCY_TARGET,
                                 [3] = SPECIAL_HALT_TARGET,
                                 [4] = SPECIAL_POWEROFF_TARGET,
                                 [5] = SPECIAL_REBOOT_TARGET
                                 [3] = SPECIAL_HALT_TARGET,
                                 [4] = SPECIAL_POWEROFF_TARGET,
                                 [5] = SPECIAL_REBOOT_TARGET
index 5ecdd3ccfa1d21c34f679c7be08da3a24b783b76..9ffd3d892273d33893013c23bdc39e0f3a47aa97 100644 (file)
@@ -53,7 +53,7 @@
 #define SPECIAL_SYSINIT_TARGET "sysinit.target"
 #define SPECIAL_RESCUE_TARGET "rescue.target"
 #define SPECIAL_EXIT_SERVICE "exit.service"
 #define SPECIAL_SYSINIT_TARGET "sysinit.target"
 #define SPECIAL_RESCUE_TARGET "rescue.target"
 #define SPECIAL_EXIT_SERVICE "exit.service"
-#define SPECIAL_EMERGENCY_SERVICE "emergency.service"
+#define SPECIAL_EMERGENCY_TARGET "emergency.target"
 #define SPECIAL_HALT_TARGET "halt.target"
 #define SPECIAL_POWEROFF_TARGET "poweroff.target"
 #define SPECIAL_REBOOT_TARGET "reboot.target"
 #define SPECIAL_HALT_TARGET "halt.target"
 #define SPECIAL_POWEROFF_TARGET "poweroff.target"
 #define SPECIAL_REBOOT_TARGET "reboot.target"
index 32974aecceced7b1e45fa188590c3082f9672ab8..4218a22b97b0fd3621d303faaaac1135bbb9e9f5 100644 (file)
@@ -720,7 +720,7 @@ static int start_unit(DBusConnection *bus, char **args, unsigned n) {
                 [ACTION_RUNLEVEL4] = SPECIAL_RUNLEVEL4_TARGET,
                 [ACTION_RUNLEVEL5] = SPECIAL_RUNLEVEL5_TARGET,
                 [ACTION_RESCUE] = SPECIAL_RESCUE_TARGET,
                 [ACTION_RUNLEVEL4] = SPECIAL_RUNLEVEL4_TARGET,
                 [ACTION_RUNLEVEL5] = SPECIAL_RUNLEVEL5_TARGET,
                 [ACTION_RESCUE] = SPECIAL_RESCUE_TARGET,
-                [ACTION_EMERGENCY] = SPECIAL_EMERGENCY_SERVICE,
+                [ACTION_EMERGENCY] = SPECIAL_EMERGENCY_TARGET,
                 [ACTION_DEFAULT] = SPECIAL_DEFAULT_TARGET
         };
 
                 [ACTION_DEFAULT] = SPECIAL_DEFAULT_TARGET
         };
 
index bcedebfa089d711f8df3201b3637381c847cfa7a..a5a54bc9d23e4b4e452c8f8cec218b873ba50a55 100644 (file)
 [Unit]
 Description=Emergency Shell
 DefaultDependencies=no
 [Unit]
 Description=Emergency Shell
 DefaultDependencies=no
-Requires=shutdown.target umount.target
-After=shutdown.target umount.target
+After=shutdown.target
 
 [Service]
 
 [Service]
+ExecStartPre=-/bin/plymouth --hide-splash
+ExecStartPre=-/bin/echo 'Welcome to emergency mode. Use "systemctl default" to activate default mode.'
 ExecStart=/bin/sh
 ExecStart=/bin/sh
-StandardInput=tty
+StandardInput=tty-force
 Restart=restart-always
 RestartSec=0
 KillMode=process-group
 
 # Bash ignores SIGTERM, so we send SIGHUP first, to ensure that bash
 # terminates cleanly.
 Restart=restart-always
 RestartSec=0
 KillMode=process-group
 
 # Bash ignores SIGTERM, so we send SIGHUP first, to ensure that bash
 # terminates cleanly.
-ExecStop=/bin/kill -HUP $(MAINPID)
+ExecStop=-/bin/kill -HUP $(MAINPID)
index b957a3fe302f4ee4e6dfcab5a25b229a8f236354..4fe0d532f687fa08f97cdddf69e0e7a04e16b4ba 100644 (file)
@@ -8,9 +8,9 @@
 [Unit]
 Description=Halt
 DefaultDependencies=no
 [Unit]
 Description=Halt
 DefaultDependencies=no
-Requires=shutdown.target killall.service
-After=shutdown.target killall.service
-Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount
+Requires=shutdown.target umount.target killall.service
+Conflicts=sysinit.service
+After=shutdown.target umount.target killall.service sysinit.service
 
 [Service]
 Type=finish
 
 [Service]
 Type=finish
index 76d030c041c2cf15e51ab6ce184d87629aac183f..3a5387570772fe8e0e9f7a7f22032baa60362023 100644 (file)
@@ -8,9 +8,9 @@
 [Unit]
 Description=Power-Off
 DefaultDependencies=no
 [Unit]
 Description=Power-Off
 DefaultDependencies=no
-Requires=shutdown.target killall.service
-After=shutdown.target killall.service
-Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount
+Requires=shutdown.target umount.target killall.service
+Conflicts=sysinit.service
+After=shutdown.target umount.target killall.service sysinit.service
 
 [Service]
 Type=finish
 
 [Service]
 Type=finish
index 6a93c0b5575c29d6d02b7d04ffe50ba4219fde8d..0f3e206eb0c3bcea1c4a8ef336353d2f25c2b53d 100644 (file)
@@ -8,9 +8,9 @@
 [Unit]
 Description=Reboot
 DefaultDependencies=no
 [Unit]
 Description=Reboot
 DefaultDependencies=no
-Requires=shutdown.target killall.service
-After=shutdown.target killall.service
-Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount
+Requires=shutdown.target umount.target killall.service
+Conflicts=sysinit.service
+After=shutdown.target umount.target killall.service sysinit.service
 
 [Service]
 Type=finish
 
 [Service]
 Type=finish
index 884de8d1d636424debb95b73f33740fd9a1dc713..21872e8d8af66840832b27386222456430883ab3 100644 (file)
@@ -8,9 +8,7 @@
 [Unit]
 Description=System Initialization
 DefaultDependencies=no
 [Unit]
 Description=System Initialization
 DefaultDependencies=no
-Before=local-fs.target remote-fs.target swap.target sockets.target
-Conflicts=shutdown.target
-Before=shutdown.target
+Before=emergency.service emergency.target
 
 [Service]
 ExecStart=/etc/rc.d/rc.sysinit
 
 [Service]
 ExecStart=/etc/rc.d/rc.sysinit
index 010e7d8474016f2c16adfc3379a0d354fc779c90..323ba01a60e3300a98dc8160de7dcd2d0cf59817 100644 (file)
@@ -10,8 +10,8 @@
 [Unit]
 Description=Multi-User
 Requires=basic.target
 [Unit]
 Description=Multi-User
 Requires=basic.target
-After=basic.target
-Conflicts=rescue.target
+Conflicts=rescue.target shutdown.target
+After=basic.target rescue.target
 m4_dnl
 m4_ifdef(`TARGET_FEDORA',
 m4_dnl On Fedora Runlevel 3 is multi-user
 m4_dnl
 m4_ifdef(`TARGET_FEDORA',
 m4_dnl On Fedora Runlevel 3 is multi-user
index 0398f9bfb4a67cfc64919de67f2bc531a738deff..638f47c1e8b19a45b8ad085239c3f242a8bf6cba 100644 (file)
@@ -8,9 +8,10 @@
 # See systemd.special(7) for details
 
 [Unit]
 # See systemd.special(7) for details
 
 [Unit]
-Description=Rescue Prompt
-Requires=basic.target
-After=basic.target
+Description=Rescue Mode
+Requires=sysinit.target local-fs.target swap.target shutdown.target
+Conflicts=emergency.service emergency.target
+After=sysinit.target local-fs.target swap.target shutdown.target emergency.service emergency.target
 Names=runlevel1.target
 
 [Install]
 Names=runlevel1.target
 
 [Install]
index 48e55a4358d00d5dc1166b717b97298a66d75c66..29693b3ff2e648c8959236fd073c2c0b66aa74dc 100644 (file)
@@ -9,7 +9,8 @@
 
 [Unit]
 Description=Systemd Initialization
 
 [Unit]
 Description=Systemd Initialization
-Conflicts=emergency.service
+Conflicts=emergency.service emergency.target
+After=emergency.service emergency.target
 OnlyByDependency=yes
 m4_dnl
 m4_ifdef(`TARGET_FEDORA',
 OnlyByDependency=yes
 m4_dnl
 m4_ifdef(`TARGET_FEDORA',