summaryrefslogtreecommitdiffstats
path: root/debian/udev.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/udev.postinst')
-rw-r--r--debian/udev.postinst88
1 files changed, 88 insertions, 0 deletions
diff --git a/debian/udev.postinst b/debian/udev.postinst
new file mode 100644
index 0000000..4206321
--- /dev/null
+++ b/debian/udev.postinst
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+set -e
+
+chrooted() {
+ if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ];
+ then
+ # the devicenumber/inode pair of / is the same as that of /sbin/init's
+ # root, so we're *not* in a chroot and hence return false.
+ return 1
+ fi
+ echo "A chroot environment has been detected, udev not started."
+ return 0
+}
+
+in_debootstrap() {
+ # debootstrap --second-stage may be run in an emulator instead of a chroot,
+ # we need to check for this special case because start-stop-daemon would
+ # not be available. (#520742)
+ if [ -d /debootstrap/ ]; then
+ echo "Being installed by debootstrap, udev not started."
+ return 0
+ fi
+ return 1
+}
+
+can_start_udevd() {
+ if [ ! -d /sys/class/ ]; then
+ echo "udev requires a mounted sysfs, not started."
+ return 1
+ fi
+ return 0
+}
+
+enable_udev() {
+ can_start_udevd || return 0
+ invoke-rc.d udev start
+}
+
+upgrade_fixes() {
+ # new Default-Stop (see #791944)
+ if dpkg --compare-versions "$2" lt-nl "239-8"; then
+ update-rc.d -f udev remove
+ fi
+}
+
+update_hwdb() {
+ systemd-hwdb --usr update || true
+}
+
+case "$1" in
+ configure)
+ # update/create hwdb before we (re)start udev
+ update_hwdb
+
+ # Add new system group used by udev rules
+ addgroup --quiet --system input
+
+ # Make /dev/kvm accessible to kvm group
+ addgroup --quiet --system kvm
+
+ # Make /dev/dri/renderD* accessible to render group
+ addgroup --quiet --system render
+
+ if [ -z "$2" ]; then # first install
+ if ! chrooted && ! in_debootstrap; then
+ enable_udev
+ fi
+ else # upgrades
+ upgrade_fixes "$@"
+ if ! chrooted; then
+ if can_start_udevd; then
+ if [ -d /run/systemd/system ] ; then
+ systemctl daemon-reload || true
+ fi
+ invoke-rc.d udev restart
+ fi
+ fi
+ fi
+ ;;
+
+ triggered)
+ update_hwdb
+ exit 0
+ ;;
+esac
+
+#DEBHELPER#