. /etc/rc.d/init.d/functions
-udev_dir=/udev
+. /etc/udev/udev.conf
+
sysfs_dir=/sys
bin=/sbin/udev
+run_udev () {
+ # handle block devices and their partitions
+ for i in ${sysfs_dir}/block/*; do
+ # add each drive
+ export DEVPATH=${i#${sysfs_dir}}
+ $bin block &
+
+ # add each partition, on each device
+ for j in $i/*; do
+ if [ -f $j/dev ]; then
+ export DEVPATH=${j#${sysfs_dir}}
+ $bin block &
+ fi
+ done
+ done
+ # all other device classes
+ for i in ${sysfs_dir}/class/*; do
+ for j in $i/*; do
+ if [ -f $j/dev ]; then
+ export DEVPATH=${j#${sysfs_dir}}
+ CLASS=`echo ${i#${sysfs_dir}} | \
+ cut --delimiter='/' --fields=3-`
+ $bin $CLASS &
+ fi
+ done
+ done
+}
+
+
case "$1" in
start)
- if [ ! -d $udev_dir ]; then
- mkdir $udev_dir
- fi
if [ ! -d $sysfs_dir ]; then
exit 1
fi
+ if [ ! -d $udev_root ]; then
+ mkdir $udev_root
+ fi
+
+ # remove the database if it is there as we always want to start fresh
+ if [ -f $udev_root/.udevdb ]; then
+ rm -f $udev_root/.udevdb
+ fi
+
# propogate /udev from /sys - we only need this while we do not
# have initramfs and an early user-space with which to do early
# device bring up
action "Creating initial udev device nodes: " /bin/true
export ACTION=add
- # add tty devices
- for i in ${sysfs_dir}/class/tty/*; do
- export DEVPATH="/"`echo $i | cut --delimiter='/' --fields=3-`
- $bin tty
- done
- # add block devices and their partitions
- for i in ${sysfs_dir}/block/*; do
- export DEVPATH="/"`echo $i | cut --delimiter='/' --fields=3-`
- $bin block
- for j in $i/*; do
- if [ -f $j/dev ]; then
- export DEVPATH="/"`echo $j | \
- cut --delimiter='/' --fields=3-`
- $bin block
- fi
- done
- done
- # TODO: add other device classes
+ run_udev
;;
stop)
# be careful
- if [ $udev_dir -a "$udev_dir" != "/" ]; then
- # clear out /udev
- rm -rf ${udev_dir}/*
- fi
+ action "Removing udev device nodes: " /bin/true
+ export ACTION=remove
+ run_udev
;;
status)
- if [ -d $udev_dir ]; then
+ if [ -d $udev_root ]; then
echo "the udev device node directory exists"
else
echo "the udev device node directory does not exist"
fi
;;
- restart|reload)
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ reload)
# nothing to do here
;;
*)
- echo "Usage: $0 {start|stop|status}"
+ echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac