busybox: add mdev support
authorMichael-Luke Jones <mlj28@cam.ac.uk>
Sat, 23 Sep 2006 15:26:05 +0000 (15:26 +0000)
committerMichael-Luke Jones <mlj28@cam.ac.uk>
Sat, 23 Sep 2006 15:26:05 +0000 (15:26 +0000)
* adjust SlugOS defconfig to enable mdev
* add mdev startup script (similar to udev init)
* add mdev.conf with correct device permissions/actions

packages/busybox/busybox-1.2.1/busybox-mdev.sh [new file with mode: 0755]
packages/busybox/busybox-1.2.1/mdev.conf [new file with mode: 0644]
packages/busybox/busybox-1.2.1/slugos/defconfig
packages/busybox/busybox-1.2.1/slugos/mdev.conf [new file with mode: 0644]
packages/busybox/busybox_1.2.1.bb

diff --git a/packages/busybox/busybox-1.2.1/busybox-mdev.sh b/packages/busybox/busybox-1.2.1/busybox-mdev.sh
new file mode 100755 (executable)
index 0000000..9744322
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+MDEV=/sbin/mdev
+DESC="Busybox mdev setup"
+
+# Complain if thing's aren't right
+if [ ! -e /proc/filesystems ]; then
+  echo "mdev requires a mounted procfs, not started."
+  exit 1
+fi
+
+if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
+  echo "mdev requires tmpfs support, not started."
+  exit 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+  echo "mdev requires a mounted sysfs, not started."
+  exit 1
+fi
+
+if [ ! -e /proc/sys/kernel/hotplug ]; then
+  echo "mdev requires hotplug support, not started."
+  exit 1
+fi
+
+# We need to unmount /dev/pts/ and remount it later over the tmpfs
+if mountpoint -q /dev/pts/; then
+  umount -l /dev/pts/
+fi
+
+if mountpoint -q /dev/shm/; then
+  umount -l /dev/shm/
+fi
+
+# Create tmpfs for /dev
+echo "Creating tmpfs at /dev"
+mount -t tmpfs tmpfs /dev -o size=800k
+
+# Register mdev as hotplug event helper
+echo "$MDEV" > /proc/sys/kernel/hotplug
+
+# Populate /dev from /sys info
+echo "Populating /dev using mdev"
+$MDEV -s
+
+# Touch .udev to inform scripts that /dev needs no further setup
+touch /dev/.udev
+
+# Mount devpts
+TTYGRP=5
+TTYMODE=620
+mkdir -m 755 -p /dev/pts
+if [ ! -e /dev/ptmx ]; then
+    mknod -m 666 /dev/ptmx c 5 2
+fi
+mount -t devpts devpts /dev/pts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
+
+# Make shm directory
+mkdir -m 755 -p /dev/shm
+
+# Make extraneous links
+ln -sf /proc/self/fd /dev/fd
+ln -sf /proc/self/fd/0 /dev/stdin
+ln -sf /proc/self/fd/1 /dev/stdout
+ln -sf /proc/self/fd/2 /dev/stderr
+ln -sf /proc/kcore /dev/core
+ln -sf /proc/asound/oss/sndstat /dev/sndstat
+
+exit 0
diff --git a/packages/busybox/busybox-1.2.1/mdev.conf b/packages/busybox/busybox-1.2.1/mdev.conf
new file mode 100644 (file)
index 0000000..e69de29
index c35b4f7..2985e0f 100644 (file)
@@ -12,7 +12,7 @@ HAVE_DOT_CONFIG=y
 #
 # CONFIG_NITPICK is not set
 # CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
-CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
 # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
 CONFIG_SHOW_USAGE=y
 CONFIG_FEATURE_VERBOSE_USAGE=y
@@ -287,12 +287,24 @@ CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
 # Finding Utilities
 #
 # CONFIG_FIND is not set
-CONFIG_FEATURE_FIND_EXEC=y
+# CONFIG_FEATURE_FIND_PRINT0 is not set
+# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_MMIN is not set
+# CONFIG_FEATURE_FIND_PERM is not set
+# CONFIG_FEATURE_FIND_TYPE is not set
+# CONFIG_FEATURE_FIND_XDEV is not set
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_EXEC is not set
 CONFIG_GREP=y
 CONFIG_FEATURE_GREP_EGREP_ALIAS=y
 CONFIG_FEATURE_GREP_FGREP_ALIAS=y
 CONFIG_FEATURE_GREP_CONTEXT=y
 # CONFIG_XARGS is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set
 
 #
 # Init Utilities
@@ -343,16 +355,19 @@ CONFIG_MKE2FS=y
 # Linux Module Utilities
 #
 # CONFIG_INSMOD is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
 # CONFIG_RMMOD is not set
 # CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
 # CONFIG_MODPROBE is not set
-
-#
-# Options common to multiple modutils
-#
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
 # CONFIG_FEATURE_2_4_MODULES is not set
-CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_2_6_MODULES is not set
 # CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
 
 #
@@ -360,6 +375,8 @@ CONFIG_FEATURE_2_6_MODULES=y
 #
 CONFIG_DMESG=y
 # CONFIG_FBSET is not set
+# CONFIG_FEATURE_FBSET_FANCY is not set
+# CONFIG_FEATURE_FBSET_READMODE is not set
 # CONFIG_FDFLUSH is not set
 # CONFIG_FDFORMAT is not set
 CONFIG_FDISK=y
@@ -373,6 +390,7 @@ CONFIG_FEATURE_OSF_LABEL=y
 # CONFIG_FREERAMDISK is not set
 # CONFIG_FSCK_MINIX is not set
 # CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
 # CONFIG_GETOPT is not set
 CONFIG_HEXDUMP=y
 CONFIG_HWCLOCK=y
@@ -381,9 +399,9 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
 # CONFIG_IPCRM is not set
 # CONFIG_IPCS is not set
 # CONFIG_LOSETUP is not set
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_EXEC=y
 CONFIG_MKSWAP=y
 # CONFIG_FEATURE_MKSWAP_V0 is not set
 CONFIG_MORE=y
@@ -398,6 +416,8 @@ CONFIG_RDATE=y
 # CONFIG_SWITCH_ROOT is not set
 # CONFIG_UMOUNT is not set
 # CONFIG_FEATURE_UMOUNT_ALL is not set
+# CONFIG_FEATURE_MOUNT_LOOP is not set
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
 
 #
 # Miscellaneous Utilities
@@ -486,6 +506,11 @@ CONFIG_FEATURE_IFUPDOWN_IPV6=y
 # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
 # CONFIG_FEATURE_INETD_RPC is not set
 # CONFIG_IP is not set
+# CONFIG_FEATURE_IP_ADDRESS is not set
+# CONFIG_FEATURE_IP_LINK is not set
+# CONFIG_FEATURE_IP_ROUTE is not set
+# CONFIG_FEATURE_IP_TUNNEL is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
 # CONFIG_IPADDR is not set
 # CONFIG_IPLINK is not set
 # CONFIG_IPROUTE is not set
@@ -523,7 +548,7 @@ CONFIG_TRACEROUTE=y
 #
 # CONFIG_APP_UDHCPD is not set
 CONFIG_APP_UDHCPC=y
-CONFIG_APP_DUMPLEASES=y
+# CONFIG_APP_DUMPLEASES is not set
 CONFIG_FEATURE_UDHCP_SYSLOG=y
 # CONFIG_FEATURE_UDHCP_DEBUG is not set
 # CONFIG_VCONFIG is not set
diff --git a/packages/busybox/busybox-1.2.1/slugos/mdev.conf b/packages/busybox/busybox-1.2.1/slugos/mdev.conf
new file mode 100644 (file)
index 0000000..31acaf8
--- /dev/null
@@ -0,0 +1,11 @@
+rtc0 root:root 660 @ln -sf /dev/rtc0 /dev/rtc
+null 0:0 777
+zero 0:0 666
+console 0:5 0600
+kmem 0:9 000
+mem 0:9 0640
+port 0:9 0640
+ptmx 0:5 666
+tty 0:5 0660
+ttyS* 0:20 640
+ucode_dl root:root 600 @sleep 1 && cat /lib/firmware/NPE-B > /dev/ucode_dl
index c275443..8e1204e 100644 (file)
@@ -10,7 +10,7 @@ HOMEPAGE = "http://www.busybox.net"
 LICENSE = "GPL"
 SECTION = "base"
 PRIORITY = "required"
-PR = "r1.3"
+PR = "r1.5"
 
 SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
           file://dhcp-hostname.patch;patch=1 \
@@ -26,29 +26,35 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
           file://default.script \
           file://syslog.conf \
           file://mount.busybox \
-          file://umount.busybox"
+          file://umount.busybox \
+          file://busybox-mdev.sh \
+          file://mdev.conf \
+          "
 
 SRC_URI_append_nylon = " file://xargs-double-size.patch;patch=1"
 
 export EXTRA_CFLAGS = "${CFLAGS}"
 EXTRA_OEMAKE_append = " CROSS=${HOST_PREFIX}"
-PACKAGES =+ "${PN}-httpd ${PN}-udhcpd"
+PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-mdev"
 
 FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
 FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
+FILES_${PN}-mdev = "${sysconfdir}/init.d/busybox-mdev.sh ${sysconfdir}/mdev.conf"
 
 FILES_${PN} += " ${datadir}/udhcpc"
 
-INITSCRIPT_PACKAGES = "${PN} ${PN}-httpd ${PN}-udhcpd"
+INITSCRIPT_PACKAGES = "${PN} ${PN}-httpd ${PN}-udhcpd ${PN}-mdev"
 INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd"
 INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" 
+INITSCRIPT_NAME_${PN}-mdev = "busybox-mdev.sh"
+INITSCRIPT_PARAMS_${PN}-mdev = "start 04 S ."
 INITSCRIPT_NAME_${PN} = "syslog"
 CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
 
-# This disables the syslog startup links in openslug (see openslug-init)
-INITSCRIPT_PARAMS_${PN}_openslug = "start 20 ."
+inherit cml1 update-rc.d  
 
-inherit cml1 update-rc.d
+# This disables the syslog startup links in openslug (see openslug-init)
+# INITSCRIPT_PARAMS_${PN}_openslug = "start 20 ." #out-of-date?
 
 do_configure () {
        install -m 0644 ${WORKDIR}/defconfig ${S}/.config.oe
@@ -115,7 +121,7 @@ do_install () {
                install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/
        fi
        if grep "CONFIG_APP_UDHCPC=y" ${WORKDIR}/defconfig; then 
-               # Move dhcpc back to /usr/sbin/udhcpc
+               # Move dhcpc back to /sbin/udhcpc
                install -d ${D}${base_sbindir}
                mv ${D}/busybox${base_sbindir}/udhcpc ${D}${base_sbindir}/
 
@@ -125,6 +131,15 @@ do_install () {
                install -m 0755 ${WORKDIR}/default.script ${D}${datadir}/udhcpc/default.script
        fi
 
+       if grep "CONFIG_MDEV=y" ${WORKDIR}/defconfig; then
+               # Move mdev back to /sbin/mdev
+               install -d ${D}${base_sbindir}
+               mv ${D}/busybox${base_sbindir}/mdev ${D}${base_sbindir}/
+
+               install -m 644 ${WORKDIR}/mdev.conf ${D}${sysconfdir}/
+               install -m 0755 ${WORKDIR}/busybox-mdev.sh ${D}${sysconfdir}/init.d/
+       fi
+
        install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
 }