summaryrefslogtreecommitdiffstats
path: root/slackware64-current/source/a/udev/config/rc.d/rc.udev.new
diff options
context:
space:
mode:
Diffstat (limited to 'slackware64-current/source/a/udev/config/rc.d/rc.udev.new')
-rw-r--r--slackware64-current/source/a/udev/config/rc.d/rc.udev.new169
1 files changed, 169 insertions, 0 deletions
diff --git a/slackware64-current/source/a/udev/config/rc.d/rc.udev.new b/slackware64-current/source/a/udev/config/rc.d/rc.udev.new
new file mode 100644
index 000000000..40f38d1de
--- /dev/null
+++ b/slackware64-current/source/a/udev/config/rc.d/rc.udev.new
@@ -0,0 +1,169 @@
+#!/bin/sh
+# This is a script to initialize udev, which populates the /dev
+# directory with device nodes, scans for devices, loads the
+# appropriate kernel modules, and configures the devices.
+
+PATH="/sbin:/bin"
+OPT=""
+
+. /etc/udev/udev.conf
+
+# remove trailing slash from udev_root
+UDEV_ROOT=$(echo "${udev_root}" |sed 's/\/*$//')
+
+check_mounted() {
+ grep -E -q "^[^[:space:]]+ $1 $2" /proc/mounts
+ return $?
+}
+
+mount_devpts() {
+ if ! check_mounted $UDEV_ROOT/pts devpts ; then
+ mkdir $UDEV_ROOT/pts 2> /dev/null
+ mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
+ fi
+}
+
+case "$1" in
+ start)
+ # Sanity check #1, udev requires that the kernel support tmpfs:
+ if ! grep -wq tmpfs /proc/filesystems ; then
+ echo "Sorry, but you need tmpfs support in the kernel to use udev."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Sanity check #2, make sure that a 2.6.x kernel is new enough:
+ if [ "$(uname -r | cut -f 1,2 -d .)" = "2.6" ]; then
+ if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "27" ]; then
+ echo "Sorry, but you need a 2.6.27+ kernel to use udev."
+ echo "Your kernel version is only $(uname -r)."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+ fi
+
+ # Sanity check #3, make sure the udev package was not removed. If udevd
+ # is not there, this will also shut off this script to prevent further
+ # problems:
+ if [ ! -x /sbin/udevd ]; then
+ chmod 644 /etc/rc.d/rc.udev
+ echo "No udevd daemon found."
+ echo "Turning off udev: chmod 644 /etc/rc.d/rc.udev"
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Disable hotplug helper since udevd listens to netlink:
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" > /proc/sys/kernel/hotplug
+ fi
+
+ if grep -qw devtmpfs /proc/filesystems ; then
+ if ! check_mounted $UDEV_ROOT devtmpfs ; then
+ # umount shm if needed
+ check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
+
+ # Umount pts if needed, we will remount it later:
+ check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
+
+ # Mount tmpfs on $UDEV_ROOT:
+ mount -n -t devtmpfs devtmpfs $UDEV_ROOT
+ fi
+ else
+ # Mount tmpfs on $UDEV_ROOT:
+ if ! check_mounted $UDEV_ROOT tmpfs ; then
+ # umount shm if needed
+ check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
+
+ # Umount pts if needed, we will remount it later:
+ check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
+
+ # Mount tmpfs on $UDEV_ROOT:
+ # the -n is because we don't want $UDEV_ROOT umounted when
+ # someone (rc.[06]) calls umount -a
+ mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+
+ fi
+ fi
+ # Mount devpts
+ mount_devpts
+
+ # Start udevd.
+ /sbin/udevd --daemon 2>/dev/null
+
+ # If udevd was already running, then it will return !=0 exit code,
+ # so we'll try to re-run failed events
+ if [ $? != 0 ]; then
+ OPT="--type=failed $OPT"
+ ( cd ${UDEV_ROOT}/.udev
+ for TMPFILE in tmp-rules-*.rules ; do
+ mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null
+ done
+ )
+ else # udev is just now being started, so we'll do some initial setup:
+
+ # Set STARTUP=1 in the environment
+ /sbin/udevadm control --property=STARTUP=1
+
+ # Set OPT="--action=add" to generate add events on coldplug
+ OPT="--action=add"
+
+ # Add the static nodes to $UDEV_ROOT:
+ cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT
+
+ # Create rootdev rules
+ DEVICENUMBER=$( /bin/stat -c %d / )
+ MAJORNUMBER=$(($DEVICENUMBER / 256))
+ MINORNUMBER=$(($DEVICENUMBER % 256))
+
+ echo 'ACTION=="add|change", SUBSYSTEM=="block", ENV{MAJOR}=="'$MAJORNUMBER'", ENV{MINOR}=="'$MINORNUMBER'", SYMLINK+="root"' > /dev/.udev/rules.d/61-dev-root-link.rules
+
+ fi
+
+ echo "Triggering udev events: /sbin/udevadm trigger $OPT"
+ # Call udevtrigger and udevsettle to do the device configuration:
+ /sbin/udevadm trigger $OPT && /sbin/udevadm settle --timeout=120
+ # Unset STARTUP=1 in the environment
+ /sbin/udevadm control --property=STARTUP=
+
+ ;;
+ stop)
+ echo "Stopping udevd is STRONGLY discouraged and not supported."
+ echo "If you are sure you want to do this, use 'force-stop' instead."
+ ;;
+ force-stop)
+ echo "Stopping udevd"
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo /sbin/hotplug > /proc/sys/kernel/hotplug
+ fi
+ killall udevd
+ ;;
+ restart)
+ echo "Restarting udevd is STRONGLY discouraged and not supported."
+ echo "If you are sure you want to do this, use 'force-restart' instead."
+ ;;
+ force-restart)
+ echo "Restarting udevd"
+ killall udevd
+ sleep 5
+ udevd --daemon
+ ;;
+ reload)
+ echo "Reloading udev rules"
+ udevadm control --reload-rules
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+ force-reload)
+ echo "Updating all available device nodes in $UDEV_ROOT"
+ udevadm control --reload-rules
+ rm -rf $UDEV_ROOT/.udev $UDEV_ROOT/disk
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+ exit 1
+ ;;
+esac