#!/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 && # Now wait for udevd to process the uevents we triggered /sbin/udevadm settle } udev_start() { 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 # Mount a temporary file system over /dev, so that any devices # made or removed during this boot don't affect the next one. # The reason we don't write to mtab is because we don't ever # want /dev to be unavailable (such as by `umount -a'). cmd_run_log_box "Mounting /dev in tmpfs" mount -n -t tmpfs -o mode=0755 udev /dev 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 $?