diff options
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 ;; *) |