[lxc-devel] [PATCH] lxc-debian: support systemd as PID 1
Antonio Terceiro
terceiro at debian.org
Wed Nov 19 12:51:46 UTC 2014
Containers with systemd need a somewhat special setup, which I borrowed
and adaptec from lxc-fedora. These changes are required so that Debian 8
(jessie) containers work properly, and are a no-op for previous Debian
versions.
Signed-off-by: Antonio Terceiro <terceiro at debian.org>
---
templates/lxc-debian.in | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/templates/lxc-debian.in b/templates/lxc-debian.in
index 5ffbe21..6864a98 100644
--- a/templates/lxc-debian.in
+++ b/templates/lxc-debian.in
@@ -183,6 +183,34 @@ install_packages()
fi
}
+configure_debian_systemd()
+{
+ rootfs=$1
+ init="$(chroot ${rootfs} dpkg-query --search /sbin/init | cut -d : -f 1)"
+ if [ "$init" != "systemd-sysv" ]; then
+ # systemd is not PID 1
+ return
+ fi
+
+ # This function has been copied and adapted from lxc-fedora
+ rm -f ${rootfs}/etc/systemd/system/default.target
+ touch ${rootfs}/etc/fstab
+ chroot ${rootfs} ln -s /dev/null /etc/systemd/system/udev.service
+ chroot ${rootfs} ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
+ # Make systemd honor SIGPWR
+ chroot ${rootfs} ln -s /lib/systemd/system/halt.target /etc/systemd/system/sigpwr.target
+ sed -e 's/^ConditionPathExists=/# ConditionPathExists=/' \
+ -e 's/After=dev-%i.device/After=/' \
+ < ${rootfs}/lib/systemd/system/getty\@.service \
+ > ${rootfs}/etc/systemd/system/getty\@.service
+ # Setup getty service on the 4 ttys we are going to allow in the
+ # default config. Number should match lxc.tty
+ ( cd ${rootfs}/etc/systemd/system/getty.target.wants
+ for i in 1 2 3 4 ; do ln -sf ../getty\@.service getty at tty${i}.service; done )
+
+ return 0
+}
+
cleanup()
{
rm -rf $cache/partial-$release-$arch
@@ -522,6 +550,8 @@ if [ $? -ne 0 ]; then
exit 1
fi
+configure_debian_systemd $rootfs
+
copy_configuration $path $rootfs $name $arch
if [ $? -ne 0 ]; then
echo "failed write configuration file"
--
2.1.3
More information about the lxc-devel
mailing list