udev/udev-post.init
Harald Hoyer 2a36d8e695 - moved all generated files to /var/lib/udev (also 70-persistent-cd.rules
70-persistent-net.rules)
- added a caching mechanism for MAKEDEV (saves some seconds on startup)
- added trigger for selinux-policy and MAKEDEV to remove the udev cache
    files
2008-03-13 13:00:10 +00:00

101 lines
2.4 KiB
Bash

#!/bin/bash
#
# udev-post Post script for udev, after all filesystems are mounted
#
# Authors: Harald Hoyer <harald@redhat.com>
#
# chkconfig: 12345 26 75
# description: Moves the generated persistent udev rules to /etc/udev/rules.d
#
### BEGIN INIT INFO
# Default-Start: 12345
# Default-Stop: 0 6
# Required-Start: $local_fs
# Short-Description: Moves the generated persistent udev rules to /etc/udev/rules.d
# Description: Moves the generated persistent udev rules to /etc/udev/rules.d
# Provides: udev-post
### END INIT INFO
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start|reload)
STRING=$"Adding udev makedev cache file"
# copy the MAKEDEV shell scripts generated before / was mounted read-write
for file in /dev/.udev/makedev.d/*; do
if [ -f "$file" ]; then
echo -n $STRING
cp "$file" /var/lib/udev/makedev.d/
rc=$?
rm -f "$file"
if [ "$rc" -eq "0" ]; then
success "$STRING"
echo
elif [ "$rc" -eq "1" ]; then
failure "$STRING"
echo
fi
fi
done
STRING=$"Adding udev persistent rule"
# copy the rules generated before / was mounted read-write
for file in /dev/.udev/tmp-rules--*; do
dest=${file##*tmp-rules--}
# check, if anything is todo
[ "$dest" = '*' ] && break
echo -n $STRING
cat $file >> /var/lib/udev/rules.d/$dest && cp /var/lib/udev/rules.d/$dest /dev/.udev/rules.d/
rc=$?
rm -f $file
if [ "$rc" -eq "0" ]; then
success "$STRING"
echo
elif [ "$rc" -eq "1" ]; then
failure "$STRING"
echo
fi
done
touch /var/lock/subsys/udev-post
exit 0
;;
stop)
STRING=$"Generating udev makedev cache file"
MAKEDEV="/sbin/MAKEDEV"
USE_MD5="false"
[ -x /usr/bin/md5sum ] && USE_MD5="true"
if [ "$USE_MD5" == "true" -a -x "$MAKEDEV" ]; then
for i in /etc/udev/makedev.d/*.nodes; do
if [ -f "$i" ]; then
# use a little caching to speedup things
md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a))
md5file="/var/lib/udev/makedev.d/${md5}.sh"
if [ ! -f "$md5file" ]; then
echo -n $STRING
( sed -e 's,#.*,,g' "$i" | \
xargs $MAKEDEV -x -a -S ) \
> "$md5file"
rc=$?
if [ "$rc" -eq "0" ]; then
success "$STRING"
echo
elif [ "$rc" -eq "1" ]; then
failure "$STRING"
echo
fi
fi
fi
done
fi
rm -f /var/lock/subsys/udev-post
exit 0
;;
status)
exit 0
;;
*)
echo $"Usage: $0 {start|stop|reload}"
exit 1
esac
exit 0