From: Chen Qi <qi.c...@windriver.com>

The purpose of this script is to set up commands that busybox provides
if /usr is missing. In this way, the system can still boot into single
user mode for recovery or repair if the /usr partition is broken.

For normal use case, that is, /usr is on the same partition as /, or
/usr is correctly mounted at boot time, this script has no real effect.

Signed-off-by: Chen Qi <qi.c...@windriver.com>
---
 .../initscripts/initscripts-1.0/setup-commands.sh  |   24 ++++++++++++++++++++
 meta/recipes-core/initscripts/initscripts_1.0.bb   |    3 +++
 2 files changed, 27 insertions(+)
 create mode 100644 
meta/recipes-core/initscripts/initscripts-1.0/setup-commands.sh

diff --git a/meta/recipes-core/initscripts/initscripts-1.0/setup-commands.sh 
b/meta/recipes-core/initscripts/initscripts-1.0/setup-commands.sh
new file mode 100644
index 0000000..5133780
--- /dev/null
+++ b/meta/recipes-core/initscripts/initscripts-1.0/setup-commands.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# set up necessary links to busybox if fundamental command from /usr
+# are not available.
+
+[ -e /etc/default/rcS ] && . /etc/default/rcS
+
+for dir in /usr/bin /usr/sbin; do
+    if [ ! -e $dir ]; then
+       if [ "$VERBOSE" != "no" ]; then
+           echo "WARN: $dir missing, setting up links to busybox"
+       fi
+       mkdir -p $dir
+       for suffix in ".nosuid" ".suid" ""; do
+           if [ ! -e /etc/busybox.links${suffix} ]; then
+               continue
+           fi
+           usr_commands=`grep "$dir" /etc/busybox.links${suffix}`
+           for command in $usr_commands; do
+               ln -sf /bin/busybox${suffix} $command
+           done
+       done
+    fi
+done
diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb 
b/meta/recipes-core/initscripts/initscripts_1.0.bb
index 2d58266..b3c898f 100644
--- a/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -33,6 +33,7 @@ SRC_URI = "file://functions \
            file://GPLv2.patch \
            file://dmesg.sh \
            file://logrotate-dmesg.conf \
+           file://setup-commands.sh \
 "
 
 SRC_URI_append_arm = " file://alignment.sh"
@@ -93,6 +94,7 @@ do_install () {
        install -m 0644    ${WORKDIR}/volatiles         
${D}${sysconfdir}/default/volatiles/00_core
        install -m 0755    ${WORKDIR}/dmesg.sh          ${D}${sysconfdir}/init.d
        install -m 0644    ${WORKDIR}/logrotate-dmesg.conf ${D}${sysconfdir}/
+       install -m 0755    ${WORKDIR}/setup-commands.sh ${D}${sysconfdir}/init.d
 
        if [ "${TARGET_ARCH}" = "arm" ]; then
                install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
@@ -123,6 +125,7 @@ do_install () {
        update-rc.d -r ${D} populate-volatile.sh start 37 S .
        update-rc.d -r ${D} read-only-rootfs-hook.sh start 29 S .
        update-rc.d -r ${D} devpts.sh start 38 S .
+       update-rc.d -r ${D} setup-commands.sh start 03 S .
        if [ "${TARGET_ARCH}" = "arm" ]; then
                update-rc.d -r ${D} alignment.sh start 06 S .
        fi
-- 
1.7.9.5

_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to