Magellan Linux

Annotation of /trunk/magellan-initscripts/etc/rc.d/init.d/udev

Parent Directory Parent Directory | Revision Log Revision Log


Revision 848 - (hide annotations) (download)
Mon May 4 19:54:19 2009 UTC (15 years ago) by niro
File size: 3979 byte(s)
start udevd via start-stop-daemon

1 niro 782 #!/bin/bash
2     # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/udev,v 1.1 2008-12-22 22:08:32 niro Exp $
3    
4     udev_version()
5     {
6     local version=0
7    
8     if [[ -x /sbin/udev ]]
9     then
10     version=$(/sbin/udev -V)
11     # We need it without a leading '0', else bash do the wrong thing
12     version=${version##0}
13     # Older udev's will print nothing
14     [[ -z ${version} ]] && version=0
15     elif [[ -x /sbin/udevd ]]
16     then
17     version=$(/sbin/udevd --version)
18     version=${version##0}
19     [[ -z ${version} ]] && version=0
20     fi
21    
22     echo "${version}"
23     }
24    
25     populate_udev()
26     {
27     local opts
28    
29     # tell modprobe.sh to be verbose to $CONSOLE
30     echo CONSOLE=${CONSOLE} > /dev/.udev_populate
31    
32     # populate /dev with devices already found by the kernel
33     echo -e ${COLOREDSTAR}" Populating /dev with existing devices through uevents ..."
34     if [[ ${RC_COLDPLUG} = yes ]]
35     then
36 niro 847 /sbin/udevadm trigger
37 niro 782 else
38     # do not run any init-scripts
39     /sbin/udevadm control --env do_not_run_plug_service=1
40    
41     # only create device nodes
42 niro 847 /sbin/udevadm trigger --attr-match=dev
43 niro 782
44     # run persistent-net stuff
45 niro 847 /sbin/udevadm trigger --subsystem-match=net
46 niro 782 fi
47     evaluate_retval
48    
49     # loop until everything is finished
50     echo -e ${COLOREDSTAR}" Letting udev process events ..."
51 niro 847 /sbin/udevadm settle --timeout=60
52 niro 782 evaluate_retval
53    
54     # unset this variable
55 niro 847 /sbin/udevadm control --env do_not_run_plug_service=
56 niro 782
57     rm -f /dev/.udev_populate
58     return 0
59     }
60    
61     seed_dev()
62     {
63     # seed /dev with some things that we know we need
64     echo -e ${COLOREDSTAR}" Seeding /dev with needed nodes ..."
65     (
66     [ ! -c /dev/console ] && mknod /dev/console c 5 1
67     [ ! -c /dev/tty1 ] && mknod /dev/tty1 c 4 1
68     [ ! -c /dev/null ] && mknod /dev/null c 1 3
69    
70     # copy over any persistant things
71     if [[ -d /lib/udev/devices ]]
72     then
73     cp -RPp /lib/udev/devices/* /dev 2>/dev/null
74     fi
75    
76     # not provided by sysfs but needed
77     ln -snf /proc/self/fd /dev/fd
78     ln -snf fd/0 /dev/stdin
79     ln -snf fd/1 /dev/stdout
80     ln -snf fd/2 /dev/stderr
81     [[ -e /proc/kcore ]] && ln -snf /proc/kcore /dev/core
82    
83     # create problematic directories
84     mkdir -p /dev/pts /dev/shm
85     )
86     evaluate_retval
87     }
88    
89     # main function
90     start_udev()
91     {
92     # check if /dev/console exists outside tmpfs
93     [ -c /dev/console ] ; need_redirect=$?
94    
95     # create a ramdisk for populating udev
96     echo -e ${COLOREDSTAR}"Mounting udev at /dev ..."
97     # many video drivers needed exec access
98     fstype=ramfs
99     # tmpfs was suggested by Greg Kroah-Hartman
100     kernel_supports_fs tmpfs && fstype=tmpfs
101     mount -n -t ${fstype} udev /dev -o exec,nosuid,mode=0755,size=10M
102     evaluate_retval
103    
104     # if a device tarball exists load it and if it is activated
105     echo -e ${COLOREDSTAR}"Configurating system to use udev ..."
106     if [[ ${RC_DEVICE_TARBALL} = yes ]]
107     then
108     echo -e ${COLOREDSTAR}" Populating /dev with saved device nodes ..."
109     tar -jxpf /lib/udev/state/devices.tar.bz2 -C /dev
110     evaluate_retval
111     fi
112    
113     # other eeded device nodes with udev
114     seed_dev
115    
116     if [ -e /proc/sys/kernel/hotplug ]
117     then
118     echo -e ${COLOREDSTAR}" Using netlink for hotplug events ..."
119     echo "" > /proc/sys/kernel/hotplug
120     evaluate_retval
121     else
122     echo -e ${COLOREDSTAR}${COLYELLOW}" Kernel was not compiled with hotplug support !"
123     print_status failure
124     fi
125    
126     echo -e ${COLOREDSTAR}" Starting udevd daemon ..."
127     if [ ${need_redirect} -eq 1 ]
128     then
129     # we need to open fds 0 1 2
130 niro 848 start-stop-daemon --start --exec /sbin/udevd -- --daemon </dev/console >/dev/console 2>/dev/console
131 niro 782 else
132 niro 848 start-stop-daemon --start --exec /sbin/udevd -- --daemon
133 niro 782 fi
134     evaluate_retval
135    
136     # write root_link rule
137     /lib/udev/write_root_link_rule
138     # populate udev device nodes
139     populate_udev
140    
141     # create nodes that udev can't
142     echo -e ${COLOREDSTAR}" Finializing udev configuration ..."
143     [[ -x /sbin/dmsetup ]] && /sbin/dmsetup mknodes &>/dev/null
144     [[ -x /sbin/lvm ]] && /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null
145     [[ -x /sbin/evms_activate ]] && /sbin/evms_activate -q &>/dev/null
146     print_status success
147    
148     # same thing as /dev/.devfsd
149     touch /dev/.udev
150     }