1 |
#!/bin/bash |
#!/bin/bash |
2 |
# $Header: /root/magellan-cvs/src/udev/udev.rc,v 1.2 2010-08-18 00:57:31 niro Exp $ |
# $Id$ |
3 |
|
|
4 |
udev_version() |
udev_version() |
5 |
{ |
{ |
8 |
if [[ -x /sbin/udev ]] |
if [[ -x /sbin/udev ]] |
9 |
then |
then |
10 |
version=$(/sbin/udev -V) |
version=$(/sbin/udev -V) |
|
# We need it without a leading '0', else bash do the wrong thing |
|
|
version=${version##0} |
|
|
# Older udev's will print nothing |
|
|
[[ -z ${version} ]] && version=0 |
|
11 |
elif [[ -x /sbin/udevd ]] |
elif [[ -x /sbin/udevd ]] |
12 |
then |
then |
13 |
version=$(/sbin/udevd --version) |
version=$(/sbin/udevd --version) |
14 |
version=${version##0} |
elif [[ -x /lib/udev/udevd ]] |
15 |
[[ -z ${version} ]] && version=0 |
then |
16 |
|
version=$(/lib/udev/udevd --version) |
17 |
|
elif [[ -x /usr/lib/systemd/systemd-udevd ]] |
18 |
|
then |
19 |
|
version=$(/usr/lib/systemd/systemd-udev --version) |
20 |
fi |
fi |
21 |
|
|
22 |
|
# We need it without a leading '0', else bash do the wrong thing |
23 |
|
version=${version##0} |
24 |
|
# Older udev's will print nothing |
25 |
|
[[ -z ${version} ]] && version=0 |
26 |
|
|
27 |
echo "${version}" |
echo "${version}" |
28 |
} |
} |
29 |
|
|
38 |
rc_print " Populating /dev with existing devices through uevents ..." |
rc_print " Populating /dev with existing devices through uevents ..." |
39 |
if [[ ${RC_COLDPLUG} = yes ]] |
if [[ ${RC_COLDPLUG} = yes ]] |
40 |
then |
then |
41 |
/sbin/udevadm trigger |
udevadm trigger |
42 |
else |
else |
43 |
# do not run any init-scripts |
# do not run any init-scripts |
44 |
/sbin/udevadm control --env do_not_run_plug_service=1 |
udevadm control --env do_not_run_plug_service=1 |
45 |
|
|
46 |
# only create device nodes |
# only create device nodes |
47 |
/sbin/udevadm trigger --attr-match=dev |
udevadm trigger --attr-match=dev |
48 |
|
|
49 |
# run persistent-net stuff |
# run persistent-net stuff |
50 |
/sbin/udevadm trigger --subsystem-match=net |
udevadm trigger --subsystem-match=net |
51 |
fi |
fi |
52 |
evaluate_retval |
evaluate_retval |
53 |
|
|
54 |
# loop until everything is finished |
# loop until everything is finished |
55 |
rc_print " Letting udev process events ..." |
rc_print " Letting udev process events ..." |
56 |
/sbin/udevadm settle --timeout=60 |
udevadm settle --timeout=60 |
57 |
evaluate_retval |
evaluate_retval |
58 |
|
|
59 |
# unset this variable |
# unset this variable |
60 |
/sbin/udevadm control --env do_not_run_plug_service= |
udevadm control --env do_not_run_plug_service= |
61 |
|
|
62 |
rm -f /dev/.udev_populate |
rm -f /dev/.udev_populate |
63 |
return 0 |
return 0 |
97 |
# main function |
# main function |
98 |
start_devicemanager() |
start_devicemanager() |
99 |
{ |
{ |
100 |
|
local udev_prefix="" |
101 |
|
local udev_daemon="" |
102 |
|
|
103 |
|
# get the right daemon and prefix for newer udev/systemd-udev installations |
104 |
|
if [ -x /sbin/udevd ] |
105 |
|
then |
106 |
|
udev_daemon="/sbin/udevd" |
107 |
|
udev_prefix="" |
108 |
|
elif [ -x /lib/udev/udevd ] |
109 |
|
then |
110 |
|
udev_daemon="/lib/udev/udevd" |
111 |
|
udev_prefix="" |
112 |
|
elif [ -x /usr/lib/systemd/systemd-udevd ] |
113 |
|
then |
114 |
|
udev_daemon="/usr/lib/systemd/systemd-udevd" |
115 |
|
udev_prefix="/usr" |
116 |
|
fi |
117 |
|
|
118 |
# check if /dev/console exists outside tmpfs |
# check if /dev/console exists outside tmpfs |
119 |
[ -c /dev/console ] ; need_redirect=$? |
[ -c /dev/console ] ; need_redirect=$? |
120 |
|
|
121 |
# create a ramdisk for populating udev |
# create a ramdisk for populating udev |
122 |
rc_print "Mounting udev at /dev ..." |
if [[ -z $(grep '[[:space:]]/dev[[:space:]]' /proc/mounts | cut -d ' ' -f2) ]] |
123 |
# many video drivers needed exec access |
then |
124 |
fstype=ramfs |
rc_print "Mounting udev at /dev ..." |
125 |
# tmpfs was suggested by Greg Kroah-Hartman |
# many video drivers needed exec access |
126 |
kernel_supports_fs tmpfs && fstype=tmpfs |
fstype=ramfs |
127 |
# mount devtmpfs if supported |
# tmpfs was suggested by Greg Kroah-Hartman |
128 |
kernel_supports_fs devtmpfs && fstype=devtmpfs |
kernel_supports_fs tmpfs && fstype=tmpfs |
129 |
mount -n -t ${fstype} udev /dev -o exec,nosuid,mode=0755,size=10M |
# mount devtmpfs if supported |
130 |
evaluate_retval |
kernel_supports_fs devtmpfs && fstype=devtmpfs |
131 |
|
mount -n -t ${fstype} dev /dev -o exec,nosuid,mode=0755,size=10M |
132 |
|
evaluate_retval |
133 |
|
fi |
134 |
|
|
135 |
# if a device tarball exists load it and if it is activated |
# if a device tarball exists load it but only if it is activated in the config |
136 |
rc_print "Configurating system to use udev ..." |
rc_print "Configurating system to use udev ..." |
137 |
if [[ ${RC_DEVICE_TARBALL} = yes ]] |
if [[ ${RC_DEVICE_TARBALL} = yes ]] |
138 |
then |
then |
139 |
rc_print " Populating /dev with saved device nodes ..." |
if [[ -f ${udev_prefix}/lib/udev/state/devices.tar.bz2 ]] |
140 |
tar -jxpf /lib/udev/state/devices.tar.bz2 -C /dev |
then |
141 |
evaluate_retval |
rc_print " Populating /dev with saved device nodes ..." |
142 |
|
tar -jxpf ${udev_prefix}/lib/udev/state/devices.tar.bz2 -C /dev |
143 |
|
evaluate_retval |
144 |
|
fi |
145 |
fi |
fi |
146 |
|
|
147 |
# other eeded device nodes with udev |
# other needed device nodes with udev |
148 |
seed_dev |
seed_dev |
149 |
|
|
150 |
if [ -e /proc/sys/kernel/hotplug ] |
if [ -e /proc/sys/kernel/hotplug ] |
167 |
if [ ${need_redirect} -eq 1 ] |
if [ ${need_redirect} -eq 1 ] |
168 |
then |
then |
169 |
# we need to open fds 0 1 2 |
# we need to open fds 0 1 2 |
170 |
start-stop-daemon --start --exec /sbin/udevd -- --daemon </dev/console >/dev/console 2>/dev/console |
start-stop-daemon --start --exec "${udev_daemon}" -- --daemon </dev/console >/dev/console 2>/dev/console |
171 |
else |
else |
172 |
start-stop-daemon --start --exec /sbin/udevd -- --daemon |
start-stop-daemon --start --exec "${udev_daemon}" -- --daemon |
173 |
fi |
fi |
174 |
evaluate_retval |
evaluate_retval |
175 |
|
|
176 |
# write root_link rule |
# write root_link rule |
177 |
/lib/udev/write_root_link_rule |
if [ -x ${udev_prefix}/lib/udev/write_root_link_rule ] |
178 |
|
then |
179 |
|
${udev_prefix}/lib/udev/write_root_link_rule |
180 |
|
fi |
181 |
|
|
182 |
# populate udev device nodes |
# populate udev device nodes |
183 |
populate_udev |
populate_udev |
184 |
|
|
195 |
|
|
196 |
stop_devicemanager() |
stop_devicemanager() |
197 |
{ |
{ |
198 |
|
local udev_daemon="" |
199 |
|
|
200 |
|
# get the right daemon and prefix for newer udev/systemd-udev installations |
201 |
|
if [ -x /sbin/udevd ] |
202 |
|
then |
203 |
|
udev_daemon="/sbin/udevd" |
204 |
|
elif [ -x /lib/udev/udevd ] |
205 |
|
then |
206 |
|
udev_daemon="/lib/udev/udevd" |
207 |
|
elif [ -x /usr/lib/systemd/systemd-udevd ] |
208 |
|
then |
209 |
|
udev_daemon="/usr/lib/systemd/systemd-udevd" |
210 |
|
fi |
211 |
|
|
212 |
rc_print "Stopping udevd daemon ..." |
rc_print "Stopping udevd daemon ..." |
213 |
start-stop-daemon --stop --exec /sbin/udevd |
start-stop-daemon --stop --exec "${udev_daemon}" |
214 |
evaluate_retval |
evaluate_retval |
215 |
} |
} |