#!/bin/sh
|
### BEGIN INIT INFO
|
# Provides: mount-all
|
# Default-Start: S
|
# Default-Stop:
|
# Description: Mount all internal partitions in /etc/fstab
|
### END INIT INFO
|
|
# Don't exit on error status
|
set +e
|
|
# Uncomment below to see more logs
|
# set -x
|
|
. $(dirname $0)/disk-helper
|
|
LOGFILE=/tmp/mount-all.log
|
|
do_part()
|
{
|
# Not enough args
|
[ $# -lt 6 ] && return
|
|
# Ignore comments
|
echo $1 | grep -q "^#" && return
|
|
DEV=$(echo $1 | sed "s#.*LABEL=#/dev/block/by-name/#")
|
MOUNT_POINT=$2
|
FSTYPE=$3
|
OPTS=$4
|
PASS=$6 # Skip fsck when pass is 0
|
|
echo "Handling $DEV $MOUNT_POINT $FSTYPE $OPTS $PASS"
|
|
# Setup check/mount tools and do some prepare
|
prepare_part || return
|
|
# Parse ro/rw opt
|
MOUNT_RO_RW=rw
|
if echo $OPTS | grep -o "[^,]*ro\>" | grep "^ro$"; then
|
MOUNT_RO_RW=ro
|
fi
|
|
if mountpoint -q $MOUNT_POINT && ! is_rootfs; then
|
# Make sure other partitions are unmounted.
|
umount $MOUNT_POINT &>/dev/null || return
|
fi
|
|
# Handle OEM commands for current partition
|
handle_oem_command
|
|
# Check and repair
|
check_part
|
|
# Mount partition
|
is_rootfs || mount_part || return
|
|
# Resize partition if needed
|
resize_part
|
|
# Restore ro/rw
|
remount_part $MOUNT_RO_RW
|
}
|
|
mount_all()
|
{
|
echo "Will now mount all partitions in /etc/fstab"
|
|
OEM_CMD=$(strings "${MISC_DEV:-/}" | grep "^cmd_" | xargs)
|
[ "$OEM_CMD" ] && echo "Note: Found OEM commands - $OEM_CMD"
|
|
AUTO_MKFS="/.auto_mkfs"
|
if [ -f $AUTO_MKFS ];then
|
echo "Note: Will auto format partitons, remove $AUTO_MKFS to disable"
|
else
|
unset AUTO_MKFS
|
fi
|
|
SKIP_FSCK="/.skip_fsck"
|
if [ -f $SKIP_FSCK ];then
|
echo "Note: Will skip fsck, remove $SKIP_FSCK to enable"
|
else
|
echo "Note: Create $SKIP_FSCK to skip fsck"
|
echo " - The check might take a while if didn't shutdown properly!"
|
unset SKIP_FSCK
|
fi
|
|
while read LINE;do
|
do_part $LINE
|
done < /etc/fstab
|
}
|
|
case "$1" in
|
start|"")
|
# Mount basic file systems firstly
|
mount -a -t "proc,devpts,tmpfs,sysfs,debugfs,pstore"
|
|
mount_all 2>&1 | tee $LOGFILE
|
echo "Log saved to $LOGFILE"
|
;;
|
*)
|
echo "Usage: mount-helper start" >&2
|
exit 3
|
;;
|
esac
|
|
:
|