From 779b47fdca6975f70541fbc7c25a34393ec5c24b Mon Sep 17 00:00:00 2001 From: "Michael H. Warfield" Date: Sat, 22 Mar 2014 13:58:35 -0400 Subject: [PATCH] Support SIGPWR in Fedora and Centos containers. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Acked-by: Stéphane Graber --- templates/lxc-centos.in | 12 ++++++++++++ templates/lxc-fedora.in | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/templates/lxc-centos.in b/templates/lxc-centos.in index f11a98cc3..6d9e512a2 100644 --- a/templates/lxc-centos.in +++ b/templates/lxc-centos.in @@ -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 <${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() diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in index f32ca5343..16f0c55e1 100644 --- a/templates/lxc-fedora.in +++ b/templates/lxc-fedora.in @@ -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 <${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 # -- 2.47.2