udev initscript for testing
nestu
nestu at lunar-linux.org
Fri Mar 5 12:59:46 GMT 2004
Hello udev users ;)
I've attached a udev initscript that florin and I need to
test. It works for me and not for florin, so we need a
little more testing, to see what's wrong (we don't seeem to
find the problem). If we get good feedback, we'll add it to
udev module, and bump to 021. The attached udev must go in
whatever placement your lin'ed udev put it, because it could
have been installed under /etc/rc.d/init.d/ or /etc/init.d/
( *please* check lvu install udev to know where it was placed).
TIA,
nestu && florin
--
Lunar Linux http://www.lunar-linux.org
XFce Desktop http://www.xfce.org
#OnlyLinux LUG http://www.onlylinux.no-ip.org
QOTD:
<Fuzzbox> "Lunar dev looking for a pretty girl to show her
the stars"
QOT?:
<Veerappan> also, i'm upset. my roommate's treadmill is too
short.
<Veerappan> another foot, and my bike would fit :)
-------------- next part --------------
#! /bin/bash -x
#
# udev init script to setup /udev
#
# chkconfig: 2345 20 80
# description: manage user-space device nodes in /udev
# . /etc/rc.d/init.d/functions
. /etc/udev/udev.conf
prog=udev
sysfs_dir=/sys
bin=/sbin/udev
udevd=/sbin/udevd
udev_root=/udev
# **** Added by florin && nestu, 2004/03/05 ****
# if this subdir doesn't exist, create it
test -d /var/lock/subsys/ || mkdirhier /var/lock/subsys/
# originally in /etc/rc.d/init.d/functions, it has been changed
# and brought here
success() {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"
[ "$BOOTUP" = "color" ] && $MOVE_TO_COL
echo -n "[ "
[ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
echo -n $"OK"
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo -n " ]"
echo -ne "\r"
return 0
}
# **** end added by nestu && florin, 2004/03/05 ****
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
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()
#
# Thanks to Gentoo for the initial list of these.
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
#ln -snf /proc/asound/oss/sndstat $udev_root/sndstat
}
remove_extra_nodes () {
# get rid of the extra nodes created in make_extra_nodes()
rm $udev_root/fd
rm $udev_root/stdin
rm $udev_root/stdout
rm $udev_root/stderr
rm $udev_root/core
#rm $udev_root/sndstat
}
case "$1" in
start)
# don't use udev if sysfs is not mounted.
if [ ! -d $sysfs_dir/block ]; 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/.udev.tdb ]; then
rm -f $udev_root/.udev.tdb
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
export ACTION=add
echo -n $"Creating initial udev device nodes:"
run_udev
make_extra_nodes
# We want to start udevd ourselves if it isn't already running. This
# lets udevd run at a sane nice level...
$udevd &
success /bin/true
echo
touch /var/lock/subsys/udev
;;
stop)
# be careful
echo -n $"Removing udev device nodes: "
export ACTION=remove
run_udev
remove_extra_nodes
success /bin/true
echo
rm -f /var/lock/subsys/udev
;;
status)
if [ -f /var/lock/subsys/udev ]; then
echo $"$prog has run"
exit 0
fi
echo $"$prog is stopped"
exit 3
;;
restart)
$0 stop
$0 start
;;
reload)
# nothing to do here
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
More information about the Lunar
mailing list