summaryrefslogtreecommitdiffstats
path: root/source/a/eudev/config/rc.d/rc.udev.new
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-x[-rw-r--r--]source/a/eudev/config/rc.d/rc.udev.new (renamed from source/a/udev/config/rc.d/rc.udev.new)117
1 files changed, 64 insertions, 53 deletions
diff --git a/source/a/udev/config/rc.d/rc.udev.new b/source/a/eudev/config/rc.d/rc.udev.new
index f000e938e..aaa1eb155 100644..100755
--- a/source/a/udev/config/rc.d/rc.udev.new
+++ b/source/a/eudev/config/rc.d/rc.udev.new
@@ -5,57 +5,47 @@
PATH="/sbin:/bin"
-. /etc/udev/udev.conf
-
-# remove trailing slash from udev_root
-UDEV_ROOT=$(echo "${udev_root}" |sed 's/\/*$//')
-
check_mounted() {
grep -E -q "^[^[:space:]]+ $1 $2" /proc/mounts
return $?
}
mount_devpts() {
- if ! check_mounted $UDEV_ROOT/pts devpts ; then
- mkdir $UDEV_ROOT/pts 2> /dev/null
- mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
+ if ! check_mounted /dev/pts devpts ; then
+ mkdir /dev/pts 2> /dev/null
+ mount -n -o mode=0620,gid=5 -t devpts devpts /dev/pts
+ fi
+}
+
+mount_devshm() {
+ if ! check_mounted /dev/shm tmpfs ; then
+ mkdir /dev/shm 2> /dev/null
+ mount /dev/shm
fi
}
case "$1" in
start)
- # Sanity check #1, udev requires that the kernel support devtmpfs:
- if ! grep -wq devtmpfs /proc/filesystems ; then
- echo "Sorry, but you need devtmpfs support in the kernel to use udev."
- echo "Both of these options are needed: CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y"
- echo
- echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
- sleep 10
- exit 1
- fi
-
- # Sanity check #2, udev requires that the kernel support tmpfs:
+ # Sanity check #1, udev requires that the kernel support tmpfs:
if ! grep -wq tmpfs /proc/filesystems ; then
echo "Sorry, but you need tmpfs support in the kernel to use udev."
echo
echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
- sleep 10
exit 1
fi
- # Sanity check #3, make sure that a 2.6.x kernel is new enough:
+ # Sanity check #2, make sure that a 2.6.x kernel is new enough:
if [ "$(uname -r | cut -f 1,2 -d .)" = "2.6" ]; then
if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "32" ]; then
echo "Sorry, but you need a 2.6.32+ kernel to use this udev."
echo "Your kernel version is only $(uname -r)."
echo
echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
- sleep 10
exit 1
fi
fi
- # Sanity check #4, make sure the udev package was not removed. If udevd
+ # Sanity check #3, make sure the udev package was not removed. If udevd
# is not there, this will also shut off this script to prevent further
# problems:
if [ ! -x /sbin/udevd ]; then
@@ -63,7 +53,6 @@ case "$1" in
echo "No udevd daemon found."
echo "Turning off udev: chmod 644 /etc/rc.d/rc.udev"
echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
- sleep 10
exit 1
fi
@@ -73,36 +62,54 @@ case "$1" in
fi
if grep -qw devtmpfs /proc/filesystems ; then
- if ! check_mounted $UDEV_ROOT devtmpfs ; then
- # umount shm if needed
- check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
+ if ! check_mounted /dev devtmpfs ; then
+ # umount shm if needed
+ check_mounted /dev/shm tmpfs && umount -l /dev/shm
- # Umount pts if needed, we will remount it later:
- check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
+ # Umount pts if needed, we will remount it later:
+ check_mounted /dev/pts devpts && umount -l /dev/pts
- # Mount tmpfs on $UDEV_ROOT:
- mount -n -t devtmpfs devtmpfs $UDEV_ROOT
- fi
+ # Mount tmpfs on /dev:
+ mount -n -t devtmpfs devtmpfs /dev
+ fi
else
- # Mount tmpfs on $UDEV_ROOT:
- if ! check_mounted $UDEV_ROOT tmpfs ; then
- # umount shm if needed
- check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm
+ # Mount tmpfs on /dev:
+ if ! check_mounted /dev tmpfs ; then
+ # umount shm if needed
+ check_mounted /dev/shm tmpfs && umount -l /dev/shm
- # Umount pts if needed, we will remount it later:
- check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts
-
- # Mount tmpfs on $UDEV_ROOT:
- # the -n is because we don't want $UDEV_ROOT umounted when
- # someone (rc.[06]) calls umount -a
- mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+ # Umount pts if needed, we will remount it later:
+ check_mounted /dev/pts devpts && umount -l /dev/pts
- fi
- fi
+ # Mount tmpfs on /dev:
+ # the -n is because we don't want /dev umounted when
+ # someone (rc.[06]) calls umount -a
+ mount -n -o mode=0755 -t tmpfs tmpfs /dev
+ fi
+ fi
+
# Mount devpts
mount_devpts
+ mount_devshm
if ! /sbin/pidof udevd 1>/dev/null 2>/dev/null; then # start udevd
+ echo "Creating static nodes in /dev."
+ kmod static-nodes -f tmpfiles --output /run/static-nodes
+ grep "^d\ " /run/static-nodes | while read line ; do
+ mkdir -p -m $(echo $line | cut -f 3 -d ' ') $(echo $line | cut -f 2 -d ' ')
+ done
+ grep -v "^d\ " /run/static-nodes | while read line ; do
+ mknod -m $(echo $line | cut -f 3 -d ' ') \
+ $(echo $line | cut -f 2 -d ' ') \
+ $(echo $line | cut -b1 ) \
+ $(echo $line | cut -f 7 -d ' ' | cut -f 1 -d :) \
+ $(echo $line | cut -f 7 -d ' ' | cut -f 2 -d :) 2> /dev/null
+ done
+ rm -f /run/static-nodes
+ # Add any system defined additional device nodes:
+ cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2> /dev/null
+ # Add any locally defined additional device nodes:
+ cp --preserve=all --recursive --update /etc/udev/devices/* /dev 2> /dev/null
echo "Starting udevd: /sbin/udevd --daemon"
/sbin/udevd --daemon
# Since udev is just now being started we want to use add events:
@@ -111,12 +118,12 @@ case "$1" in
/sbin/udevadm trigger --type=subsystems --action=add
/sbin/udevadm trigger --type=devices --action=add
else # trigger changes for already running udevd
- # If the persistent rules files do not exist, trigger an add event:
- if [ ! -r /etc/udev/rules.d/70-persistent-net.rules -o ! -r /etc/udev/rules.d/70-persistent-cd.rules ]; then
+ # If the persistent network rules file does not exist, trigger an add event:
+ if [ ! -r /etc/udev/rules.d/70-persistent-net.rules ]; then
# Test that we can actually write to the directory first:
if touch /etc/udev/rules.d/testfile 2> /dev/null ; then
rm -f /etc/udev/rules.d/testfile
- # This should add persistent net/cd rules:
+ # This should add persistent net rules:
echo "Triggering udev to write persistent rules to /etc/udev/rules.d/"
/sbin/udevadm trigger --type=devices --action=add
sleep 3
@@ -126,9 +133,14 @@ case "$1" in
# rules at every boot.
# To force another attempt, delete the file(s).
touch /etc/udev/rules.d/70-persistent-net.rules
- touch /etc/udev/rules.d/70-persistent-cd.rules
fi
fi
+ # Update the hardware database index (/etc/udev/hwdb.bin), if possible:
+ if touch /etc/udev/testfile 2> /dev/null ; then
+ rm -f /etc/udev/testfile
+ echo "Updating hardware database index: /sbin/udevadm hwdb --update"
+ /sbin/udevadm hwdb --update
+ fi
# Since udevd is running, most of the time we only need change events:
echo "Triggering udev events: /sbin/udevadm trigger --action=change"
/sbin/udevadm trigger --type=subsystems --action=change
@@ -158,13 +170,12 @@ case "$1" in
reload)
echo "Reloading udev rules"
udevadm control --reload
- cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
;;
force-reload)
- echo "Updating all available device nodes in $UDEV_ROOT"
+ echo "Updating all available device nodes in /dev"
udevadm control --reload
- rm -rf $UDEV_ROOT/.udev $UDEV_ROOT/disk
- cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ rm -rf /dev/.udev /dev/disk
+ cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2> /dev/null
;;
*)