fastboot: initscripts-openmoko: Replacement for initscripts.
authorChia-I Wu <olv@openmoko.com>
Tue, 28 Oct 2008 08:49:38 +0000 (16:49 +0800)
committerJohn Lee <john_lee@openmoko.org>
Mon, 12 Jan 2009 06:29:03 +0000 (14:29 +0800)
Move the common files into 'files' dir and keep Openmoko specific
files under initscripts-openmoko.  'finish' was renamed to
'finish.sh', so various recipes have to be modified as well.

26 files changed:
packages/initscripts/files/arm/alignment.sh [moved from packages/initscripts/initscripts-1.0/arm/alignment.sh with 100% similarity]
packages/initscripts/files/devpts [moved from packages/initscripts/initscripts-1.0/devpts with 97% similarity]
packages/initscripts/files/finish.sh [moved from packages/initscripts/initscripts-1.0/finish with 100% similarity, mode: 0644]
packages/initscripts/files/functions [moved from packages/initscripts/initscripts-1.0/functions with 100% similarity]
packages/initscripts/files/halt [moved from packages/initscripts/initscripts-1.0/halt with 100% similarity, mode: 0644]
packages/initscripts/files/hostname.sh [moved from packages/initscripts/initscripts-1.0/hostname.sh with 100% similarity, mode: 0644]
packages/initscripts/files/reboot [moved from packages/initscripts/initscripts-1.0/reboot with 100% similarity, mode: 0644]
packages/initscripts/files/rmnologin [moved from packages/initscripts/initscripts-1.0/rmnologin with 100% similarity, mode: 0644]
packages/initscripts/files/save-rtc.sh [moved from packages/initscripts/initscripts-1.0/save-rtc.sh with 100% similarity]
packages/initscripts/files/sendsigs [moved from packages/initscripts/initscripts-1.0/sendsigs with 100% similarity, mode: 0644]
packages/initscripts/files/umountfs [moved from packages/initscripts/initscripts-1.0/umountfs with 100% similarity, mode: 0644]
packages/initscripts/files/umountnfs.sh [moved from packages/initscripts/initscripts-1.0/umountnfs.sh with 100% similarity, mode: 0644]
packages/initscripts/files/volatiles [moved from packages/initscripts/initscripts-1.0/volatiles with 100% similarity]
packages/initscripts/initscripts-openmoko/bootmisc.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/campgsm [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/checkroot.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/led-trigger.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/mountall.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/mountdevsubfs.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/mountkernfs.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/mountnfs.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko/populate-volatile.sh [new file with mode: 0644]
packages/initscripts/initscripts-openmoko_1.0.bb [new file with mode: 0644]
packages/initscripts/initscripts-openprotium_1.0.bb
packages/initscripts/initscripts-slugos_1.0.bb
packages/initscripts/initscripts_1.0.bb

similarity index 97%
rename from packages/initscripts/initscripts-1.0/devpts
rename to packages/initscripts/files/devpts
index 4a0978b..e10e371 100644 (file)
@@ -1,5 +1,5 @@
 # GID of the `tty' group
 TTYGRP=5
+
 # Set to 600 to have `mesg n' be the default
 TTYMODE=620
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/finish
rename to packages/initscripts/files/finish.sh
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/halt
rename to packages/initscripts/files/halt
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/reboot
rename to packages/initscripts/files/reboot
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/rmnologin
rename to packages/initscripts/files/rmnologin
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/sendsigs
rename to packages/initscripts/files/sendsigs
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from packages/initscripts/initscripts-1.0/umountfs
rename to packages/initscripts/files/umountfs
diff --git a/packages/initscripts/initscripts-openmoko/bootmisc.sh b/packages/initscripts/initscripts-openmoko/bootmisc.sh
new file mode 100644 (file)
index 0000000..4511e12
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# bootmisc.sh  Miscellaneous things to be done during bootup.
+#
+
+. /etc/default/rcS
+#
+# Put a nologin file in /etc to prevent people from logging in before
+# system startup is complete.
+#
+if test "$DELAYLOGIN" = yes
+then
+  echo "System bootup in progress - please wait" > /etc/nologin
+  cp /etc/nologin /etc/nologin.boot
+fi
+
+#
+# Update /etc/motd.
+#
+if test "$EDITMOTD" != no
+then
+       uname -a > /etc/motd.tmp
+       sed 1d /etc/motd >> /etc/motd.tmp
+       mv /etc/motd.tmp /etc/motd
+fi
+
+#
+# Update dynamic library cache
+#
+#/sbin/ldconfig
+
+# Set the system clock from hardware clock
+# If the timestamp is 1 day or more recent than the current time,
+# use the timestamp instead.
+[ "$UTC" = yes ] || /etc/init.d/hwclock.sh start
+
+if ! test -f /etc/.configured && test -e /etc/timestamp
+then
+       SYSTEMDATE=`date "+%Y%m%d"`
+       TIMESTAMP=`cat /etc/timestamp | awk '{ print substr($0,9,4) substr($0,1,4);}'`
+        NEEDUPDATE=`expr \( $TIMESTAMP \> $SYSTEMDATE \)`
+        if [ $NEEDUPDATE -eq 1 ]; then
+               date `cat /etc/timestamp`
+               /etc/init.d/hwclock.sh stop
+       fi
+fi
+
+: exit 0
diff --git a/packages/initscripts/initscripts-openmoko/campgsm b/packages/initscripts/initscripts-openmoko/campgsm
new file mode 100644 (file)
index 0000000..5be6708
--- /dev/null
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+VERBOSE=no
+
+PIDS=`pidof -x "$0"`
+
+# make sure pidof sees us
+if [ -z "$PIDS" ]; then
+       exec "$0"
+       exit 1
+fi
+
+GSM_DEVICE="/dev/ttySAC0"
+GSM_POWER="/sys/devices/platform/neo1973-pm-gsm.0/power_on"
+GSM_RESET="/sys/devices/platform/neo1973-pm-gsm.0/reset"
+
+GSM_COMMANDS="Z E0V1 +CFUN=1 +COPS=0"
+
+gsm_running () {
+       if [ "$PIDS" != "$$" ]; then
+               return 0
+       else
+               return 1
+       fi
+}
+
+gsm_send () {
+       cmd="$1"
+       echo -ne "AT${cmd}\r" > "$GSM_DEVICE"
+}
+
+# this function might block forever
+gsm_wait () {
+       ret="UNKNOWN"
+
+       while read status; do
+               case "$status" in
+                       OK*)
+                               ret="OK"
+                               ;;
+                       ERROR*)
+                               ret="ERROR"
+                               ;;
+                       *)
+                               ret="UNKNOWN"
+                               ;;
+               esac
+               if [ "x$ret" != "xUNKNOWN" ]; then
+                       break
+               fi
+       done < "$GSM_DEVICE"
+
+       if [ "x$ret" != "xOK" ]; then
+               return 1
+       fi
+
+       return 0
+}
+
+gsm_setup () {
+       [ $VERBOSE == "yes" ] && echo -n "Powering up GSM modem..."
+       echo 0 > "$GSM_POWER"; sleep 1
+       echo 1 > "$GSM_POWER"; sleep 1
+       echo 1 > "$GSM_RESET"; sleep 1
+       echo 0 > "$GSM_RESET"; sleep 4
+       [ $VERBOSE == "yes" ] && echo "done"
+
+       stty -F "$GSM_DEVICE" cooked -opost -echo crtscts 115200
+}
+
+gsm_wakeup () {
+       [ $VERBOSE == "yes" ] && echo "Waking up GSM modem"
+
+       # there is at most one OK/ERROR even if we send multiple commands
+       gsm_send ""
+       gsm_send ""
+       gsm_send ""
+
+       if gsm_wait; then
+               [ $VERBOSE == "yes" ] && echo "GSM modem awake"
+               return 0
+       else
+               echo "failed to wake up GSM modem"
+               return 1
+       fi
+}
+
+start () {
+       gsm_setup
+
+       if gsm_wakeup; then
+               for cmd in $GSM_COMMANDS
+               do
+                       [ $VERBOSE == "yes" ] && echo "Sending AT$cmd"
+                       gsm_send "$cmd"
+
+                       if ! gsm_wait; then
+                               echo "AT$cmd failed"
+                               break
+                       fi
+               done
+       fi
+}
+
+set -e
+
+case "$1" in
+       start)
+               if gsm_running; then
+                       echo "Another instance is already running"
+                       exit 1
+               fi
+
+               start &
+               ;;
+       stop)
+               if gsm_running; then
+                       PIDS=`pidof -x -o "$$" "$0"`
+                       echo -n "Stopping other instances..."
+                       kill $PIDS
+                       echo "done"
+               fi
+               ;;
+       *)
+               echo "Usage: $0 {start|stop}"
+               exit 1
+               ;;
+esac
diff --git a/packages/initscripts/initscripts-openmoko/checkroot.sh b/packages/initscripts/initscripts-openmoko/checkroot.sh
new file mode 100644 (file)
index 0000000..029ae9b
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# checkroot.sh Check to root filesystem.
+#
+# Version:     @(#)checkroot.sh  2.84  25-Jan-2002  miquels@cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+#      If the root filesystem was not marked as read-only in /etc/fstab,
+#      remount the rootfs rw but do not try to change mtab because it
+#      is on a ro fs until the remount succeeded. Then clean up old mtabs
+#      and finally write the new mtab.
+#      This part is only needed if the rootfs was mounted ro.
+#
+ROOTFSDEV="/dev/root"
+if grep -q "^$ROOTFSDEV .* rw" /proc/mounts; then
+       echo "Root filesystem already read-write, not remounting"
+else
+       rootmode=rw
+
+       echo "Remounting root file system..."
+       mount -n -o remount,noatime,$rootmode /
+       if test "$rootmode" = rw
+       then
+               if test ! -L /etc/mtab
+               then
+                       rm -f /etc/mtab~ /etc/nologin
+                       : > /etc/mtab
+               fi
+               mount -f -o remount /
+               mount -f /proc
+               test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+       fi
+fi
+
+: exit 0
diff --git a/packages/initscripts/initscripts-openmoko/led-trigger.sh b/packages/initscripts/initscripts-openmoko/led-trigger.sh
new file mode 100644 (file)
index 0000000..9583ce9
--- /dev/null
@@ -0,0 +1,6 @@
+#! /bin/sh
+sys_led_trigger="/sys/devices/platform/gta02-led.0/leds/gta02-aux:red/trigger"
+if test -e $sys_led_trigger ;then
+        echo bat-charging > $sys_led_trigger
+fi
+
diff --git a/packages/initscripts/initscripts-openmoko/mountall.sh b/packages/initscripts/initscripts-openmoko/mountall.sh
new file mode 100644 (file)
index 0000000..4bd7bbb
--- /dev/null
@@ -0,0 +1,52 @@
+#
+# mountall.sh  Mount all filesystems.
+#
+# Version:     @(#)mountall.sh  2.83-2  01-Nov-2001  miquels@cistron.nl
+#
+. /etc/default/rcS
+if test -f /etc/default/mountall; then
+    . /etc/default/mountall
+fi
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -a $MOUNTALL
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+       rm -f /dev/initctl
+       mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+#
+# Execute swapon command again, in case we want to swap to
+# a file on a now mounted filesystem.
+#
+doswap=yes
+if test $doswap = yes
+then
+       swapon -a 2> /dev/null
+fi
+
+# A missing homedirectory for root can cause all sorts of problems.
+# This can happen after user formats his /home partition for example
+
+if test -e /etc/passwd
+then
+       ROOT_HOME="`grep root /etc/passwd | cut -d: -f6`"
+
+       if test -n "$ROOT_HOME"
+       then
+               ! test -d "$ROOT_HOME" && mkdir -p "$ROOT_HOME"
+       fi
+fi
+: exit 0
+
diff --git a/packages/initscripts/initscripts-openmoko/mountdevsubfs.sh b/packages/initscripts/initscripts-openmoko/mountdevsubfs.sh
new file mode 100644 (file)
index 0000000..c6cfb05
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. /etc/default/devpts
+
+test -c /dev/ptmx || mknod -m 666 /dev/ptmx c 5 2
+
+if [ -d /dev/pts ]; then
+       mount -n -t devpts devpts /dev/pts -ogid=${TTYGRP},mode=${TTYMODE}
+fi
+
+
+if [ -d /dev/shm ]; then
+       mount -n -t tmpfs shmfs /dev/shm -omode=0777
+fi
diff --git a/packages/initscripts/initscripts-openmoko/mountkernfs.sh b/packages/initscripts/initscripts-openmoko/mountkernfs.sh
new file mode 100644 (file)
index 0000000..1ed09fc
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+supported_kernel() {
+  case "$(uname -r)" in
+    2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
+    2.6.1[0-7]|2.6.1[0-7][!0-9]*) return 1 ;;
+  esac
+  return 0
+}
+
+check_kernel() {
+       if ! supported_kernel; then
+               echo "WARNING: kernel < 2.6.18"
+       fi
+
+       if ! grep -qs devpts /proc/filesystems; then
+               echo "WARNING: kernel does not support devpts"
+       fi
+
+       if ! grep -qs tmpfs /proc/filesystems; then
+               echo "WARNING: kernel does not support tmpfs"
+       fi
+}
+
+if [ -d /proc ]; then
+       mount -n -t proc proc /proc
+fi
+
+check_kernel
+
+if [ -d /sys ]; then
+       mount -n -t sysfs sysfs /sys
+fi
diff --git a/packages/initscripts/initscripts-openmoko/mountnfs.sh b/packages/initscripts/initscripts-openmoko/mountnfs.sh
new file mode 100644 (file)
index 0000000..2631392
--- /dev/null
@@ -0,0 +1,87 @@
+#
+# mountnfs.sh  Now that TCP/IP is configured, mount the NFS file
+#              systems in /etc/fstab if needed. If possible,
+#              start the portmapper before mounting (this is needed for
+#              Linux 2.1.x and up).
+#
+#              Also mounts SBM filesystems now, so the name of
+#              this script is getting increasingly inaccurate.
+#
+# Version:     @(#)mountnfs.sh  2.83  05-Oct-2001  miquels@cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+#      Run in a subshell because of I/O redirection.
+#
+test -x /sbin/portmap && test -f /etc/fstab && (
+
+#
+#      Read through fstab line by line. If it is NFS, set the flag
+#      for mounting NFS filesystems. If any NFS partition is found and it
+#      not mounted with the nolock option, we start the portmapper.
+#
+portmap=no
+mount_nfs=no
+mount_smb=no
+mount_ncp=no
+while read device mountpt fstype options
+do
+       case "$device" in
+               ""|\#*)
+                       continue
+                       ;;
+       esac
+
+       case "$options" in
+               *noauto*)
+                       continue
+                       ;;
+       esac
+
+       if test "$fstype" = nfs
+       then
+               mount_nfs=yes
+               case "$options" in
+                       *nolock*)
+                               ;;
+                       *)
+                               portmap=yes
+                               ;;
+               esac
+       fi
+       if test "$fstype" = smbfs
+       then
+               mount_smb=yes
+       fi
+       if test "$fstype" = ncpfs
+       then
+               mount_ncp=yes
+       fi
+done
+
+exec 0>&1
+
+if test "$portmap" = yes
+then
+       if test -x /sbin/portmap
+       then
+               echo -n "Starting portmapper... "
+               start-stop-daemon --start --quiet --exec /sbin/portmap
+               sleep 2
+       fi
+fi
+
+if test "$mount_nfs" = yes || test "$mount_smb" = yes || test "$mount_ncp" = yes
+then
+       echo "Mounting remote filesystems..."
+       test "$mount_nfs" = yes && mount -a -t nfs
+       test "$mount_smb" = yes && mount -a -t smbfs
+       test "$mount_ncp" = yes && mount -a -t ncpfs
+fi
+
+) < /etc/fstab
+
+: exit 0
+
diff --git a/packages/initscripts/initscripts-openmoko/populate-volatile.sh b/packages/initscripts/initscripts-openmoko/populate-volatile.sh
new file mode 100644 (file)
index 0000000..6fb23d7
--- /dev/null
@@ -0,0 +1,248 @@
+#!/bin/sh
+
+. /etc/default/rcS
+
+CFGDIR="/etc/default/volatiles"
+TMPROOT="/var/tmp"
+COREDEF="00_core"
+
+[ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems."
+
+create_file() {
+       EXEC="
+       touch \"$1\";
+       chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
+       chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
+
+       test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
+
+       [ -e "$1" ] && {
+         [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
+       } || {
+         eval $EXEC
+       }
+}
+
+mk_dir() {
+       EXEC="
+       mkdir -p \"$1\";
+       chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
+       chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
+
+       test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache
+
+       [ -e "$1" ] && {
+         [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping."
+       } || {
+         eval $EXEC
+       }
+}
+
+link_file() {
+       EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0 2>&1"
+
+       test "$VOLATILE_ENABLE_CACHE" = yes && echo "   $EXEC" >> /etc/volatile.cache
+
+       [ -e "$2" ] && {
+         echo "Cannot create link over existing -${TNAME}-." >&2
+       } || {
+         eval $EXEC
+       }
+}
+
+check_requirements() {
+
+  cleanup() {
+    rm "${TMP_INTERMED}"
+    rm "${TMP_DEFINED}"
+    rm "${TMP_COMBINED}"
+    }
+
+  CFGFILE="$1"
+
+  [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0
+
+  TMP_INTERMED="${TMPROOT}/tmp.$$"
+  TMP_DEFINED="${TMPROOT}/tmpdefined.$$"
+  TMP_COMBINED="${TMPROOT}/tmpcombined.$$"
+
+
+  cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
+  cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}"
+  cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
+
+  NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`"
+  NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`"
+
+  [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && {
+    echo "Undefined users:"
+    diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
+    cleanup
+    return 1
+    }
+
+
+  cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}"
+  cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}"
+  cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}"
+
+  NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`"
+  NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`"
+
+  [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && {
+    echo "Undefined groups:"
+    diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>"
+    cleanup
+    return 1
+    }
+
+  # Add checks for required directories here
+
+  cleanup
+  return 0
+  }
+
+apply_cfgfile() {
+
+  CFGFILE="$1"
+
+  check_requirements "${CFGFILE}" || {
+    echo "Skipping ${CFGFILE}"
+    return 1
+    }
+
+  cat ${CFGFILE} | grep -v "^#" | \
+  while read LINE; do
+
+    eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"`
+
+    [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
+
+
+    [ "${TTYPE}" = "l" ] && {
+      TSOURCE="$TLTARGET"
+      [ -L "${TNAME}" ] || {
+       [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-."
+       link_file "${TSOURCE}" "${TNAME}"
+       }
+      continue
+      }
+
+    [ -L "${TNAME}" ] && {
+      [ "${VERBOSE}" != "no" ] && echo "Found link."
+      NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'`
+      echo ${NEWNAME} | grep -v "^/" >/dev/null && {
+       TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}"
+       [ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-."
+       } || {
+       TNAME="${NEWNAME}"
+       [ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-."
+       }
+      }
+
+    case "${TTYPE}" in
+      "f")  [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-."
+           create_file "${TNAME}"
+           ;;
+      "d")  [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-."
+           mk_dir "${TNAME}"
+           # Add check to see if there's an entry in fstab to mount.
+           ;;
+      *)    [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-."
+           continue
+           ;;
+    esac
+
+
+    done
+
+  return 0
+
+  }
+
+SKEL_DIR="/etc/volatile/skel"
+
+skel_mount() {
+       VOLATILE="$1"
+
+       [ -d "$VOLATILE" ] || mkdir -p "$VOLATILE"
+
+       mount -t tmpfs volatile "$VOLATILE" -omode=0755
+}
+
+skel_load() {
+       VOLATILE="$1"
+
+       if ! skel_mount "$VOLATILE"; then
+               echo "failed to mount $VOLATILE"
+               return 1
+       fi
+
+       cp -a "$SKEL_DIR"/* "$VOLATILE"/
+}
+
+skel_update() {
+       VOLATILE="$1"
+
+       if ! skel_mount "$VOLATILE"; then
+               echo "failed to update"
+               return 1
+       fi
+
+       echo -n "Populating volatile directory..."
+       for file in `ls -1 "${CFGDIR}" | sort`; do
+               apply_cfgfile "${CFGDIR}/${file}"
+       done
+       echo "done"
+
+       if [ -d "$SKEL_DIR" ]; then
+               rm -rf "$SKEL_DIR"
+       fi
+
+       mkdir -p "$SKEL_DIR"/tmp
+       cp -a "$VOLATILE"/* "$SKEL_DIR"/
+}
+
+populate() {
+       if [ -d "$SKEL_DIR"/tmp ]; then
+               skel_load /var/volatile
+       else
+               skel_update /var/volatile
+       fi
+
+       for d in /var/volatile/*
+       do
+               ln -sf "$d" /var
+       done
+
+       if ! test -L /tmp; then
+               rm -rf /tmp
+               ln -sf /var/tmp /tmp
+       fi
+}
+
+case "$1" in
+       start)
+       if grep -q "^volatile " /proc/mounts; then
+               echo "volatile directory is already mounted"
+       else
+               populate
+       fi
+       ;;
+       stop)
+       : # no-op
+       ;;
+       update)
+       if skel_update /var/volatile; then
+               umount /var/volatile
+               if grep -q "^volatile " /proc/mounts; then
+                       cp -a "$SKEL_DIR"/* /var/volatile
+               fi
+       fi
+       ;;
+       *)
+       echo "Usage: /etc/init.d/populate-volatile {start|stop|update}"
+       ;;
+esac
+
+: exit 0
diff --git a/packages/initscripts/initscripts-openmoko_1.0.bb b/packages/initscripts/initscripts-openmoko_1.0.bb
new file mode 100644 (file)
index 0000000..d6d233b
--- /dev/null
@@ -0,0 +1,111 @@
+DESCRIPTION = "Openmoko init scripts"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "GPL"
+DEPENDS = ""
+RDEPENDS = ""
+
+RCONFLICTS_${PN} = "initscripts"
+
+SRC_URI = "file://bootmisc.sh \
+          file://campgsm \
+          file://checkroot.sh \
+          file://finish.sh \
+          file://functions \
+          file://hostname.sh \
+          file://led-trigger.sh \
+          file://mountall.sh \
+          file://mountdevsubfs.sh \
+          file://mountkernfs.sh \
+          file://mountnfs.sh \
+          file://populate-volatile.sh \
+          file://devpts \
+          file://volatiles \
+          file://halt \
+          file://reboot \
+          file://rmnologin \
+          file://save-rtc.sh \
+          file://sendsigs \
+          file://umountfs \
+          file://umountnfs.sh \
+          "
+
+SRC_URI_append_arm = " file://alignment.sh"
+
+inherit base
+
+do_install () {
+#
+# Create directories and install device independent scripts
+#
+       install -d ${D}${sysconfdir}/init.d
+       install -d ${D}${sysconfdir}/rcS.d
+       install -d ${D}${sysconfdir}/rc0.d
+       install -d ${D}${sysconfdir}/rc1.d
+       install -d ${D}${sysconfdir}/rc2.d
+       install -d ${D}${sysconfdir}/rc3.d
+       install -d ${D}${sysconfdir}/rc4.d
+       install -d ${D}${sysconfdir}/rc5.d
+       install -d ${D}${sysconfdir}/rc6.d
+       install -d ${D}${sysconfdir}/default
+       install -d ${D}${sysconfdir}/default/volatiles
+
+       if [ "${TARGET_ARCH}" = "arm" ]; then
+               install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
+       fi
+       install -m 0755 ${WORKDIR}/bootmisc.sh          ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/campgsm              ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/checkroot.sh         ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/finish.sh            ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/functions            ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/hostname.sh          ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/led-trigger.sh       ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/mountall.sh          ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/mountnfs.sh          ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/mountdevsubfs.sh     ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/mountkernfs.sh       ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d
+
+       install -m 0644 ${WORKDIR}/devpts               ${D}${sysconfdir}/default/devpts
+       install -m 0644 ${WORKDIR}/volatiles            ${D}${sysconfdir}/default/volatiles/00_core
+
+       install -m 0755 ${WORKDIR}/halt                 ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/reboot               ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/rmnologin            ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/save-rtc.sh          ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/sendsigs             ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/umountfs             ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/umountnfs.sh         ${D}${sysconfdir}/init.d
+
+#
+# Create runlevel links
+#
+       ln -sf          ../init.d/hostname.sh           ${D}${sysconfdir}/rcS.d/S02hostname.sh
+       ln -sf          ../init.d/mountkernfs.sh        ${D}${sysconfdir}/rcS.d/S02mountkernfs.sh
+       ln -sf          ../init.d/mountdevsubfs.sh      ${D}${sysconfdir}/rcS.d/S04mountdevsubfs.sh
+       if [ "${TARGET_ARCH}" = "arm" ]; then
+               ln -sf  ../init.d/alignment.sh          ${D}${sysconfdir}/rcS.d/S06alignment
+       fi
+       #ln -sf         ../init.d/campgsm               ${D}${sysconfdir}/rcS.d/S07campgsm
+       ln -sf          ../init.d/checkroot.sh          ${D}${sysconfdir}/rcS.d/S10checkroot.sh
+       ln -sf          ../init.d/mountall.sh           ${D}${sysconfdir}/rcS.d/S35mountall.sh
+       ln -sf          ../init.d/populate-volatile.sh  ${D}${sysconfdir}/rcS.d/S37populate-volatile.sh
+       ln -sf          ../init.d/mountnfs.sh           ${D}${sysconfdir}/rcS.d/S45mountnfs.sh
+       ln -sf          ../init.d/bootmisc.sh           ${D}${sysconfdir}/rcS.d/S55bootmisc.sh
+       ln -sf          ../init.d/led-trigger.sh        ${D}${sysconfdir}/rcS.d/S97led-trigger.sh
+       ln -sf          ../init.d/finish.sh             ${D}${sysconfdir}/rcS.d/S99finish.sh
+
+       ln -sf          ../init.d/rmnologin             ${D}${sysconfdir}/rc5.d/S99rmnologin
+
+       ln -sf          ../init.d/sendsigs              ${D}${sysconfdir}/rc0.d/S20sendsigs
+       ln -sf          ../init.d/save-rtc.sh           ${D}${sysconfdir}/rc0.d/S25save-rtc.sh
+       ln -sf          ../init.d/umountnfs.sh          ${D}${sysconfdir}/rc6.d/S31umountnfs.sh
+       ln -sf          ../init.d/umountfs              ${D}${sysconfdir}/rc0.d/S40umountfs
+       ln -sf          ../init.d/halt                  ${D}${sysconfdir}/rc0.d/S90halt
+
+       ln -sf          ../init.d/sendsigs              ${D}${sysconfdir}/rc6.d/S20sendsigs
+       ln -sf          ../init.d/save-rtc.sh           ${D}${sysconfdir}/rc6.d/S25save-rtc.sh
+       ln -sf          ../init.d/umountnfs.sh          ${D}${sysconfdir}/rc6.d/S31umountnfs.sh
+       ln -sf          ../init.d/umountfs              ${D}${sysconfdir}/rc6.d/S40umountfs
+       ln -sf          ../init.d/reboot                ${D}${sysconfdir}/rc6.d/S90reboot
+}
index 1ae398e..e787eed 100644 (file)
@@ -74,7 +74,7 @@ do_install_append() {
        rm      ${D}${sysconfdir}/rcS.d/S45mountnfs.sh
        rm      ${D}${sysconfdir}/rcS.d/S55bootmisc.sh
 #      rm      ${D}${sysconfdir}/rcS.d/S55urandom
-       rm      ${D}${sysconfdir}/rcS.d/S99finish
+       rm      ${D}${sysconfdir}/rcS.d/S99finish.sh
        rm      ${D}${sysconfdir}/rcS.d/S05devices
        # udev will run at S04 if installed
        rm      ${D}${sysconfdir}/rcS.d/S03sysfs
@@ -136,7 +136,7 @@ do_install_append() {
        # urandom is currently disabled from S 55 (and won't work with tmpfs /var)
 
        # ipkg-cl configure runs at S 98
-       update-rc.d -r ${D} finish              start 99 S .
+       update-rc.d -r ${D} finish.sh           start 99 S .
 
        #
        # User (2-5) links - UNCHANGED
index 1b29e8f..41b1e97 100644 (file)
@@ -66,7 +66,7 @@ do_install_append() {
        rm      ${D}${sysconfdir}/rcS.d/S45mountnfs.sh
        rm      ${D}${sysconfdir}/rcS.d/S55bootmisc.sh
 #      rm      ${D}${sysconfdir}/rcS.d/S55urandom
-       rm      ${D}${sysconfdir}/rcS.d/S99finish
+       rm      ${D}${sysconfdir}/rcS.d/S99finish.sh
        rm      ${D}${sysconfdir}/rcS.d/S05devices
        # udev will run at S04 if installed
        rm      ${D}${sysconfdir}/rcS.d/S03sysfs
@@ -130,7 +130,7 @@ do_install_append() {
        # urandom is currently disabled from S 55 (and won't work with tmpfs /var)
 
        # ipkg-cl configure runs at S 98
-       update-rc.d -r ${D} finish              start 99 S .
+       update-rc.d -r ${D} finish.sh           start 99 S .
 
        #
        # User (2-5) links - UNCHANGED
index 8daefc5..5d0982e 100644 (file)
@@ -16,7 +16,7 @@ SRC_URI = "file://functions \
            file://hostname.sh \
            file://mountall.sh \
            file://banner \
-           file://finish \
+           file://finish.sh \
            file://bootmisc.sh \
            file://mountnfs.sh \
            file://reboot \
@@ -56,7 +56,7 @@ do_install () {
        install -m 0755    ${WORKDIR}/functions         ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/bootmisc.sh       ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/checkroot.sh      ${D}${sysconfdir}/init.d
-       install -m 0755    ${WORKDIR}/finish            ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/finish.sh         ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/halt              ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/hostname.sh       ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/mountall.sh       ${D}${sysconfdir}/init.d
@@ -113,7 +113,7 @@ do_install () {
        ln -sf          ../init.d/mountnfs.sh   ${D}${sysconfdir}/rcS.d/S45mountnfs.sh
        ln -sf          ../init.d/bootmisc.sh   ${D}${sysconfdir}/rcS.d/S55bootmisc.sh
 #      ln -sf          ../init.d/urandom       ${D}${sysconfdir}/rcS.d/S55urandom
-       ln -sf          ../init.d/finish        ${D}${sysconfdir}/rcS.d/S99finish
+       ln -sf          ../init.d/finish.sh     ${D}${sysconfdir}/rcS.d/S99finish.sh
        ln -sf          ../init.d/devices       ${D}${sysconfdir}/rcS.d/S05devices
        # udev will run at S04 if installed
        ln -sf          ../init.d/sysfs.sh      ${D}${sysconfdir}/rcS.d/S03sysfs