chiark / gitweb /
[PATCH] added udev.init script for the Linux From Scratch project.
[elogind.git] / etc / init.d / udev.init.lfs
1 #!/bin/sh
2 #
3 # LinuxFromScratch udev init script
4 #  derived from original RedHat udev init script
5 #  2003 by Michael Buesch <mbuesch@freenet.de>
6 #
7
8 source /etc/sysconfig/rc
9 source $rc_functions
10
11 udev_dir="/udev"
12 sysfs_dir="/sys"
13 bin="/sbin/udev"
14
15 case "$1" in
16         start)
17                 echo "Creating initial udev device nodes ..."
18                 if [ ! -d $udev_dir ]; then
19                         mkdir $udev_dir
20                         if [ $? -ne 0 ]; then
21                                 print_status failure
22                                 exit 1
23                         fi
24                 fi
25                 if [ ! -d $sysfs_dir ]; then
26                         echo "sysfs_dir $sysfs_dir does not exist!"
27                         print_status failure
28                         exit 1
29                 fi
30                 # propogate /udev from /sys - we only need this while we do not
31                 # have initramfs and an early user-space with which to do early
32                 # device bring up
33                 clean_exit="yes"
34                 export ACTION=add
35                 # add block devices and their partitions
36                 for i in ${sysfs_dir}/block/*; do
37                         # add each drive
38                         export DEVPATH=${i#${sysfs_dir}}
39                         $bin block
40
41                         # add each partition, on each device
42                         for j in $i/*; do
43                                 if [ -f $j/dev ]; then
44                                         export DEVPATH=${j#${sysfs_dir}}
45                                         $bin block
46                                         if [ $? -ne 0 ]; then
47                                                 echo "Warning: $DEVPATH failed."
48                                                 clean_exit="no"
49                                         fi
50                                 fi
51                         done
52                 done
53                 # all other device classes
54                 for i in ${sysfs_dir}/class/*; do
55                         for j in $i/*; do
56                                 if [ -f $j/dev ]; then
57                                         export DEVPATH=${j#${sysfs_dir}}
58                                         CLASS=`echo ${i#${sysfs_dir}} | \
59                                                 cut --delimiter='/' --fields=3-`
60                                         $bin $CLASS
61                                         if [ $? -ne 0 ]; then
62                                                 echo "Warning: $DEVPATH failed."
63                                                 clean_exit="no"
64                                         fi
65                                 fi
66                         done
67                 done
68                 if [ $clean_exit = "yes" ]; then
69                         print_status success
70                 else
71                         print_status warning
72                 fi
73                 ;;
74         stop)
75                 echo "Removing udev device nodes ..."
76                 # be careful
77                 if [ $udev_dir -a "$udev_dir" != "/" ]; then
78                         # clear out /udev
79                         rm -rf ${udev_dir}/*
80                         evaluate_retval
81                 fi
82                 ;;
83         reload)
84                 # nothing to do here
85                 ;;
86         restart)
87                 $0 stop
88                 sleep 1
89                 $0 start
90                 ;;
91         status)
92                 if [ -d $udev_dir ]; then
93                         echo "the udev device node directory exists"
94                 else
95                         echo "the udev device node directory does not exist"
96                 fi
97                 ;;
98         *)
99                 echo "Usage: $0 {start|stop|restart|status}"
100                 exit 1
101                 ;;
102 esac
103 exit 0