udev initscript for testing
Niki Guldbrand
niki at lunar-linux.org
Fri Mar 5 16:26:06 GMT 2004
Hey Nestu.
I have fixed the initscript a little, so that you don't see all those
error messages from the removal of the symlinks if the stop command is
run twice.
But else it seems to be running fine here...
Niki
On Fri, 2004-03-05 at 12:59 +0100, nestu wrote:
> 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
-------------- next part --------------
#! /bin/bash
#
# 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()
if [ -e $udev_root/fd ] ; then rm $udev_root/fd; fi
if [ -e $udev_root/stdin ] ; then rm $udev_root/stdin; fi
if [ -e $udev_root/stdout ] ; then rm $udev_root/stdout; fi
if [ -e $udev_root/stderr ] ; then rm $udev_root/stderr; fi
if [ -e $udev_root/core ] ; then rm $udev_root/core; fi
#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