]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Support SIGPWR in Fedora and Centos containers.
authorMichael H. Warfield <mhw@WittsEnd.com>
Sat, 22 Mar 2014 17:58:35 +0000 (13:58 -0400)
committerStéphane Graber <stgraber@ubuntu.com>
Sun, 23 Mar 2014 00:58:03 +0000 (20:58 -0400)
Added code to catch SIGPWR for Upstart in Fedora and CentOS
containers as well as for Systemd in Fedora containers.

Signed-off-by: Michael H. Warfield <mhw@WittsEnd.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
templates/lxc-centos.in
templates/lxc-fedora.in

index f11a98cc3ffde98580840680a90424a8b902e576..6d9e512a2cfff29dbbfef60af3c08d8e1988658b 100644 (file)
@@ -363,6 +363,18 @@ configure_centos_init()
         chroot ${rootfs_path} chkconfig udev-post off
     fi
     chroot ${rootfs_path} chkconfig network on
+
+    if [ -d ${rootfs_path}/etc/init ]
+    then
+       # This is to make upstart honor SIGPWR
+        cat <<EOF >${rootfs_path}/etc/init/power-status-changed.conf
+#  power-status-changed - shutdown on SIGPWR
+#
+start on power-status-changed
+    
+exec /sbin/shutdown -h now "SIGPWR received"
+EOF
+    fi
 }
 
 download_centos()
index f32ca5343ebdeccb485453b025aab254484c385b..16f0c55e1d20815a988481b282e519b142b67576 100644 (file)
@@ -339,6 +339,19 @@ configure_fedora_init()
     sed -i 's/^.*dev.pts.*$/#\0/' ${rootfs_path}/etc/rc.d/rc.sysinit
     chroot ${rootfs_path} chkconfig udev-post off
     chroot ${rootfs_path} chkconfig network on
+
+    if [ -d ${rootfs_path}/etc/init ]
+    then
+       # This is to make upstart honor SIGPWR.  Should do no harm
+       # on systemd systems and some systems may have both.
+        cat <<EOF >${rootfs_path}/etc/init/power-status-changed.conf
+#  power-status-changed - shutdown on SIGPWR
+#
+start on power-status-changed
+    
+exec /sbin/shutdown -h now "SIGPWR received"
+EOF
+    fi
 }
 
 configure_fedora_systemd()
@@ -348,6 +361,8 @@ configure_fedora_systemd()
     chroot ${rootfs_path} ln -s /dev/null /etc/systemd/system/udev.service
     chroot ${rootfs_path} ln -s /dev/null /etc/systemd/system/systemd-journald.service
     chroot ${rootfs_path} ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
+    # Make systemd honor SIGPWR
+    chroot ${rootfs_path} ln -s /usr/lib/systemd/system/halt.target /etc/systemd/system/
     #dependency on a device unit fails it specially that we disabled udev
     # sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
     #