diff options
author | greg@kroah.com <greg@kroah.com> | 2003-12-30 00:58:31 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:13:11 -0700 |
commit | 5e22c4df53cf8c8c3868cc9789027a929c4f9a60 (patch) | |
tree | 4393f307c5889b2f6c0b9750c911b6d921e90b37 /etc/init.d | |
parent | e15b5ed5ded18af1329b304fc650a1cbc8123ccc (diff) |
[PATCH] added udev.init script for the Linux From Scratch project.
Thanks to Michael Buesch <mbuesch@freenet.de> for providing it.
Diffstat (limited to 'etc/init.d')
-rw-r--r-- | etc/init.d/udev.init.lfs | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/etc/init.d/udev.init.lfs b/etc/init.d/udev.init.lfs new file mode 100644 index 0000000000..08c81733e1 --- /dev/null +++ b/etc/init.d/udev.init.lfs @@ -0,0 +1,103 @@ +#!/bin/sh +# +# LinuxFromScratch udev init script +# derived from original RedHat udev init script +# 2003 by Michael Buesch <mbuesch@freenet.de> +# + +source /etc/sysconfig/rc +source $rc_functions + +udev_dir="/udev" +sysfs_dir="/sys" +bin="/sbin/udev" + +case "$1" in + start) + echo "Creating initial udev device nodes ..." + if [ ! -d $udev_dir ]; then + mkdir $udev_dir + if [ $? -ne 0 ]; then + print_status failure + exit 1 + fi + fi + if [ ! -d $sysfs_dir ]; then + echo "sysfs_dir $sysfs_dir does not exist!" + print_status failure + exit 1 + 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 + clean_exit="yes" + export ACTION=add + # add 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 + if [ $? -ne 0 ]; then + echo "Warning: $DEVPATH failed." + clean_exit="no" + fi + 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 + if [ $? -ne 0 ]; then + echo "Warning: $DEVPATH failed." + clean_exit="no" + fi + fi + done + done + if [ $clean_exit = "yes" ]; then + print_status success + else + print_status warning + fi + ;; + stop) + echo "Removing udev device nodes ..." + # be careful + if [ $udev_dir -a "$udev_dir" != "/" ]; then + # clear out /udev + rm -rf ${udev_dir}/* + evaluate_retval + fi + ;; + reload) + # nothing to do here + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + status) + if [ -d $udev_dir ]; then + echo "the udev device node directory exists" + else + echo "the udev device node directory does not exist" + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac +exit 0 |