diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-05-05 18:33:18 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-05-05 18:33:18 +0000 |
commit | 2d6b53deec9dab294cb8e0aafe81ecc7aba5ba4e (patch) | |
tree | e281bcd95cb9e165ddac1b4ae8f002f20e6acff9 /package | |
parent | b755dc66dfca48518b24450277173be4671fcde5 (diff) |
use hotplug2 for serializing hotplug events on 2.6
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7097 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rwxr-xr-x | package/base-files/files/etc/init.d/boot | 6 | ||||
-rwxr-xr-x | package/base-files/files/sbin/mount_root | 17 | ||||
-rw-r--r-- | package/hotplug2/Makefile | 4 | ||||
-rw-r--r-- | package/hotplug2/files/hotplug2-init.rules (renamed from package/base-files/files/etc/hotplug2.rules) | 5 | ||||
-rw-r--r-- | package/hotplug2/files/hotplug2.rules | 12 | ||||
-rw-r--r-- | package/hotplug2/patches/100-rules_override.patch | 34 |
6 files changed, 65 insertions, 13 deletions
diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 3461eab2f..d5a42e2d7 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -27,13 +27,11 @@ start() { ln -s /tmp/resolv.conf.auto /tmp/resolv.conf [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe - # manually trigger hotplug before loading modules + # the coldplugging of network interfaces needs to happen later, so we do it manually here for iface in $(awk -F: '/:/ {print $1}' /proc/net/dev); do /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug-call net done - - /sbin/hotplug2 --persistent --max-children 5 & - echo /sbin/hotplug-call > /proc/sys/kernel/hotplug + /sbin/hotplug2 --persistent --max-children 1 & # create /dev/root if it doesn't exist [ -e /dev/root ] || { diff --git a/package/base-files/files/sbin/mount_root b/package/base-files/files/sbin/mount_root index 80078b516..607c79968 100755 --- a/package/base-files/files/sbin/mount_root +++ b/package/base-files/files/sbin/mount_root @@ -4,17 +4,26 @@ mount none /proc -t proc size=$(awk '/Mem:/ {l=5242880;print((s=$2/2)<l)?$2-l:s}' /proc/meminfo) + mount none /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777 -if grep devfs /proc/filesystems > /dev/null; then +if grep devfs /proc/filesystems >/dev/null; then mount none /dev -t devfs else - mount -t sysfs none /sys mount -t tmpfs tmpfs /dev -o size=512K mknod /dev/console c 5 1 exec >/dev/console </dev/console 2>&1 - mkdir /dev/shm - /sbin/hotplug2 --no-persistent --coldplug --max-children 1 fi +mkdir /dev/shm +if grep sysfs /proc/filesystems >/dev/null; then + mount -t sysfs none /sys + HOTPLUG="" + # use a minimal ruleset only for creating device nodes + /sbin/hotplug2 --no-persistent --coldplug --set-rules-file /etc/hotplug2-init.rules +else + HOTPLUG="/sbin/hotplug2-dnode" +fi +echo "$HOTPLUG" > /proc/sys/kernel/hotplug + mkdir -p /dev/pts mount none /dev/pts -t devpts diff --git a/package/hotplug2/Makefile b/package/hotplug2/Makefile index 6c2a0a105..6b69bac73 100644 --- a/package/hotplug2/Makefile +++ b/package/hotplug2/Makefile @@ -21,7 +21,6 @@ include $(INCLUDE_DIR)/package.mk define Package/hotplug2 SECTION:=utils CATEGORY:=Utilities - DEPENDS:=@LINUX_2_6 +udevtrigger TITLE:=Dynamic device management subsystem for embedded systems URL:=http://isteve.bofh.cz/~isteve/hotplug2/ endef @@ -32,6 +31,9 @@ in a tiny pack, intended for Linux early userspace: Init RAM FS and InitRD. endef define Package/hotplug2/install + $(INSTALL_DIR) $(1)/etc + $(INSTALL_DATA) ./files/hotplug2.rules $(1)/etc/ + $(INSTALL_DATA) ./files/hotplug2-init.rules $(1)/etc/ $(INSTALL_DIR) $(1)/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/hotplug2 $(1)/sbin/ endef diff --git a/package/base-files/files/etc/hotplug2.rules b/package/hotplug2/files/hotplug2-init.rules index 7f1aca917..6efd54668 100644 --- a/package/base-files/files/etc/hotplug2.rules +++ b/package/hotplug2/files/hotplug2-init.rules @@ -4,9 +4,6 @@ DEVICENAME ~~ (tun|tap[0-9]) { } DEVPATH is set { - makedev /dev/%DEVICENAME% 0644 + makedev /dev/%DEVICENAME% 0644 } -MODALIAS is set { - exec /sbin/modprobe -q %MODALIAS% ; -} diff --git a/package/hotplug2/files/hotplug2.rules b/package/hotplug2/files/hotplug2.rules new file mode 100644 index 000000000..ebd96fa33 --- /dev/null +++ b/package/hotplug2/files/hotplug2.rules @@ -0,0 +1,12 @@ +DEVICENAME ~~ (tun|tap[0-9]) { + makedev /dev/net/%DEVICENAME% 0644 + next +} + +DEVPATH is set { + makedev /dev/%DEVICENAME% 0644 +} + +SUBSYSTEM ~~ (net|button) { + exec /sbin/hotplug-call %SUBSYSTEM%; +} diff --git a/package/hotplug2/patches/100-rules_override.patch b/package/hotplug2/patches/100-rules_override.patch new file mode 100644 index 000000000..0d3b672e6 --- /dev/null +++ b/package/hotplug2/patches/100-rules_override.patch @@ -0,0 +1,34 @@ +diff -ur hotplug2.old/hotplug2.c hotplug2.dev/hotplug2.c +--- hotplug2.old/hotplug2.c 2006-10-08 15:18:23.000000000 +0200 ++++ hotplug2.dev/hotplug2.c 2007-05-05 11:38:51.456551560 +0200 +@@ -391,6 +391,7 @@ + int rv = 0; + int i; + char *coldplug_command = NULL; ++ char *rules_file = HOTPLUG2_RULE_PATH; + sigset_t block_mask; + + struct rules_t *rules = NULL; +@@ -435,6 +436,13 @@ + break; + + modprobe_command = *argv; ++ } else if (!strcmp(*argv, "--set-rules-file")) { ++ argv++; ++ argc--; ++ if (argc <= 0) ++ break; ++ ++ rules_file = *argv; + } + } + } +@@ -443,7 +451,7 @@ + #ifdef HAVE_RULES + if (!dumb) { + filemap = MAP_FAILED; +- rule_fd = open(HOTPLUG2_RULE_PATH, O_RDONLY | O_NOATIME); ++ rule_fd = open(rules_file, O_RDONLY | O_NOATIME); + if (rule_fd == -1) { + dumb = 1; + ERROR("rules parse","Unable to open rules file: %s.", strerror(errno)); |