#!/bin/bash # udev # Udev cold-plugging script DAEMON=/sbin/udevd DAEMON_DESC=UDEV DAEMON_OPTS="--daemon" # Source functions library source /etc/rc.d/init.d/functions log_script_name "$0 $*" udev_coldplug() { # Unlikely, but we may be faster than the first event mkdir -p /dev/udev/queue && # Configure all devices /sbin/udevadm trigger --action=add --type=subsystems && /sbin/udevadm trigger --action=add --type=devices && # Now wait for udevd to process the uevents we triggered /sbin/udevadm settle } udev_start() { # Udev handles uevents itself, so we don't need to have # the kernel call out to any binary in response to them echo "" > /sys/kernel/uevent_helper && # Start the udev daemon to continually watch for, and act on uevents ${DAEMON} ${DAEMON_OPTS} } # See how we were called case "$1" in start) if ! grep -q '[[:space:]]sysfs' /proc/mounts; then boot_failure "FAILURE: Unable to create devices without a SysFS filesystem." fi cmd_run_log_box "Copying static /dev entries" cp --preserve=all --recursive --remove-destination /lib/udev/devices/* /dev cmd_run_log_box "Setting permissons on /dev/shm" chmod 1777 /dev/shm cmd_run_log_box_warn "${DAEMON_DESC} start" udev_start cmd_run_log_box "Performing Coldplugging" udev_coldplug ;; *) echo "Usage: $0 {start}" exit ${EXIT_CODE_FAILURE} ;; esac exit $?