summaryrefslogtreecommitdiff
path: root/scripts/local
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2010-09-09 14:10:39 -0700
committerAn-Cheng Huang <ancheng@vyatta.com>2010-09-09 14:10:39 -0700
commitd000689490bbc3508f18b878757b3d2bb04d8a69 (patch)
tree40388b9f23e75fc4c0884f7fb076f2d6382e1136 /scripts/local
parentb9c92a3bb82e860c8368eb7933f5ec4ddcd74bcb (diff)
parent3963c563cf1ea4b1126a4c1949181029a0ff2305 (diff)
downloadinitramfs-tools-d000689490bbc3508f18b878757b3d2bb04d8a69.tar.gz
initramfs-tools-d000689490bbc3508f18b878757b3d2bb04d8a69.zip
Merge remote branch 'debian/master' into upstream
Diffstat (limited to 'scripts/local')
-rw-r--r--scripts/local62
1 files changed, 28 insertions, 34 deletions
diff --git a/scripts/local b/scripts/local
index 85d62af..8cb279a 100644
--- a/scripts/local
+++ b/scripts/local
@@ -1,31 +1,6 @@
# Local filesystem mounting -*- shell-script -*-
-# Parameter: device node to check
-# Echos fstype to stdout
-# Return value: indicates if an fs could be recognized
-get_fstype ()
-{
- local FS FSTYPE FSSIZE RET
- FS="${1}"
-
- # vol_id has a more complete list of file systems,
- # but fstype is more robust
- eval $(fstype "${FS}" 2> /dev/null)
- if [ "$FSTYPE" = "unknown" ] && [ -x /lib/udev/vol_id ]; then
- FSTYPE=$(/lib/udev/vol_id -t "${FS}" 2> /dev/null)
- fi
- RET=$?
-
- if [ -z "${FSTYPE}" ]; then
- FSTYPE="unknown"
- fi
-
- echo "${FSTYPE}"
- return ${RET}
-}
-
-# Parameter: Where to mount the filesystem
-mountroot ()
+pre_mountroot()
{
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-top"
run_scripts /scripts/local-top
@@ -33,17 +8,27 @@ mountroot ()
wait_for_udev 10
+ # Load ubi with the correct MTD partition and return since fstype
+ # doesn't work with a char device like ubi.
+ if [ -n "$UBIMTD" ]; then
+ modprobe ubi mtd=$UBIMTD
+ return
+ fi
+
+ # Don't wait for a root device that doesn't have a corresponding
+ # device in /dev (ie, mtd0)
+ if [ "${ROOT#/dev}" = "${ROOT}" ]; then
+ return
+ fi
+
# If the root device hasn't shown up yet, give it a little while
# to deal with removable devices
if [ ! -e "${ROOT}" ] || ! $(get_fstype "${ROOT}" >/dev/null); then
log_begin_msg "Waiting for root file system"
- # Default delay is 180s
- if [ -z "${ROOTDELAY}" ]; then
- slumber=180
- else
- slumber=${ROOTDELAY}
- fi
+ # Default delay is 30s
+ slumber=${ROOTDELAY:-30}
+
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "TIMEOUT ${slumber}" || true
fi
@@ -69,7 +54,7 @@ mountroot ()
# We've given up, but we'll let the user fix matters if they can
while [ ! -e "${ROOT}" ]; do
# give hint about renamed root
- case "${ROOT}" in
+ case "${ROOT}" in
/dev/hd*)
suffix="${ROOT#/dev/hd}"
major="${suffix%[[:digit:]]}"
@@ -94,6 +79,11 @@ mountroot ()
echo " - Missing modules (cat /proc/modules; ls /dev)"
panic "ALERT! ${ROOT} does not exist. Dropping to a shell!"
done
+}
+
+mountroot()
+{
+ pre_mountroot
# Get the root filesystem type if not set
if [ -z "${ROOTFSTYPE}" ]; then
@@ -117,7 +107,11 @@ mountroot ()
# FIXME This has no error checking
# Mount root
- mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
+ if [ "${FSTYPE}" != "unknown" ]; then
+ mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
+ else
+ mount ${roflag} ${ROOTFLAGS} ${ROOT} ${rootmnt}
+ fi
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom"
run_scripts /scripts/local-bottom