#! /bin/bash # start_udev # script to initialize /dev by using udev. # # Copyright (C) 2004 Greg Kroah-Hartman # Released under the GPL v2 only. . /etc/udev/udev.conf prog=udev sysfs_dir=/sys bin=/sbin/udev udevd=/sbin/udevd run_udev () { # handle block devices and their partitions for i in ${sysfs_dir}/block/*; do # add each drive export DEVPATH=${i#${sysfs_dir}} #echo "$DEVPATH" $bin block # add each partition, on each device for j in $i/*; do if [ -f $j/dev ]; then export DEVPATH=${j#${sysfs_dir}} #echo "$DEVPATH" $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-` #echo "$DEVPATH" $bin $CLASS fi done done return 0 } make_extra_nodes () { # there are a few things that sysfs does not export for us. # these things go here (and remember to remove them in # remove_extra_nodes() ln -snf /proc/self/fd $udev_root/fd ln -snf /proc/self/fd/0 $udev_root/stdin ln -snf /proc/self/fd/1 $udev_root/stdout ln -snf /proc/self/fd/2 $udev_root/stderr ln -snf /proc/kcore $udev_root/core ( cd $udev_root ; ln -sf psaux mouse ) mkdir $udev_root/pts mkdir $udev_root/shm } # If we see sysfs mounted, then try to start udev: if [ -d $sysfs_dir/block ]; then echo "Initializing udev dynamic device directory." mount -n -t ramfs none $udev_root export ACTION=add export UDEV_NO_SLEEP=1 # You can use the shell scripts above by calling run_udev or execute udevstart # which does the same thing, but much faster by not using shell. # only comment out one of the following lines. #run_udev /sbin/udevstart make_extra_nodes fi