[oe-commits] Chia-I Wu : fastboot: udev: Update init script to support udev-static-devices.

GIT User account git at amethyst.openembedded.net
Thu May 14 20:07:21 UTC 2009


Module: openembedded.git
Branch: fso/milestone5.5
Commit: 2b38193c50b633ad2afe493a9271a3d9453c69a0
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=2b38193c50b633ad2afe493a9271a3d9453c69a0

Author: Chia-I Wu <olv at openmoko.com>
Date:   Tue Nov 18 16:38:29 2008 +0800

fastboot: udev: Update init script to support udev-static-devices.

---

 recipes/udev/files/links.conf       |    3 +
 recipes/udev/udev-118/openmoko/init |  177 +++++++++++++++++++++++++++++++++++
 recipes/udev/udev_118.bb            |    2 +-
 3 files changed, 181 insertions(+), 1 deletions(-)

diff --git a/recipes/udev/files/links.conf b/recipes/udev/files/links.conf
index 8fff922..a9f8b58 100644
--- a/recipes/udev/files/links.conf
+++ b/recipes/udev/files/links.conf
@@ -12,6 +12,9 @@ L MAKEDEV	/sbin/MAKEDEV
 D pts
 D shm
 
+M null         c   1 3
+M console      c   5 1
+
 # Hic sunt leones.
 M ppp		c 108 0
 D loop
diff --git a/recipes/udev/udev-118/openmoko/init b/recipes/udev/udev-118/openmoko/init
new file mode 100644
index 0000000..e8b2cc5
--- /dev/null
+++ b/recipes/udev/udev-118/openmoko/init
@@ -0,0 +1,177 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          udev
+# Required-Start:    mountkernfs
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+# This script is based on Debian's.
+
+COLDPLUG=no
+COLDPLUG_TARBALL="/lib/udev/devices.tar.gz"
+
+for x in $(cat /proc/cmdline); do
+        case $x in
+        coldplug)
+		COLDPLUG=yes
+                ;;
+        esac
+done
+
+# we need to unmount /dev/pts/ and remount it later over the tmpfs
+unmount_devpts() {
+  if mountpoint -q /dev/pts/; then
+    umount -n -l /dev/pts/
+  fi
+
+  if mountpoint -q /dev/shm/; then
+    umount -n -l /dev/shm/
+  fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+  if grep -q "/dev tmpfs" /proc/mounts; then
+    return
+  fi
+
+  if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs udev /dev; then
+    echo "udev requires tmpfs support, not started."
+    exit 1
+  fi
+
+  return 0
+}
+
+create_dev_makedev() {
+  if [ -e /sbin/MAKEDEV ]; then
+    ln -sf /sbin/MAKEDEV /dev/MAKEDEV
+  else
+    ln -sf /bin/true /dev/MAKEDEV
+  fi
+}
+
+make_extra_nodes() {
+  ret=1
+  if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
+    cp -a /lib/udev/devices/* /$1/
+    ret=0
+  fi
+
+  [ -e /etc/udev/links.conf ] || return $ret
+
+  grep '^[^#]' /etc/udev/links.conf | \
+  while read type name arg1; do
+    [ "$type" -a "$name" -a ! -e "/$1/$name" -a ! -L "/$1/$name" ] || continue
+    case "$type" in
+      L) ln -s $arg1 /$1/$name ;;
+      D) mkdir -p /$1/$name ;;
+      M) mknod -m 600 /$1/$name $arg1 ;;
+      *) echo "links.conf: unparseable line ($type $name $arg1)" >&2 ;;
+    esac
+  done
+
+  return $ret
+}
+
+##############################################################################
+
+[ -x /sbin/udevd ] || exit 0
+
+PATH="/sbin:/bin"
+
+# defaults
+tmpfs_size="2M"
+udev_root="/dev"
+
+if [ -e /etc/udev/udev.conf ]; then
+  . /etc/udev/udev.conf
+fi
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that the
+# new /dev has been mounted and udevadm trigger 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/.udev/" ]; then
+	if mountpoint -q $udev_root/; then
+	    TMPFS_MOUNTED=1
+	else
+	    echo ".udev/ already exists on the static $udev_root!"
+	fi
+    fi
+
+    echo > /sys/kernel/uevent_helper
+
+    if [ -z "$TMPFS_MOUNTED" ]; then
+	unmount_devpts
+	mount_tmpfs
+    else
+	# and clean up the database of the initramfs udev
+	rm -rf /dev/.udev/
+    fi
+
+    # /dev/null must be created before udevd is started
+    if ! make_extra_nodes "$udev_root"; then
+	COLDPLUG=yes
+    fi
+    if [ ! -f "$COLDPLUG_TARBALL" ]; then
+	COLDPLUG=yes
+    fi
+
+    # if this directory is not present /dev will not be updated by udev
+    mkdir -p /dev/.udev/db/
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+
+    mkdir -p /dev/.udev/queue/ /dev/.udev/rules.d/
+
+    create_dev_makedev
+
+    if [ $COLDPLUG != "no" ]; then
+        echo "Synthesizing the initial hotplug events"
+        udevadm trigger
+
+        # wait for the udevd childs to finish
+        echo "Waiting for /dev to be fully populated"
+        if udevadm settle; then
+            echo 'done'
+        else
+            echo 'timeout'
+        fi
+    fi
+
+    ;;
+
+    stop)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+    ;;
+
+    restart)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+    ;;
+
+    reload|force-reload)
+    udevadm control --reload_rules
+    ;;
+
+    *)
+    echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
+
diff --git a/recipes/udev/udev_118.bb b/recipes/udev/udev_118.bb
index ba82f48..05c12ea 100644
--- a/recipes/udev/udev_118.bb
+++ b/recipes/udev/udev_118.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "udev is a daemon which dynamically creates and removes device nod
 the hotplug package and requires a kernel not older than 2.6.12."
 RPROVIDES_${PN} = "hotplug"
 
-PR = "r6"
+PR = "r7"
 
 DEFAULT_PREFERENCE = "-118"
 





More information about the Openembedded-commits mailing list