summaryrefslogtreecommitdiff
path: root/meta/packages/udev/files
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-07-21 10:10:31 +0000
committerRichard Purdie <richard@openedhand.com>2006-07-21 10:10:31 +0000
commitb2f192faabe412adce79534e22efe9fb69ee40e2 (patch)
tree7076c49d4286f8a1733650bd8fbc7161af200d57 /meta/packages/udev/files
parent2cf0eadf9f730027833af802d7e6c90b44248f80 (diff)
downloadopenembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.gz
openembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.bz2
openembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.zip
Rename /openembedded/ -> /meta/
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/udev/files')
-rw-r--r--meta/packages/udev/files/akita/mount.blacklist6
-rw-r--r--meta/packages/udev/files/c7x0/mount.blacklist6
-rw-r--r--meta/packages/udev/files/devfs-udev.rules108
-rw-r--r--meta/packages/udev/files/fix-alignment.patch24
-rwxr-xr-xmeta/packages/udev/files/init208
-rw-r--r--meta/packages/udev/files/links.conf21
-rw-r--r--meta/packages/udev/files/local.rules22
-rw-r--r--meta/packages/udev/files/mount.blacklist2
-rw-r--r--meta/packages/udev/files/mount.sh67
-rw-r--r--meta/packages/udev/files/network.sh55
-rw-r--r--meta/packages/udev/files/noasmlinkage.patch38
-rw-r--r--meta/packages/udev/files/permissions.rules81
-rw-r--r--meta/packages/udev/files/slugos/mount.blacklist4
-rw-r--r--meta/packages/udev/files/spitz/mount.blacklist7
-rw-r--r--meta/packages/udev/files/tmpfs.patch16
-rw-r--r--meta/packages/udev/files/tosa/mount.blacklist6
-rw-r--r--meta/packages/udev/files/udev.rules98
-rw-r--r--meta/packages/udev/files/udev_network_queue.sh35
-rw-r--r--meta/packages/udev/files/udevsynthesize.patch776
-rw-r--r--meta/packages/udev/files/udevsynthesize.sh51
20 files changed, 1631 insertions, 0 deletions
diff --git a/meta/packages/udev/files/akita/mount.blacklist b/meta/packages/udev/files/akita/mount.blacklist
new file mode 100644
index 0000000000..7e351bc988
--- /dev/null
+++ b/meta/packages/udev/files/akita/mount.blacklist
@@ -0,0 +1,6 @@
+# This is a grep pattern matched against the device name
+# Any matched pattern will _not_ be mounted / removed by udevd
+
+/dev/mtdblock
+/dev/loop
+/dev/ram \ No newline at end of file
diff --git a/meta/packages/udev/files/c7x0/mount.blacklist b/meta/packages/udev/files/c7x0/mount.blacklist
new file mode 100644
index 0000000000..7e351bc988
--- /dev/null
+++ b/meta/packages/udev/files/c7x0/mount.blacklist
@@ -0,0 +1,6 @@
+# This is a grep pattern matched against the device name
+# Any matched pattern will _not_ be mounted / removed by udevd
+
+/dev/mtdblock
+/dev/loop
+/dev/ram \ No newline at end of file
diff --git a/meta/packages/udev/files/devfs-udev.rules b/meta/packages/udev/files/devfs-udev.rules
new file mode 100644
index 0000000000..0ba1ad4e7f
--- /dev/null
+++ b/meta/packages/udev/files/devfs-udev.rules
@@ -0,0 +1,108 @@
+# The use of these rules is not recommended or supported.
+# In a world where devices can come and go at any time, the devfs scheme
+# of simple device enumeration does not help _anything_. Just forget about
+# it. Use custom rules to name your device or look at the persistent device
+# naming scheme, which is implemented for disks and add your subsystem.
+
+# ide block devices
+BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%c{1} %c{2}"
+
+# md block devices
+KERNEL="md[0-9]*", NAME="md/%n"
+
+# floppy devices
+KERNEL="fd[0-9]*", NAME="floppy/%n"
+
+# tty devices
+KERNEL="tty[0-9]*", NAME="vc/%n", SYMLINK="%k"
+KERNEL="ttyS[0-9]*", NAME="tts/%n", SYMLINK="%k"
+KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
+
+# vc devices
+KERNEL="vcs", NAME="vcc/0"
+KERNEL="vcs[0-9]*", NAME="vcc/%n"
+KERNEL="vcsa", NAME="vcc/a0"
+KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
+
+# v4l devices
+KERNEL="video[0-9]*", NAME="v4l/video%n"
+KERNEL="radio[0-9]*", NAME="v4l/radio%n"
+KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
+KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
+
+# dm devices (ignore them)
+KERNEL="dm-[0-9]*", NAME=""
+
+# i2c devices
+KERNEL="i2c-[0-9]*", NAME="i2c/%n", SYMLINK="%k"
+
+# loop devices
+KERNEL="loop[0-9]*", NAME="loop/%n", SYMLINK="%k"
+
+# ramdisks
+KERNEL="ram[0-9]*", NAME="rd/%n", SYMLINK="%k"
+
+# framebuffer devices
+KERNEL="fb[0-9]*", NAME="fb/%n", SYMLINK="%k"
+
+# misc
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="agpgart", NAME="misc/%k", SYMLINK="%k"
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="uinput", NAME="misc/%k", SYMLINK="%k"
+
+# alsa devices
+KERNEL="controlC[0-9]*", NAME="snd/%k"
+KERNEL="hw[CD0-9]*", NAME="snd/%k"
+KERNEL="pcm[CD0-9cp]*", NAME="snd/%k"
+KERNEL="midi[CD0-9]*", NAME="snd/%k"
+KERNEL="timer", NAME="snd/%k"
+KERNEL="seq", NAME="snd/%k"
+
+# oss devices
+KERNEL="audio*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dmmidi", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dsp*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="midi*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="mixer*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="sequencer*", NAME="sound/%k", SYMLINK="%k"
+
+# input devices
+KERNEL="mice", NAME="input/%k"
+KERNEL="mouse*", NAME="input/%k"
+KERNEL="event*", NAME="input/%k"
+KERNEL="js*", NAME="input/%k"
+KERNEL="ts*", NAME="input/%k"
+
+# USB devices
+KERNEL="hiddev*", NAME="usb/%k"
+KERNEL="auer*", NAME="usb/%k"
+KERNEL="legousbtower*", NAME="usb/%k"
+KERNEL="dabusb*", NAME="usb/%k"
+BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
+
+# netlink devices
+KERNEL="route", NAME="netlink/%k"
+KERNEL="skip", NAME="netlink/%k"
+KERNEL="usersock", NAME="netlink/%k"
+KERNEL="fwmonitor", NAME="netlink/%k"
+KERNEL="tcpdiag", NAME="netlink/%k"
+KERNEL="nflog", NAME="netlink/%k"
+KERNEL="xfrm", NAME="netlink/%k"
+KERNEL="arpd", NAME="netlink/%k"
+KERNEL="route6", NAME="netlink/%k"
+KERNEL="ip6_fw", NAME="netlink/%k"
+KERNEL="dnrtmsg", NAME="netlink/%k"
+KERNEL="tap*", NAME="netlink/%k"
+
+# CAPI devices
+KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
+KERNEL="capi*", NAME="capi/%n"
+
+# Network devices
+KERNEL="tun", NAME="net/%k"
+
+# raw devices
+KERNEL="raw[0-9]*", NAME="raw/%k"
diff --git a/meta/packages/udev/files/fix-alignment.patch b/meta/packages/udev/files/fix-alignment.patch
new file mode 100644
index 0000000000..8c7b8b5ac5
--- /dev/null
+++ b/meta/packages/udev/files/fix-alignment.patch
@@ -0,0 +1,24 @@
+diff --git a/udev_rules_parse.c b/udev_rules_parse.c
+--- a/udev_rules_parse.c
++++ b/udev_rules_parse.c
+@@ -241,6 +241,7 @@ static int add_to_rules(struct udev_rule
+ int valid;
+ char *linepos;
+ char *attr;
++ size_t padding;
+ int retval;
+
+ /* get all the keys */
+@@ -506,6 +507,11 @@ static int add_to_rules(struct udev_rule
+
+ /* grow buffer and add rule */
+ rule_size = sizeof(struct udev_rule) + rule->bufsize;
++ padding = (sizeof(size_t) - rule_size % sizeof(size_t)) % sizeof(size_t);
++ dbg("add %zi padding bytes", padding);
++ rule_size += padding;
++ rule->bufsize += padding;
++
+ rules->buf = realloc(rules->buf, rules->bufsize + rule_size);
+ if (!rules->buf) {
+ err("realloc failed");
+
diff --git a/meta/packages/udev/files/init b/meta/packages/udev/files/init
new file mode 100755
index 0000000000..1022b40c89
--- /dev/null
+++ b/meta/packages/udev/files/init
@@ -0,0 +1,208 @@
+#!/bin/sh -e
+
+UDEVSTART=/sbin/udevstart
+
+# defaults
+tmpfs_size="10M"
+udev_root="/dev"
+
+[ -x $UDEVSTART ] || exit 0
+
+. /etc/udev/udev.conf
+
+##############################################################################
+
+# we need to unmount /dev/pts/ and remount it later over the tmpfs
+unmount_devpts() {
+ if mountpoint -q /dev/pts/; then
+ umount -l /dev/pts/
+ fi
+
+ if mountpoint -q /dev/shm/; then
+ umount -l /dev/shm/
+ fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+ if grep -E -q "^[^[:space:]]+ /dev tmpfs" /proc/mounts; then
+ return 0
+ fi
+
+ # /dev/.static/dev/ is used by MAKEDEV to access the real /dev/ directory.
+ # /etc/udev/ is recycled as a temporary mount point because it's the only
+ # directory which is guaranteed to be available.
+ mount -n -o bind /dev /etc/udev
+
+ if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs tmpfs /dev; then
+ umount /etc/udev
+ echo "udev requires tmpfs support, not started."
+ exit 1
+ fi
+
+ # using ln to test if /dev works, because touch is in /usr/bin/
+ if ln -s test /dev/test-file; then
+ rm /dev/test-file
+ else
+ echo "udev requires tmpfs support, not started."
+ umount /etc/udev
+ umount /dev
+ exit 1
+ fi
+
+ mkdir -p /dev/.static/dev
+ chmod 700 /dev/.static/
+ # The mount options in busybox are non-standard...
+ if test -x /bin/mount.util-linux
+ then
+ /bin/mount.util-linux --move /etc/udev /dev/.static/dev
+ elif test -x /bin/busybox
+ then
+ busybox mount -n -o move /etc/udev /dev/.static/dev
+ else
+ echo "udev requires an identifiable mount command, not started."
+ umount /etc/udev
+ umount /dev
+ exit 1
+ fi
+}
+
+# I hate this hack. -- Md
+make_extra_nodes() {
+ [ -e /etc/udev/links.conf ] || return 0
+ grep '^[^#]' /etc/udev/links.conf | \
+ while read type name arg1; do
+ [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
+ case "$type" in
+ L) ln -s $arg1 /dev/$name ;;
+ D) mkdir -p /dev/$name ;;
+ M) mknod -m 600 /dev/$name $arg1 ;;
+ *) echo "links.conf: unparseable line ($type $name $arg1)" ;;
+ esac
+ done
+}
+
+# this function is duplicated in preinst, postinst and d-i
+supported_kernel() {
+ case "$(uname -r)" in
+ 2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
+ 2.6.1[01]|2.6.1[01][!0-9]*) return 1 ;;
+ esac
+ return 0
+}
+
+# shell version of /usr/bin/tty
+my_tty() {
+ [ -x /bin/readlink ] || return 0
+ [ -e /proc/self/fd/0 ] || return 0
+ readlink --silent /proc/self/fd/0 || true
+}
+
+warn_if_interactive() {
+ if [ "$RUNLEVEL" = "S" -a "$PREVLEVEL" = "N" ]; then
+ return 0
+ fi
+
+ TTY=$(my_tty)
+ if [ -z "$TTY" -o "$TTY" = "/dev/console" ]; then
+ return 0
+ fi
+
+ printf "\n\n\nIt has been detected that the command\n\n\t$0 $*\n\n"
+ printf "has been run from an interactive shell.\n"
+ printf "It will probably not do what you expect, so this script will wait\n"
+ printf "60 seconds before continuing. Press ^C to stop it.\n"
+ printf "RUNNING THIS COMMAND IS HIGHLY DISCOURAGED!\n\n\n\n"
+ sleep 60
+}
+
+##############################################################################
+
+if ! supported_kernel; then
+ echo "udev requires a kernel >= 2.6.12, not started."
+ exit 1
+fi
+
+if [ ! -e /proc/filesystems ]; then
+ echo "udev requires a mounted procfs, not started."
+ exit 1
+fi
+
+if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
+ echo "udev requires tmpfs support, not started."
+ exit 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+ echo "udev requires a mounted sysfs, not started."
+ exit 1
+fi
+
+if [ ! -e /proc/sys/kernel/hotplug ]; then
+ echo "udev requires hotplug support, not started."
+ exit 1
+fi
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that
+# the new /dev has been mounted and udevstart has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+
+case "$1" in
+ start)
+ if [ -e "$udev_root/.udevdb" ]; then
+ if mountpoint -q /dev/; then
+ TMPFS_MOUNTED=1
+ else
+ echo ".udevdb already exists on the old $udev_root!"
+ fi
+ fi
+ warn_if_interactive
+
+ #echo /sbin/udevsend > /proc/sys/kernel/hotplug
+ echo "" > /proc/sys/kernel/hotplug
+ udevsend
+ if [ "$UDEV_DISABLED" = "yes" ]; then
+ echo "udev disabled on the kernel command line, not started."
+ exit 0
+ fi
+
+ if [ ! "$TMPFS_MOUNTED" ]; then
+ unmount_devpts
+ mount_tmpfs
+ [ -d /proc/1 ] || mount -n /proc
+ # if this directory is not present /dev will not be updated by udev
+ mkdir /dev/.udevdb/
+ echo "Creating initial device nodes..."
+ udevstart
+ fi
+ make_extra_nodes
+ ;;
+ stop)
+ warn_if_interactive
+ start-stop-daemon --stop --exec /sbin/udevd --quiet
+ unmount_devpts
+ if [ -d /dev/.static/dev/ ]; then
+ umount -l /dev/.static/dev/ || true
+ fi
+ echo "Unmounting /dev..."
+ # unmounting with -l should never fail
+ if ! umount -l /dev; then
+ exit 1
+ fi
+ ;;
+ restart|force-reload)
+ start-stop-daemon --stop --exec /sbin/udevd --quiet
+ log_begin_msg "Recreating device nodes..."
+ udevstart
+ make_extra_nodes
+ log_end_msg 0
+ ;;
+ *)
+ echo "Usage: /etc/init.d/udev {start|stop|restart|force-reload}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/meta/packages/udev/files/links.conf b/meta/packages/udev/files/links.conf
new file mode 100644
index 0000000000..8fff922db6
--- /dev/null
+++ b/meta/packages/udev/files/links.conf
@@ -0,0 +1,21 @@
+# This file does not exist. Please do not ask the debian maintainer about it.
+# You may use it to do strange and wonderful things, at your risk.
+
+L fd /proc/self/fd
+L stdin /proc/self/fd/0
+L stdout /proc/self/fd/1
+L stderr /proc/self/fd/2
+L core /proc/kcore
+L sndstat /proc/asound/oss/sndstat
+L MAKEDEV /sbin/MAKEDEV
+
+D pts
+D shm
+
+# Hic sunt leones.
+M ppp c 108 0
+D loop
+M loop/0 b 7 0
+D net
+M net/tun c 10 200
+
diff --git a/meta/packages/udev/files/local.rules b/meta/packages/udev/files/local.rules
new file mode 100644
index 0000000000..5f2efbeb0c
--- /dev/null
+++ b/meta/packages/udev/files/local.rules
@@ -0,0 +1,22 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
+SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+# Handle network interface setup
+SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
+SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
diff --git a/meta/packages/udev/files/mount.blacklist b/meta/packages/udev/files/mount.blacklist
new file mode 100644
index 0000000000..1e7340aa53
--- /dev/null
+++ b/meta/packages/udev/files/mount.blacklist
@@ -0,0 +1,2 @@
+/dev/loop
+/dev/ram \ No newline at end of file
diff --git a/meta/packages/udev/files/mount.sh b/meta/packages/udev/files/mount.sh
new file mode 100644
index 0000000000..48c7844690
--- /dev/null
+++ b/meta/packages/udev/files/mount.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Called from udev
+# Attemp to mount any added block devices
+# and remove any removed devices
+#
+
+MOUNT="/bin/mount"
+PMOUNT="/usr/bin/pmount"
+UMOUNT="/bin/umount"
+name="`basename "$DEVNAME"`"
+
+for line in `cat /etc/udev/mount.blacklist | grep -v ^#`
+do
+ if ( echo "$DEVNAME" | grep -q "$line" )
+ then
+ logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring"
+ exit 0
+ fi
+done
+
+automount() {
+ ! test -d "/media/$name" && mkdir -p "/media/$name"
+
+ if ! $MOUNT -t auto -o sync $DEVNAME "/media/$name"
+ then
+ #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
+ rm_dir "/media/$name"
+ else
+ logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
+ touch "/tmp/.automount-$name"
+ fi
+}
+
+rm_dir() {
+ # We do not want to rm -r populated directories
+ if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1"
+ then
+ ! test -z "$1" && rm -r "$1"
+ else
+ logger "mount.sh/automount" "Not removing non-empty directory [$1]"
+ fi
+}
+
+if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
+ if [ -x "$PMOUNT" ]; then
+ $PMOUNT $DEVNAME 2> /dev/null
+ elif [ -x $MOUNT ]; then
+ $MOUNT $DEVNAME 2> /dev/null
+ fi
+
+ # If the device isn't mounted at this point, it isn't configured in fstab
+ cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount
+
+fi
+
+
+
+if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
+ for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
+ do
+ $UMOUNT $mnt
+ done
+
+ # Remove empty directories from auto-mounter
+ test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
+fi
diff --git a/meta/packages/udev/files/network.sh b/meta/packages/udev/files/network.sh
new file mode 100644
index 0000000000..5016328df4
--- /dev/null
+++ b/meta/packages/udev/files/network.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# Do not run when pcmcia-cs is installed
+test -x /sbin/cardctl && exit 0
+
+# We get two "add" events for hostap cards due to wifi0
+echo "$INTERFACE" | grep -q wifi && exit 0
+
+
+# Check if /etc/init.d/network has been run yet to see if we are
+# called by starting /etc/rcS.d/S03udev and not by hotplugging a device
+#
+# At this stage, network interfaces should not be brought up
+# automatically because:
+# a) /etc/init.d/network has not been run yet (security issue)
+# b) /var has not been populated yet so /etc/resolv,conf points to
+# oblivion, making the network unusable
+#
+
+spoofp="`grep ^spoofprotect /etc/network/options`"
+if test -z "$spoofp"
+then
+ # This is the default from /etc/init.d/network
+ spoofp_val=yes
+else
+ spoofp_val=${spoofp#spoofprotect=}
+fi
+
+test "$spoofp_val" = yes && spoofp_val=1 || spoofp_val=0
+
+# I think it is safe to assume that "lo" will always be there ;)
+if test "`cat /proc/sys/net/ipv4/conf/lo/rp_filter`" != "$spoofp_val" -a -n "$spoofp_val"
+then
+ echo "$INTERFACE" >> /dev/udev_network_queue
+ exit 0
+fi
+
+#
+# Code taken from pcmcia-cs:/etc/pcmcia/network
+#
+
+# if this interface has an entry in /etc/network/interfaces, let ifupdown
+# handle it
+if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then
+ case $ACTION in
+ add)
+ ifconfig | grep -q "^$INTERFACE" || ifup $INTERFACE
+ ;;
+ remove)
+ ifdown $INTERFACE
+ ;;
+ esac
+
+ exit 0
+fi
diff --git a/meta/packages/udev/files/noasmlinkage.patch b/meta/packages/udev/files/noasmlinkage.patch
new file mode 100644
index 0000000000..0d8e854c0e
--- /dev/null
+++ b/meta/packages/udev/files/noasmlinkage.patch
@@ -0,0 +1,38 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- udev-062/udev.c~noasmlinkage.patch
++++ udev-062/udev.c
+@@ -54,7 +54,7 @@
+ }
+ #endif
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGALRM:
+--- udev-062/udevd.c~noasmlinkage.patch
++++ udev-062/udevd.c
+@@ -639,7 +639,7 @@
+ return msg;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ int rc;
+
+--- udev-062/udevstart.c~noasmlinkage.patch
++++ udev-062/udevstart.c
+@@ -323,7 +323,7 @@
+ exec_list(&device_list);
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGALRM:
diff --git a/meta/packages/udev/files/permissions.rules b/meta/packages/udev/files/permissions.rules
new file mode 100644
index 0000000000..86d771276b
--- /dev/null
+++ b/meta/packages/udev/files/permissions.rules
@@ -0,0 +1,81 @@
+# default permissions for block devices
+SUBSYSTEM=="block", GROUP="disk"
+SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
+
+# IDE devices
+BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}="1", \
+ PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom*", GROUP="cdrom"
+BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
+BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
+
+# SCSI devices
+BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
+BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
+BUS=="scsi", SYSFS{type}=="6", GROUP="scanner"
+
+# USB devices
+BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
+BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
+
+# serial devices
+SUBSYSTEM=="tty", GROUP="dialout"
+SUBSYSTEM=="capi", GROUP="dialout"
+SUBSYSTEM=="slamr", GROUP="dialout"
+
+# vc devices (all members of the tty subsystem)
+KERNEL=="ptmx", MODE="0666", GROUP="root"
+KERNEL=="console", MODE="0600", GROUP="root"
+KERNEL=="tty", MODE="0666", GROUP="root"
+KERNEL=="tty[0-9]*", GROUP="root"
+KERNEL=="pty*", MODE="0666", GROUP="tty"
+
+# video devices
+SUBSYSTEM=="video4linux", GROUP="video"
+SUBSYSTEM=="drm", GROUP="video"
+SUBSYSTEM=="dvb", GROUP="video"
+SUBSYSTEM=="em8300", GROUP="video"
+SUBSYSTEM=="graphics", GROUP="video"
+SUBSYSTEM=="nvidia", GROUP="video"
+
+# misc devices
+KERNEL=="random", MODE="0666"
+KERNEL=="urandom", MODE="0444"
+KERNEL=="mem", MODE="0640", GROUP="kmem"
+KERNEL=="kmem", MODE="0640", GROUP="kmem"
+KERNEL=="port", MODE="0640", GROUP="kmem"
+KERNEL=="full", MODE="0666"
+KERNEL=="null", MODE="0666"
+KERNEL=="zero", MODE="0666"
+KERNEL=="inotify", MODE="0666"
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+KERNEL=="agpgart", GROUP="video"
+KERNEL=="nvram", GROUP="nvram"
+KERNEL=="rtc", MODE="0660", GROUP="audio"
+
+KERNEL=="cdemu[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd", MODE="0644"
+
+# printers and parallel devices
+SUBSYSTEM=="printer", GROUP="lp"
+SUBSYSTEM=="ppdev", GROUP="lp"
+KERNEL=="pt[0-9]*", GROUP="tape"
+KERNEL=="pht[0-9]*", GROUP="tape"
+
+# sound devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# ieee1394 devices
+KERNEL=="raw1394", GROUP="disk"
+KERNEL=="dv1394*", GROUP="video"
+KERNEL=="video1394*", GROUP="video"
+
+# input devices
+KERNEL=="event[0-9]*", MODE="0664"
+KERNEL=="js[0-9]*", MODE="0664"
+
+# AOE character devices
+SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
+SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
+
diff --git a/meta/packages/udev/files/slugos/mount.blacklist b/meta/packages/udev/files/slugos/mount.blacklist
new file mode 100644
index 0000000000..210702f837
--- /dev/null
+++ b/meta/packages/udev/files/slugos/mount.blacklist
@@ -0,0 +1,4 @@
+ram[0-9]$
+mtdblock[0-9]$
+hd[a-z]$
+sd[a-z]$
diff --git a/meta/packages/udev/files/spitz/mount.blacklist b/meta/packages/udev/files/spitz/mount.blacklist
new file mode 100644
index 0000000000..38c7aa4b32
--- /dev/null
+++ b/meta/packages/udev/files/spitz/mount.blacklist
@@ -0,0 +1,7 @@
+# This is a grep pattern matched against the device name
+# Any matched pattern will _not_ be mounted / removed by udevd
+
+/dev/mtdblock
+/dev/hda
+/dev/loop
+/dev/ram \ No newline at end of file
diff --git a/meta/packages/udev/files/tmpfs.patch b/meta/packages/udev/files/tmpfs.patch
new file mode 100644
index 0000000000..9d0d8b4515
--- /dev/null
+++ b/meta/packages/udev/files/tmpfs.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- udev-031/extras/start_udev~tmpfs 2004-09-10 17:10:03.000000000 -0400
++++ udev-031/extras/start_udev 2004-09-11 15:18:15.560789160 -0400
+@@ -85,7 +85,7 @@
+ fi
+
+ echo "mounting... ramfs at $udev_root"
+-mount -n -t ramfs none $udev_root
++mount -n -t ramfs none $udev_root || mount -n -t tmpfs none $udev_root
+
+ # propogate /udev from /sys
+ echo "Creating initial udev device nodes:"
diff --git a/meta/packages/udev/files/tosa/mount.blacklist b/meta/packages/udev/files/tosa/mount.blacklist
new file mode 100644
index 0000000000..7e351bc988
--- /dev/null
+++ b/meta/packages/udev/files/tosa/mount.blacklist
@@ -0,0 +1,6 @@
+# This is a grep pattern matched against the device name
+# Any matched pattern will _not_ be mounted / removed by udevd
+
+/dev/mtdblock
+/dev/loop
+/dev/ram \ No newline at end of file
diff --git a/meta/packages/udev/files/udev.rules b/meta/packages/udev/files/udev.rules
new file mode 100644
index 0000000000..5c566f6cef
--- /dev/null
+++ b/meta/packages/udev/files/udev.rules
@@ -0,0 +1,98 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# SCSI devices
+BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
+
+# USB devices
+BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
+ SYMLINK+="pilot"
+
+# usbfs-like devices
+SUBSYSTEM=="usb_device", \
+ PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
+
+# serial devices
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
+
+# video devices
+KERNEL=="card[0-9]*", NAME="dri/%k"
+
+# misc devices
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="tun", NAME="net/%k"
+
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
+
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
+
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
+KERNEL=="uverbs*", NAME="infiniband/%k"
+KERNEL=="ucm", NAME="infiniband/%k"
+
+KERNEL=="buzzer", NAME="misc/buzzer"
+
+# ALSA devices
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
+
+# input devices
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
+
+# Zaptel
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
+
+# AOE character devices
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
+
+# device mapper creates its own device nodes, so ignore these
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"
+
+KERNEL="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
+
+# Firmware Helper
+ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/firmware_helper"
diff --git a/meta/packages/udev/files/udev_network_queue.sh b/meta/packages/udev/files/udev_network_queue.sh
new file mode 100644
index 0000000000..05e08e9d1b
--- /dev/null
+++ b/meta/packages/udev/files/udev_network_queue.sh
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: udev_network_queue.sh
+# Date: 03-May-06
+
+do_start() {
+ if test -e /dev/udev_network_queue
+ then
+ echo "Activating queued NICs..."
+ for NIC in `cat /dev/udev_network_queue`
+ do
+ export INTERFACE="$NIC" ; export ACTION=add
+ /etc/udev/scripts/network.sh
+ done
+ echo ""
+ else
+ echo "No NICs queued"
+ fi
+}
+
+do_stop() {
+ /bin/true
+}
+
+case "$1" in
+start) do_start;;
+stop) do_stop;;
+restart) do_stop
+ do_start;;
+*) echo "Usage: `basename $0` [ start | stop | restart ]"
+ exit 0;;
+esac
diff --git a/meta/packages/udev/files/udevsynthesize.patch b/meta/packages/udev/files/udevsynthesize.patch
new file mode 100644
index 0000000000..7811188485
--- /dev/null
+++ b/meta/packages/udev/files/udevsynthesize.patch
@@ -0,0 +1,776 @@