Adding lxc specific hooks.
This commit is contained in:
parent
7ce82acee7
commit
1db5b4a96e
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Disabling loginuid (requires read-write proc filesystem)
|
||||||
|
if grep -E -qs "^ *session *required *pam_loginuid.so" /etc/pam.d/login
|
||||||
|
then
|
||||||
|
sed -i -e 's|^.*\(session.*required.*pam_loginuid.so\)$|#\1|' /etc/pam.d/login
|
||||||
|
fi
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Disabling loginuid (requires read-write proc filesystem)
|
||||||
|
if grep -E -qs "^ *session *required *pam_loginuid.so" /etc/pam.d/cron
|
||||||
|
then
|
||||||
|
sed -i -e 's|^.*\(session.*required.*pam_loginuid.so\)$|#\1|' /etc/pam.d/cron
|
||||||
|
fi
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# /etc/default/hwclock is supported as of util-linux version 2.20.1-5
|
||||||
|
_UTIL_LINUX_VERSION="$(dpkg -l util-linux | awk '/^ii/ { print $3 }')"
|
||||||
|
|
||||||
|
if dpkg --compare-versions "${_UTIL_LINUX_VERSION}" lt 2.20.1-5~
|
||||||
|
then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e /etc/default/hwclock ]
|
||||||
|
then
|
||||||
|
. /etc/default/hwclock
|
||||||
|
|
||||||
|
# HWCLOCKACCESS is commented in /etc/default/hwclock
|
||||||
|
if [ -z "${HWCLOCKACCESS}" ]
|
||||||
|
then
|
||||||
|
# uncommenting it
|
||||||
|
sed -e "s|^# *HWCLOCKACCESS=|HWCLOCKACCESS=|" \
|
||||||
|
/etc/default/hwclock > /etc/default/hwclock.tmp
|
||||||
|
else
|
||||||
|
cp /etc/default/hwclock /etc/default/hwclock.tmp
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
touch /etc/default/hwclock.tmp
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the hwclock parameters
|
||||||
|
grep -Eq '^ *HWCLOCKACCESS=' /etc/default/hwclock.tmp || \
|
||||||
|
echo "HWCLOCKACCESS=" >> /etc/default/hwclock.tmp
|
||||||
|
|
||||||
|
sed -i -e "s|^ *HWCLOCKACCESS=.*|HWCLOCKACCESS=\"${_HWCLOCKACCESS}\"|" \
|
||||||
|
/etc/default/hwclock.tmp
|
||||||
|
|
||||||
|
mv /etc/default/hwclock.tmp /etc/default/hwclock
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
for _FILE in /etc/rsyslog.conf /etc/rsyslog.d/*
|
||||||
|
do
|
||||||
|
if [ -e "${_FILE}" ]
|
||||||
|
then
|
||||||
|
sed -i -e 's|^ *$ModLoad *imklog|#$ModLoad imklog|' "${_FILE}"
|
||||||
|
fi
|
||||||
|
done
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Disable SELinux
|
||||||
|
mkdir -p /sys/fs/selinux
|
||||||
|
echo 0 > /sys/fs/selinux/enforce.tmp
|
||||||
|
mv /sys/fs/selinux/enforce.tmp /sys/fs/selinux/enforce
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Disabling loginuid (requires read-write proc filesystem)
|
||||||
|
if grep -E -qs "^ *session *required *pam_loginuid.so" /etc/pam.d/sshd
|
||||||
|
then
|
||||||
|
sed -i -e 's|^.*\(session.*required.*pam_loginuid.so\)$|#\1|' /etc/pam.d/sshd
|
||||||
|
fi
|
|
@ -0,0 +1,177 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
_LXC_CONSOLES="6"
|
||||||
|
_LXC_DISABLE_SERVICES="checkroot.sh hwclockfirst.sh hwclock.sh kmod module-init-tools mountall.sh mountkernfs.sh umountfs umountroot"
|
||||||
|
|
||||||
|
if [ ! -e /usr/share/sysvinit/inittab ]
|
||||||
|
then
|
||||||
|
# System does not use sysvinit
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Revert /etc/inittab
|
||||||
|
cp -p /usr/share/sysvinit/inittab /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Disable sulogin
|
||||||
|
# ~~:S:wait:/sbin/sulogin
|
||||||
|
sed -i -e 's|\(^[^#].*S:wait:.*$\)|#\1|' /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Disable ctrlaltdel
|
||||||
|
# ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
|
||||||
|
sed -i -e 's|\(^[^#].*:ctrlaltdel:.*$\)|#\1|' /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Disable power
|
||||||
|
# pf::powerwait:/etc/init.d/powerfail start
|
||||||
|
# pn::powerfailnow:/etc/init.d/powerfail now
|
||||||
|
# po::powerokwait:/etc/init.d/powerfail stop
|
||||||
|
sed -i -e 's|\(^[^#].*:power.*:.*$\)|#\1|' /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Disable normal getty
|
||||||
|
# 1:2345:respawn:/sbin/getty 38400 tty1
|
||||||
|
# 2:23:respawn:/sbin/getty 38400 tty2
|
||||||
|
# 3:23:respawn:/sbin/getty 38400 tty3
|
||||||
|
# ...
|
||||||
|
# Keep container getty
|
||||||
|
# 1:2345:respawn:/sbin/getty 38400 console
|
||||||
|
# c1:23:respawn:/sbin/getty 38400 tty1
|
||||||
|
# c2:23:respawn:/sbin/getty 38400 tty2
|
||||||
|
# ...
|
||||||
|
sed -i -e 's|\(^[^#,^c].*:respawn:/sbin/getty.*[^console,linux]$\)|#\1|' /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Enable container getty
|
||||||
|
# 1:2345:respawn:/sbin/getty 38400 console
|
||||||
|
# c1:23:respawn:/sbin/getty 38400 tty1
|
||||||
|
# c2:23:respawn:/sbin/getty 38400 tty2
|
||||||
|
|
||||||
|
if [ -e /etc/progress-linux_version ]
|
||||||
|
then
|
||||||
|
_OPTIONS="--nohostname 38400"
|
||||||
|
else
|
||||||
|
_OPTIONS="38400"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Assemble new entries
|
||||||
|
_CONSOLES="\n#-- live-debconfig begin\n1:2345:respawn:/sbin/getty ${_OPTIONS} console"
|
||||||
|
|
||||||
|
for _CONSOLE in $(seq 1 ${_LXC_CONSOLES})
|
||||||
|
do
|
||||||
|
_CONSOLES="${_CONSOLES}\nc${_CONSOLE}:12345:respawn:/sbin/getty ${_OPTIONS} tty${_CONSOLE} linux"
|
||||||
|
done
|
||||||
|
|
||||||
|
_CONSOLES="${_CONSOLES}\n#-- live-debconfig end"
|
||||||
|
|
||||||
|
# Remove old entries
|
||||||
|
sed -i -e '/#-- live-debconfig begin/,/#-- live-debconfig end/d' /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Add new entries
|
||||||
|
_CONSOLE="$(grep '#[0-9].*:respawn:/sbin/getty' /etc/inittab.tmp | tail -1)"
|
||||||
|
|
||||||
|
sed -i -e "s|\(${_CONSOLE}\)|\1${_CONSOLES}|" /etc/inittab.tmp
|
||||||
|
|
||||||
|
# Enable powerfail entries for lxc-shutdown
|
||||||
|
if ! grep -qs ^p0:: /etc/inittab.tmp
|
||||||
|
then
|
||||||
|
echo "p0::powerfail:/sbin/init 0" >> /etc/inittab.tmp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -qs ^p6:: /etc/inittab.tmp
|
||||||
|
then
|
||||||
|
echo "p6::ctrlaltdel:/sbin/init 6" >> /etc/inittab.tmp
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv /etc/inittab.tmp /etc/inittab
|
||||||
|
|
||||||
|
# squeeze and newer have /dev/tty and /dev/tty0 by default
|
||||||
|
for _CONSOLE in $(seq 1 ${_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
|
||||||
|
# service does not exist
|
||||||
|
if [ ! -e /etc/init.d/${_SERVICE} ]
|
||||||
|
then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
_ALREADY_DISABLED="false"
|
||||||
|
|
||||||
|
# service is already disabled
|
||||||
|
for _RUNLEVEL in /etc/rc*.d
|
||||||
|
do
|
||||||
|
if ! ls ${_RUNLEVEL}/K*${_SERVICE} > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
# disabled services have stop links in all runlevels
|
||||||
|
# if at least one runlevel does not have a stop link,
|
||||||
|
# then the service was not disabled and we need to continue
|
||||||
|
# with disabling the service later on
|
||||||
|
_ALREADY_DISABLED="false"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# service is indeed already disabled
|
||||||
|
_ALREADY_DISABLED="true"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${_ALREADY_DISABLED}" = "false" ]
|
||||||
|
then
|
||||||
|
if ls /etc/rc*.d/K*${_SERVICE} > /dev/null 2>&1 && \
|
||||||
|
! ls /etc/rc*.d/S*${_SERVICE} > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
# service has only stop links
|
||||||
|
# therefore, using 'update-rc.d disable' does not work,
|
||||||
|
# and using 'update-rc.d remove' is not upgrade safe
|
||||||
|
# (on upgrades, the stop links would be re-added).
|
||||||
|
for _SYMLINK in /etc/rc*.d/K*${_SERVICE}
|
||||||
|
do
|
||||||
|
LIVE_INITSCRIPT_EMPTY="true"
|
||||||
|
|
||||||
|
rm -f ${_SYMLINK}
|
||||||
|
ln -s /bin/live-initscripts-empty-stop ${_SYMLINK}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# service is a normal service with both start and stop links
|
||||||
|
update-rc.d -f ${_SERVICE} disable 2>&1 | \
|
||||||
|
grep -v -e "^insserv: warning:" \
|
||||||
|
-e "^update-rc.d: warning:" \
|
||||||
|
-e "^update-rc.d: using dependency based boot sequencing" \
|
||||||
|
-e "^update-rc.d: error: .* Default-Start contains no runlevels, aborting." \
|
||||||
|
|| true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case ${LIVE_INITSCRIPT_EMPTY} in
|
||||||
|
true)
|
||||||
|
|
||||||
|
cat > /bin/live-initscripts-empty-stop < EOF
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: live-build
|
||||||
|
# Required-Start:
|
||||||
|
# Required-Stop:
|
||||||
|
# Should-Start:
|
||||||
|
# Should-Stop:
|
||||||
|
# Default-Start:
|
||||||
|
# Default-Stop: 0 6
|
||||||
|
# Short-Description: Live System Build Components
|
||||||
|
# Description: live-build contains the components to build a live
|
||||||
|
# system from a configuration directory.
|
||||||
|
# X-Start-Before:
|
||||||
|
# X-Stop-After:
|
||||||
|
# X-Interactive:
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,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
|
Loading…
Reference in New Issue