blob: b24d9da1e15b9404c344f7768804574015c053e9 (
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#!/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#
|