mirror of
https://git.proxmox.com/git/systemd
synced 2026-01-08 16:12:58 +00:00
- 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.
82 lines
2.0 KiB
Bash
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#
|