systemd/debian/udev.preinst
Martin Pitt 681aaee461 Remove obsolete udev maintainer script checks
- Drop check for kernel >= 2.6.32, which released in 2009.
  - Drop restarting of some daemons due to the devtmpfs migration, which
    happened before the above kernel even.
  - Drop support for forcing upgrades on kernels known not to work via
    /etc/udev/kernel-upgrade. Don't pretend that this would help, as users
    could end up with a non-bootable system. Always fail early in preinst
    when it's still possible to install a working kernel.
  - Drop postinst test for "running in containers" -- it's actually possible
    to run udev in containers if you mount /sys r/w and you know what you
    are doing. Also, the init.d script and systemd service do that check
    again.
  - Keep the kernel feature and chroot checks, as these are still useful.
    Simplify check_kernel_features() by eliminating some variables.
  - Drop debconf templates. Two of them are obsolete, and having
    CONFIG_SYSFS_DEPRECATED is now so implausible that this doesn't warrant
    the overhead and translator efforts.
2016-02-08 23:21:36 +01:00

82 lines
2.0 KiB
Bash

#!/bin/sh -e
# adapted from postinst
chrooted() {
if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ];
then
return 1
fi
return 0
}
check_kernel_features() {
# skip the check if udev is not already active
[ -d /run/udev/ ] || return 0
if [ -e /proc/kallsyms ]; then
local needed_symbols='inotify_init signalfd accept4 open_by_handle_at timerfd_create epoll_create'
for symbol in $needed_symbols; do
if ! egrep -q "^[a-fA-F0-9]+ T \.?sys_${symbol}$" /proc/kallsyms; then
cat <<END
Since release 198, udev requires support for the following features in
the running kernel:
- inotify(2) (CONFIG_INOTIFY_USER)
- signalfd(2) (CONFIG_SIGNALFD)
- accept4(2)
- open_by_handle_at(2) (CONFIG_FHANDLE)
- timerfd_create(2) (CONFIG_TIMERFD)
- epoll_create(2) (CONFIG_EPOLL)
END
exit 1
fi
done
fi
if ! grep -q '[[:space:]]devtmpfs$' /proc/filesystems; then
cat <<END
Since release 176, udev requires support for the following features in
the running kernel:
- devtmpfs (CONFIG_DEVTMPFS)
END
exit 1
fi
if [ -d /sys/class/mem/null -a ! -L /sys/class/mem/null ] ||
[ -e /sys/block -a ! -e /sys/class/block ]; then
cat <<END
The currently running kernel has the CONFIG_SYSFS_DEPRECATED option
enabled, which is incompatible with udev.
END
exit 1
fi
}
check_version() {
# $2 is non-empty when installing from the "config-files" state
[ -n "$2" ] || return 0
if dpkg --compare-versions $2 lt 204-4; then
# these must be checked first to allow aborting before changing anything
if chrooted; then
echo 'Running in a chroot, skipping the kernel versions checks!'
else
check_kernel_features
# suppress errors when the new rules files contain options not supported by
# the old daemon
udevadm control --log-priority=0 || true
fi
fi # 204-4
}
case "$1" in
install|upgrade|abort-upgrade)
check_version "$@"
;;
esac
#DEBHELPER#