diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2010-05-19 08:58:23 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 22:43:05 +0200 |
commit | b76270bf9e6dd375e495fec92140a79a79415d27 (patch) | |
tree | 3dbed78b2279bf9f14207a16dc634b90995cbd40 /source/a/udev/config/rc.d/rc.udev.new | |
parent | 5a12e7c134274dba706667107d10d231517d3e05 (diff) | |
download | current-b76270bf9e6dd375e495fec92140a79a79415d27.tar.gz |
Slackware 13.1slackware-13.1
Wed May 19 08:58:23 UTC 2010
Slackware 13.1 x86_64 stable is released!
Lots of thanks are due -- see the RELEASE_NOTES and the rest of the
ChangeLog for credits. The ISOs are on their way to replication,
a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD.
We are taking pre-orders now at store.slackware.com, and offering
a discount if you sign up for a subscription. Consider picking up
a copy to help support the project. Thanks again to the Slackware
community for testing, contributing, and generally holding us to a
high level of quality. :-)
Enjoy!
Diffstat (limited to 'source/a/udev/config/rc.d/rc.udev.new')
-rw-r--r-- | source/a/udev/config/rc.d/rc.udev.new | 100 |
1 files changed, 68 insertions, 32 deletions
diff --git a/source/a/udev/config/rc.d/rc.udev.new b/source/a/udev/config/rc.d/rc.udev.new index 8c238b0d..40f38d1d 100644 --- a/source/a/udev/config/rc.d/rc.udev.new +++ b/source/a/udev/config/rc.d/rc.udev.new @@ -11,6 +11,18 @@ OPT="" # 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 + fi +} + case "$1" in start) # Sanity check #1, udev requires that the kernel support tmpfs: @@ -23,8 +35,8 @@ case "$1" in # 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 "15" ]; then - echo "Sorry, but you need a 2.6.15+ kernel to use udev." + if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "27" ]; then + echo "Sorry, but you need a 2.6.27+ kernel to use udev." echo "Your kernel version is only $(uname -r)." echo echo "FATAL: Refusing to run /etc/rc.d/rc.udev." @@ -48,45 +60,59 @@ case "$1" in echo "" > /proc/sys/kernel/hotplug fi - # if udevd is already running, rc.udev start will try to re-run - # failed events. Else, it will start udevd. - if ps axc | grep -q udevd ; then - OPT="--type=failed $OPT" - ( cd ${UDEV_ROOT}/.udev - for TMPFILE in tmp-rules-*.rules ; do - mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null - done - ) - else - # Mount tmpfs on $UDEV_ROOT: - if ! grep -E -q "^[^[:space:]]+ $UDEV_ROOT tmpfs" /proc/mounts; then + if grep -qw devtmpfs /proc/filesystems ; then + if ! check_mounted $UDEV_ROOT devtmpfs ; then # umount shm if needed - if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/shm tmpfs" /proc/mounts; then - umount -l $UDEV_ROOT/shm - fi + check_mounted $UDEV_ROOT/shm tmpfs && umount -l $UDEV_ROOT/shm # Umount pts if needed, we will remount it later: - if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/pts devpts" /proc/mounts; then - umount -l $UDEV_ROOT/pts + check_mounted $UDEV_ROOT/pts devpts && umount -l $UDEV_ROOT/pts + + # Mount tmpfs on $UDEV_ROOT: + mount -n -t devtmpfs devtmpfs $UDEV_ROOT + 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 + + # 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 + fi + fi + # Mount devpts + mount_devpts - # 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 + # Start udevd. + /sbin/udevd --daemon 2>/dev/null - # Remount pts: - mkdir $UDEV_ROOT/pts 2> /dev/null - mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts - fi + # If udevd was already running, then it will return !=0 exit code, + # so we'll try to re-run failed events + if [ $? != 0 ]; then + OPT="--type=failed $OPT" + ( cd ${UDEV_ROOT}/.udev + for TMPFILE in tmp-rules-*.rules ; do + mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null + done + ) + else # udev is just now being started, so we'll do some initial setup: - # Add the static nodes to $UDEV_ROOT: - cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT + # Set STARTUP=1 in the environment + /sbin/udevadm control --property=STARTUP=1 - # Start udevd: - echo "Starting udevd: /sbin/udevd --daemon" - /sbin/udevd --daemon + # Set OPT="--action=add" to generate add events on coldplug + OPT="--action=add" + # Add the static nodes to $UDEV_ROOT: + cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT + # Create rootdev rules DEVICENUMBER=$( /bin/stat -c %d / ) MAJORNUMBER=$(($DEVICENUMBER / 256)) @@ -99,9 +125,15 @@ case "$1" in echo "Triggering udev events: /sbin/udevadm trigger $OPT" # Call udevtrigger and udevsettle to do the device configuration: /sbin/udevadm trigger $OPT && /sbin/udevadm settle --timeout=120 + # Unset STARTUP=1 in the environment + /sbin/udevadm control --property=STARTUP= ;; stop) + echo "Stopping udevd is STRONGLY discouraged and not supported." + echo "If you are sure you want to do this, use 'force-stop' instead." + ;; + force-stop) echo "Stopping udevd" if [ -e /proc/sys/kernel/hotplug ]; then echo /sbin/hotplug > /proc/sys/kernel/hotplug @@ -109,6 +141,10 @@ case "$1" in killall udevd ;; restart) + echo "Restarting udevd is STRONGLY discouraged and not supported." + echo "If you are sure you want to do this, use 'force-restart' instead." + ;; + force-restart) echo "Restarting udevd" killall udevd sleep 5 |