summaryrefslogtreecommitdiff
path: root/share/hooks/lxc/1080-systemd.hook.chroot
blob: 4ac5baded9c9644629addcb793b2aea5d66bacac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/sh

set -e

if [ ! -e /lib/systemd/systemd ]
then
	# System does not use systemd
	exit 0
fi

_LXC_CONSOLES="6"
_LXC_DISABLE_SERVICES="checkroot.service dev-hugepages.mount dev-mqueue.mount proc-sys-fs-binfmt_misc.automount remount-rootfs.service run-lock.mount run-user.mount swap.target sys-kernel-debug.mount sys-kernel-security.mount systemd-modules-load.service systemd-remount-api-vfs.service systemd-sysctl.service systemd-update-utmp-runlevel.service udev.service udev-settle.service udev-trigger.service user.mount var-lock.mount systemd-update-utmp-runlevel.service rescue.target sys-fs-fuse-connections.mount"

# systemd starts counting consoles at 0, not 1 like sysvinit.
_LXC_CONSOLES="$((${_LXC_CONSOLES} - 1))"

# Disable sulogin
ln -sf /dev/null /etc/systemd/system/console-shell.service

# Disable ctrlaltdel
ln -sf /dev/null /etc/systemd/system/ctrl-alt-del.target

# Disable normal getty
rm -f /etc/systemd/system/getty.target.wants/getty@*.service

# Enable container getty
sed -e 's|^ *BindTo=|#BindTo=|' /lib/systemd/system/getty@.service > /etc/systemd/system/getty.target.wants/getty@console.service

for _CONSOLE in $(seq 0 ${_LXC_CONSOLES})
do
	if [ -L /etc/systemd/system/getty.target.wants/getty@tty${_CONSOLE}.service ]
	then
		rm -f /etc/systemd/system/getty.target.wants/getty@tty${_CONSOLE}.service
	fi

	sed -e 's|^ *BindTo=|#BindTo=|' /lib/systemd/system/getty@.service > /etc/systemd/system/getty.target.wants/getty@tty${_CONSOLE}.service
done

# Enable powerfail for lxc-shutdown
ln -sf /lib/systemd/system/reboot.target /etc/systemd/system/sigpwr.target

# Disable default cpu and cpupacct
grep -Eq '^ *JoinControllers=' /etc/systemd/system.conf || echo "JoinControllers=" >> /etc/systemd/system.conf

sed -e 's|^ *JoinControllers=.*|JoinControllers=|' /etc/systemd/system.conf > /etc/systemd/system.conf.tmp
mv /etc/systemd/system.conf.tmp /etc/systemd/system.conf

# squeeze and newer have /dev/tty and /dev/tty0 by default
for _CONSOLE in $(seq 0 ${_LXC_CONSOLES})
do
	if [ ! -e "/dev/tty${_CONSOLE}" ]
	then
		mknod "/dev/tty${_CONSOLE}" c 4 "${_CONSOLE}"
	fi
done

# Remove uneeded services in a container
for _SERVICE in ${_LXC_DISABLE_SERVICES}
do
	ln -sf "/dev/null" "/etc/systemd/system/${_SERVICE}"
done

# Disable setting CapabilityBoundingSet for journald
sed -e 's/^ *CapabilityBoundingSet/\#&/' /lib/systemd/system/systemd-journald.service > /etc/systemd/system/systemd-journald.service

# Disable setting CapabilityBoundingSet for logind
sed -e 's/^ *CapabilityBoundingSet/\#&/' /lib/systemd/system/systemd-logind.service > /etc/systemd/system/systemd-logind.service