summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@datenfreihafen.org>2009-09-17 18:01:23 +0000
committerStefan Schmidt <stefan@datenfreihafen.org>2009-09-17 18:38:25 +0000
commite8622747c60b148e94f095c4bb7fe40fc52bba0a (patch)
tree76274bb2dfc0fdc63e419144deccc3a85a087378 /recipes
parent80c55c2574e99f025d88608966b09fcc578ed4f5 (diff)
initscripts-shr: Add SHR initscripts (from SHR)
Diffstat (limited to 'recipes')
-rw-r--r--recipes/shr/initscripts-shr/alignment.sh6
-rw-r--r--recipes/shr/initscripts-shr/bootmisc.sh47
-rw-r--r--recipes/shr/initscripts-shr/checkroot.sh45
-rw-r--r--recipes/shr/initscripts-shr/devpts5
-rw-r--r--recipes/shr/initscripts-shr/finish.sh7
-rw-r--r--recipes/shr/initscripts-shr/functions17
-rw-r--r--recipes/shr/initscripts-shr/g_ether.sh93
-rw-r--r--recipes/shr/initscripts-shr/halt25
-rw-r--r--recipes/shr/initscripts-shr/hostname.sh11
-rw-r--r--recipes/shr/initscripts-shr/mountall.sh52
-rw-r--r--recipes/shr/initscripts-shr/mountdevsubfs.sh14
-rw-r--r--recipes/shr/initscripts-shr/mountkernfs.sh33
-rw-r--r--recipes/shr/initscripts-shr/mountnfs.sh87
-rw-r--r--recipes/shr/initscripts-shr/populate-volatile.sh248
-rw-r--r--recipes/shr/initscripts-shr/reboot11
-rw-r--r--recipes/shr/initscripts-shr/rmnologin14
-rw-r--r--recipes/shr/initscripts-shr/save-rtc.sh5
-rw-r--r--recipes/shr/initscripts-shr/sendsigs17
-rw-r--r--recipes/shr/initscripts-shr/umountfs18
-rw-r--r--recipes/shr/initscripts-shr/umountnfs.sh28
-rw-r--r--recipes/shr/initscripts-shr/volatiles40
-rw-r--r--recipes/shr/initscripts-shr_git.bb107
22 files changed, 930 insertions, 0 deletions
diff --git a/recipes/shr/initscripts-shr/alignment.sh b/recipes/shr/initscripts-shr/alignment.sh
new file mode 100644
index 0000000000..4a66dc6bc8
--- /dev/null
+++ b/recipes/shr/initscripts-shr/alignment.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -e /proc/cpu/alignment ]; then
+ echo "3" > /proc/cpu/alignment
+fi
+
diff --git a/recipes/shr/initscripts-shr/bootmisc.sh b/recipes/shr/initscripts-shr/bootmisc.sh
new file mode 100644
index 0000000000..4511e12fc1
--- /dev/null
+++ b/recipes/shr/initscripts-shr/bootmisc.sh
@@ -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/recipes/shr/initscripts-shr/checkroot.sh b/recipes/shr/initscripts-shr/checkroot.sh
new file mode 100644
index 0000000000..197a3a81d7
--- /dev/null
+++ b/recipes/shr/initscripts-shr/checkroot.sh
@@ -0,0 +1,45 @@
+#
+# 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.
+#
+# Also attempt to remount if the noatime option is not present.
+#
+ROOTFSDEV="/dev/root"
+if grep -q "^$ROOTFSDEV .* rw,.*noatime" /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/recipes/shr/initscripts-shr/devpts b/recipes/shr/initscripts-shr/devpts
new file mode 100644
index 0000000000..e10e371662
--- /dev/null
+++ b/recipes/shr/initscripts-shr/devpts
@@ -0,0 +1,5 @@
+# GID of the `tty' group
+TTYGRP=5
+
+# Set to 600 to have `mesg n' be the default
+TTYMODE=620
diff --git a/recipes/shr/initscripts-shr/finish.sh b/recipes/shr/initscripts-shr/finish.sh
new file mode 100644
index 0000000000..897f005310
--- /dev/null
+++ b/recipes/shr/initscripts-shr/finish.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if ! test -e /etc/.configured; then
+ opkg-cl configure
+ > /etc/.configured
+fi
+
diff --git a/recipes/shr/initscripts-shr/functions b/recipes/shr/initscripts-shr/functions
new file mode 100644
index 0000000000..fb9a914e4d
--- /dev/null
+++ b/recipes/shr/initscripts-shr/functions
@@ -0,0 +1,17 @@
+# -*-Shell-script-*-
+#
+# functions This file contains functions to be used by most or all
+# shell scripts in the /etc/init.d directory.
+#
+
+machine_id() { # return the machine ID
+ awk 'BEGIN { FS=": " } /Hardware/ { gsub(" ", "_", $2); print tolower($2) } ' </proc/cpuinfo
+}
+
+killproc() { # kill the named process(es)
+ pid=`/bin/ps -e x |
+ /bin/grep $1 |
+ /bin/grep -v grep |
+ /bin/sed -e 's/^ *//' -e 's/ .*//'`
+ [ "$pid" != "" ] && kill $pid
+}
diff --git a/recipes/shr/initscripts-shr/g_ether.sh b/recipes/shr/initscripts-shr/g_ether.sh
new file mode 100644
index 0000000000..9257268936
--- /dev/null
+++ b/recipes/shr/initscripts-shr/g_ether.sh
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# This script runs very early in order to ensure that the USB network comes
+# up at first system boot. It gathers or creates the necessary host and device
+# mac addresses for the g_ether module at first boot, and writes them to the
+# /etc/modprobe.conf/g_ether.conf file.
+#
+# Due to some oddness with udev, it also modprobes g_ether, only on first boot.
+
+# If the g_ether module options file exists, nothing to do.
+
+if [ ! -e /etc/modprobe.d/g_ether.conf ] ; then
+
+# Gather up all g_ether parameters passed in on the kernel command line, and
+# make sure to pass them to the module; this will ensure similar behavior
+# between the module and built-in.
+
+# Begin by searching the command line for the host and dev addrs
+da=`sed -n -e 's|.*g_ether\.dev_addr\=\(..:..:..:..:..:..\).*|\1|p' /proc/cmdline`
+ha=`sed -n -e 's|.*g_ether\.host_addr\=\(..:..:..:..:..:..\).*|\1|p' /proc/cmdline`
+
+# If the device address is missing, try to find it some other way
+if [ -z "$da" ] ; then
+
+ if grep -q '^Hardware.*GTA02$' /proc/cpuinfo ; then
+
+ # Use the "identity" or "factory" partition on the GTA02.
+ # Ok, this is ugly. We run before udev, so we need to rummage about in
+ # /sys to see if we have an identity partition, and create the device
+ # node if it doesn't already exist.
+ if [ ! -e /dev/mtd5ro -a -e /sys/class/mtd/mtd5ro/dev ] ; then
+ majmin=`sed -e 's|:| |' /sys/class/mtd/mtd5ro/dev`
+ mknod /dev/mtd5ro c $majmin
+ fi
+
+ # We should have the device node now.
+ if [ -e /dev/mtd5ro ] ; then
+
+ # The partition is an ext2 filesystem; we probably should mount the
+ # thing using a loopback mount and then read the correct file from it,
+ # but we're running way early in the boot; not only will that be slow,
+ # there's a good chance it may not even work (udev hasn't run yet).
+ da=`strings /dev/mtd5ro | grep ^U: | sed -n -e 's|U:\(..:..:..:..:..:..\).*|\1|p'`
+
+ fi
+
+ fi
+
+ # TODO: add code to compute a static random address for the GTA01.
+ # For now, GTA01 owners should probably set the addresses in their
+ # u-boot environment and pass in on the command line. A reasonable
+ # solution would be to the random prefix range with the last part of
+ # the mac copied from the bluetooth device.
+
+fi
+
+# If have a device address, now we need to sort out the host address. If it
+# is unspecified, or if it is the same as the device address (Qi does this),
+# compute a new address by just incrementing the device address.
+
+if [ -n "$da" ] ; then
+ if [ -z "$ha" -o "$da" = "$ha" ] ; then
+
+ # We need to compute a new address - split the device address into two
+ # part, and increment the second part.
+ pfx=`echo "$da" | sed -n -e 's|\(..:..:..:\)..:..:..|\1|p'`
+ i=`echo "$da" | sed -n -e 's|..:..:..:\(..\):\(..\):\(..\)|0x\1\2\3|p'`
+
+ # Now increment the mac addr
+ i=$(printf %06x $(($i+1)))
+
+ # And glue the parts back together again.
+ i=`echo "$i" | sed -n -e 's|\(..\)\(..\)\(..\)|\1:\2:\3|p'`
+
+ # Assign the computed host address, if this all worked out.
+ [ -n "$i" -a -n "$pfx" ] && ha=$pfx$i
+
+ fi
+fi
+
+# Compute the command-line options themselves
+[ -n "$da" ] && daddr="dev_addr=$da"
+[ -n "$ha" ] && haddr="host_addr=$ha"
+
+# Write the module options file out even if we have no addresses to write,
+# so that we do not need to run again at next boot.
+[ -d /etc/modprobe.d ] || mkdir /etc/modprobe.d
+echo "options g_ether $daddr $haddr" >/etc/modprobe.d/g_ether.conf
+
+# And now, since this is first boot, we need to probe the module
+modprobe g_ether 2>/dev/null || true
+
+fi
diff --git a/recipes/shr/initscripts-shr/halt b/recipes/shr/initscripts-shr/halt
new file mode 100644
index 0000000000..d8cab222ca
--- /dev/null
+++ b/recipes/shr/initscripts-shr/halt
@@ -0,0 +1,25 @@
+#! /bin/sh
+#
+# halt Execute the halt command.
+#
+# Version: @(#)halt 2.84-2 07-Jan-2002 miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+ /etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+ hddown=""
+fi
+
+halt -d -f -i -p $hddown
+
+: exit 0
diff --git a/recipes/shr/initscripts-shr/hostname.sh b/recipes/shr/initscripts-shr/hostname.sh
new file mode 100644
index 0000000000..0f3d374286
--- /dev/null
+++ b/recipes/shr/initscripts-shr/hostname.sh
@@ -0,0 +1,11 @@
+#
+# hostname.sh Set hostname.
+#
+# Version: @(#)hostname.sh 1.10 26-Feb-2001 miquels@cistron.nl
+#
+
+if test -f /etc/hostname
+then
+ hostname -F /etc/hostname
+fi
+
diff --git a/recipes/shr/initscripts-shr/mountall.sh b/recipes/shr/initscripts-shr/mountall.sh
new file mode 100644
index 0000000000..4bd7bbb02c
--- /dev/null
+++ b/recipes/shr/initscripts-shr/mountall.sh
@@ -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/recipes/shr/initscripts-shr/mountdevsubfs.sh b/recipes/shr/initscripts-shr/mountdevsubfs.sh
new file mode 100644
index 0000000000..c6cfb05af2
--- /dev/null
+++ b/recipes/shr/initscripts-shr/mountdevsubfs.sh
@@ -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/recipes/shr/initscripts-shr/mountkernfs.sh b/recipes/shr/initscripts-shr/mountkernfs.sh
new file mode 100644
index 0000000000..1ed09fcf05
--- /dev/null
+++ b/recipes/shr/initscripts-shr/mountkernfs.sh
@@ -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/recipes/shr/initscripts-shr/mountnfs.sh b/recipes/shr/initscripts-shr/mountnfs.sh
new file mode 100644
index 0000000000..2631392483
--- /dev/null
+++ b/recipes/shr/initscripts-shr/mountnfs.sh
@@ -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/recipes/shr/initscripts-shr/populate-volatile.sh b/recipes/shr/initscripts-shr/populate-volatile.sh
new file mode 100644
index 0000000000..bf2cac76e2
--- /dev/null
+++ b/recipes/shr/initscripts-shr/populate-volatile.sh
@@ -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/recipes/shr/initscripts-shr/reboot b/recipes/shr/initscripts-shr/reboot
new file mode 100644
index 0000000000..56278199be
--- /dev/null
+++ b/recipes/shr/initscripts-shr/reboot
@@ -0,0 +1,11 @@
+#! /bin/sh
+#
+# reboot Execute the reboot command.
+#
+# Version: @(#)reboot 2.75 22-Jun-1998 miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo -n "Rebooting... "
+reboot -d -f -i
diff --git a/recipes/shr/initscripts-shr/rmnologin b/recipes/shr/initscripts-shr/rmnologin
new file mode 100644
index 0000000000..444145a26a
--- /dev/null
+++ b/recipes/shr/initscripts-shr/rmnologin
@@ -0,0 +1,14 @@
+#! /bin/sh
+#
+# rmnologin This script removes the /etc/nologin file as the last
+# step in the boot process.
+#
+# Version: @(#)rmnologin 1.00 22-Jun-1998 miquels@cistron.nl
+#
+
+if test -f /etc/nologin.boot
+then
+ rm -f /etc/nologin /etc/nologin.boot
+fi
+
+: exit 0
diff --git a/recipes/shr/initscripts-shr/save-rtc.sh b/recipes/shr/initscripts-shr/save-rtc.sh
new file mode 100644
index 0000000000..e786073051
--- /dev/null
+++ b/recipes/shr/initscripts-shr/save-rtc.sh
@@ -0,0 +1,5 @@
+#! /bin/sh
+/etc/init.d/hwclock.sh stop
+
+# Update the timestamp
+date +%2m%2d%2H%2M%Y > /etc/timestamp
diff --git a/recipes/shr/initscripts-shr/sendsigs b/recipes/shr/initscripts-shr/sendsigs
new file mode 100644
index 0000000000..c62a5cd37d
--- /dev/null
+++ b/recipes/shr/initscripts-shr/sendsigs
@@ -0,0 +1,17 @@
+#! /bin/sh
+#
+# sendsigs Kill all remaining processes.
+#
+# Version: @(#)sendsigs 2.75 22-Jun-1998 miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Kill all processes.
+echo "Sending all processes the TERM signal..."
+killall5 -15
+sleep 5
+echo "Sending all processes the KILL signal..."
+killall5 -9
+
+: exit 0
diff --git a/recipes/shr/initscripts-shr/umountfs b/recipes/shr/initscripts-shr/umountfs
new file mode 100644
index 0000000000..ec75b0c4a4
--- /dev/null
+++ b/recipes/shr/initscripts-shr/umountfs
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+# umountfs Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted.
+echo "Unmounting local filesystems..."
+mount -o remount,ro /mnt/ram
+umount -f -a -r
+
+mount -o remount,ro /
+
+: exit 0
diff --git a/recipes/shr/initscripts-shr/umountnfs.sh b/recipes/shr/initscripts-shr/umountnfs.sh
new file mode 100644
index 0000000000..f5fe48aa74
--- /dev/null
+++ b/recipes/shr/initscripts-shr/umountnfs.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+#
+# umountnfs.sh Unmount all network filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# Write a reboot record to /var/log/wtmp before unmounting
+halt -w
+
+echo "Unmounting remote filesystems..."
+
+test -f /etc/fstab && (
+
+#
+# Read through fstab line by line and unount network file systems
+#
+while read device mountpt fstype options
+do
+ if test "$fstype" = nfs || test "$fstype" = smbfs || test "$fstype" = ncpfs
+ then
+ umount -f $mountpt
+ fi
+done
+) < /etc/fstab
+
+: exit 0
+
diff --git a/recipes/shr/initscripts-shr/volatiles b/recipes/shr/initscripts-shr/volatiles
new file mode 100644
index 0000000000..fbcc858226
--- /dev/null
+++ b/recipes/shr/initscripts-shr/volatiles
@@ -0,0 +1,40 @@
+# This configuration file lists filesystem objects that should get verified
+# during startup and be created if missing.
+#
+# Every line must either be a comment starting with #
+# or a definition of format:
+# <type> <owner> <group> <mode> <path> <linksource>
+# where the items are separated by whitespace !
+#
+# <type> : d|f|l : (d)irectory|(f)ile|(l)ink
+#
+# A linking example:
+# l root root 0777 /var/test /tmp/testfile
+# f root root 0644 /var/test none
+#
+# Understanding links:
+# When populate-volatile is to verify/create a directory or file, it will first
+# check it's existence. If a link is found to exist in the place of the target,
+# the path of the target is replaced with the target the link points to.
+# Thus, if a link is in the place to be verified, the object will be created
+# in the place the link points to instead.
+# This explains the order of "link before object" as in the example above, where
+# a link will be created at /var/test pointing to /tmp/testfile and due to this
+# link the file defined as /var/test will actually be created as /tmp/testfile.
+d root root 0755 /var/volatile/cache none
+d root root 1777 /var/volatile/lock none
+d root root 0755 /var/volatile/log none
+d root root 0755 /var/volatile/run none
+d root root 1777 /var/volatile/tmp none
+l root root 0755 /var/cache /var/volatile/cache
+l root root 1777 /var/lock /var/volatile/lock
+l root root 0755 /var/log /var/volatile/log
+l root root 0755 /var/run /var/volatile/run
+l root root 1777 /var/tmp /var/volatile/tmp
+d root root 0755 /var/lock/subsys none
+f root root 0664 /var/log/wtmp none
+f root root 0644 /var/log/lastlog none
+f root root 0664 /var/run/utmp none
+l root root 0644 /etc/resolv.conf /var/run/resolv.conf
+f root root 0644 /var/run/resolv.conf none
+
diff --git a/recipes/shr/initscripts-shr_git.bb b/recipes/shr/initscripts-shr_git.bb
new file mode 100644
index 0000000000..46ea6529ba
--- /dev/null
+++ b/recipes/shr/initscripts-shr_git.bb
@@ -0,0 +1,107 @@
+DESCRIPTION = "SHR init scripts"
+SECTION = "base"
+PRIORITY = "required"
+DEPENDS = ""
+RDEPENDS = ""
+LICENSE = "GPL"
+PV = "0.0.1+${PR}-gitr${SRCREV}"
+PR = "r11"
+
+RPROVIDES_${PN} = "initscripts"
+RCONFLICTS_${PN} = "initscripts"
+RREPLACES_${PN} = "initscripts"
+
+SRC_URI = "file://alignment.sh \
+ file://bootmisc.sh \
+ file://checkroot.sh \
+ file://finish.sh \
+ file://functions \
+ file://g_ether.sh \
+ file://hostname.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 \
+ "
+
+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
+
+ install -m 0755 ${WORKDIR}/alignment.sh ${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.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/functions ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/g_ether.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/hostname.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/mountkernfs.sh ${D}${sysconfdir}/rcS.d/S01mountkernfs.sh
+ ln -sf ../init.d/g_ether.sh ${D}${sysconfdir}/rcS.d/S02g_ether.sh
+ ln -sf ../init.d/hostname.sh ${D}${sysconfdir}/rcS.d/S02hostname.sh
+ ln -sf ../init.d/checkroot.sh ${D}${sysconfdir}/rcS.d/S02checkroot.sh
+ ln -sf ../init.d/mountdevsubfs.sh ${D}${sysconfdir}/rcS.d/S04mountdevsubfs.sh
+ ln -sf ../init.d/alignment.sh ${D}${sysconfdir}/rcS.d/S06alignment.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/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
+}