[lxc-devel] [PATCH] lxc-debian: support systemd as PID 1
Serge Hallyn
serge.hallyn at ubuntu.com
Fri Nov 21 04:41:00 UTC 2014
Quoting Antonio Terceiro (terceiro at debian.org):
> 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>
Michael and/or Stéphane may have other comments , but as you say this
will not regress non-systemd hosts so looks like a step in the right
direction to me, thanks.
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> 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
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list