From 203cccc4a22bc62775e930f957baab9dcac5cfcb Mon Sep 17 00:00:00 2001 From: nbd Date: Sun, 4 Mar 2007 20:31:53 +0000 Subject: nuke mdev and replace it with hotplug2 :) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6512 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/functions.sh | 2 +- package/base-files/files/etc/hotplug2.rules | 7 ++++++ package/base-files/files/etc/init.d/boot | 7 ++++-- package/base-files/files/etc/mdev.conf | 5 ---- package/base-files/files/lib/network/config.sh | 2 +- package/base-files/files/sbin/hotplug | 28 ---------------------- package/base-files/files/sbin/hotplug-call | 26 ++++++++++++++++++++ package/base-files/files/sbin/ifdown | 2 +- package/base-files/files/sbin/mount_root | 2 +- .../files/usr/share/udhcpc/default.script | 2 +- 10 files changed, 43 insertions(+), 40 deletions(-) create mode 100644 package/base-files/files/etc/hotplug2.rules delete mode 100644 package/base-files/files/etc/mdev.conf delete mode 100755 package/base-files/files/sbin/hotplug create mode 100755 package/base-files/files/sbin/hotplug-call (limited to 'package/base-files') diff --git a/package/base-files/files/etc/functions.sh b/package/base-files/files/etc/functions.sh index c29ae772a..4d84bb81e 100755 --- a/package/base-files/files/etc/functions.sh +++ b/package/base-files/files/etc/functions.sh @@ -12,7 +12,7 @@ _C=0 NO_EXPORT=1 hotplug_dev() { - env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug net + env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug-call net } append() { diff --git a/package/base-files/files/etc/hotplug2.rules b/package/base-files/files/etc/hotplug2.rules new file mode 100644 index 000000000..d2a931adc --- /dev/null +++ b/package/base-files/files/etc/hotplug2.rules @@ -0,0 +1,7 @@ +DEVPATH is set { + makedev /dev/%DEVICENAME% 0644 +} + +MODALIAS is set { + exec /sbin/modprobe -q %MODALIAS% ; +} diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index db7ec8cc3..ed5e7d8ba 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -20,8 +20,11 @@ start() { # manually trigger hotplug before loading modules for iface in $(awk -F: '/:/ {print $1}' /proc/net/dev); do - /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug net + /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug-call net done - + + /sbin/hotplug2 --persistent & + echo /sbin/hotplug-call > /proc/sys/kernel/hotplug + load_modules /etc/modules.d/* } diff --git a/package/base-files/files/etc/mdev.conf b/package/base-files/files/etc/mdev.conf deleted file mode 100644 index 89355830f..000000000 --- a/package/base-files/files/etc/mdev.conf +++ /dev/null @@ -1,5 +0,0 @@ -null 0:0 777 -zero 0:0 666 -console 0:5 0600 -tty 0:5 0660 -ttyS* 0:20 640 diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh index 95954bf15..8a596874d 100755 --- a/package/base-files/files/lib/network/config.sh +++ b/package/base-files/files/lib/network/config.sh @@ -157,7 +157,7 @@ setup_interface() { done } - env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=static /sbin/hotplug "iface" & + env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=static /sbin/hotplug-call "iface" & ;; dhcp) # prevent udhcpc from starting more than once diff --git a/package/base-files/files/sbin/hotplug b/package/base-files/files/sbin/hotplug deleted file mode 100755 index 189cfee67..000000000 --- a/package/base-files/files/sbin/hotplug +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org - -[ -x /sbin/mdev -a -n "$ACTION" -a -n "$DEVPATH" ] && /sbin/mdev "$@" - -# bypass the normal hotplug path for firmware loading -# would otherwise cause problems with drivers like bcm43xx -[ "$1" = "firmware" -a "$ACTION" = "add" ] && { - [ -f "/lib/firmware/$FIRMWARE" ] && { - echo 1 > "/sys$DEVPATH/loading" - cp "/lib/firmware/$FIRMWARE" "/sys$DEVPATH/data" - echo 0 > "/sys$DEVPATH/loading" - } - exit 0 -} - -. /etc/functions.sh - -PATH=/bin:/sbin:/usr/bin:/usr/sbin -LOGNAME=root -USER=root -export PATH LOGNAME USER - -[ \! -z "$1" -a -d /etc/hotplug.d/$1 ] && { - for script in $(ls /etc/hotplug.d/$1/* 2>&-); do ( - [ -f $script ] && . $script - ); done -} diff --git a/package/base-files/files/sbin/hotplug-call b/package/base-files/files/sbin/hotplug-call new file mode 100755 index 000000000..b1b6f97b2 --- /dev/null +++ b/package/base-files/files/sbin/hotplug-call @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2006 OpenWrt.org + +# bypass the normal hotplug path for firmware loading +# would otherwise cause problems with drivers like bcm43xx +[ "$1" = "firmware" -a "$ACTION" = "add" ] && { + [ -f "/lib/firmware/$FIRMWARE" ] && { + echo 1 > "/sys$DEVPATH/loading" + cp "/lib/firmware/$FIRMWARE" "/sys$DEVPATH/data" + echo 0 > "/sys$DEVPATH/loading" + } + exit 0 +} + +. /etc/functions.sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin +LOGNAME=root +USER=root +export PATH LOGNAME USER + +[ \! -z "$1" -a -d /etc/hotplug.d/$1 ] && { + for script in $(ls /etc/hotplug.d/$1/* 2>&-); do ( + [ -f $script ] && . $script + ); done +} diff --git a/package/base-files/files/sbin/ifdown b/package/base-files/files/sbin/ifdown index 540c69f16..e00a4e38d 100755 --- a/package/base-files/files/sbin/ifdown +++ b/package/base-files/files/sbin/ifdown @@ -21,7 +21,7 @@ config_get proto "$cfg" proto config_get iface "$cfg" device [ "$proto" = "static" ] && { - env -i ACTION="ifdown" INTERFACE="$config" DEVICE="$iface" PROTO=static /sbin/hotplug "iface" & + env -i ACTION="ifdown" INTERFACE="$config" DEVICE="$iface" PROTO=static /sbin/hotplug-call "iface" & } # call interface stop handler diff --git a/package/base-files/files/sbin/mount_root b/package/base-files/files/sbin/mount_root index 9a87fadba..dd9d99d8e 100755 --- a/package/base-files/files/sbin/mount_root +++ b/package/base-files/files/sbin/mount_root @@ -12,7 +12,7 @@ else mount -t tmpfs tmpfs /dev -o size=512K mknod /dev/console c 5 1 mkdir /dev/shm - /sbin/mdev -s + /sbin/hotplug2 --no-persistent --coldplug fi mkdir -p /dev/pts mount none /dev/pts -t devpts diff --git a/package/base-files/files/usr/share/udhcpc/default.script b/package/base-files/files/usr/share/udhcpc/default.script index f39d21ed8..c72395356 100755 --- a/package/base-files/files/usr/share/udhcpc/default.script +++ b/package/base-files/files/usr/share/udhcpc/default.script @@ -14,7 +14,7 @@ hotplug_event() { config_get proto $ifc proto [ "$proto" = "dhcp" ] || continue - env -i ACTION="$1" INTERFACE="$ifc" DEVICE="$ifname" PROTO=dhcp /sbin/hotplug iface + env -i ACTION="$1" INTERFACE="$ifc" DEVICE="$ifname" PROTO=dhcp /sbin/hotplug-call iface done } -- cgit v1.2.3