#!/bin/sh
|
# Copyright (C) 2011 O.S. Systems Software LTDA.
|
# Licensed on MIT
|
|
rootfs_enabled() {
|
return 0
|
}
|
|
rootfs_run() {
|
if [ -z "$ROOTFS_DIR" ]; then
|
return
|
fi
|
C=0
|
delay=${bootparam_rootdelay:-1}
|
timeout=${bootparam_roottimeout:-5}
|
while ! mountpoint -q $ROOTFS_DIR; do
|
if [ $(( $C * $delay )) -gt $timeout ]; then
|
fatal "root '$bootparam_root' doesn't exist or does not contain a /dev."
|
fi
|
|
if [ -n "$bootparam_root" ]; then
|
debug "No e2fs compatible filesystem has been mounted, mounting $bootparam_root..."
|
|
if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
|
root_uuid=`echo $bootparam_root | cut -c6-`
|
bootparam_root="/dev/disk/by-uuid/$root_uuid"
|
elif [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
|
root_partuuid=`echo $bootparam_root | cut -c10-`
|
bootparam_root="/dev/disk/by-partuuid/$root_partuuid"
|
elif [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
|
root_partlabel=`echo $bootparam_root | cut -c11-`
|
bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
|
elif [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
|
root_label=`echo $bootparam_root | cut -c7-`
|
bootparam_root="/dev/disk/by-label/$root_label"
|
fi
|
|
if [ -e "$bootparam_root" ]; then
|
flags=""
|
if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
|
if [ -n "$bootparam_rootflags" ]; then
|
bootparam_rootflags="$bootparam_rootflags,"
|
fi
|
bootparam_rootflags="${bootparam_rootflags}ro"
|
fi
|
if [ -n "$bootparam_rootflags" ]; then
|
flags="$flags -o$bootparam_rootflags"
|
fi
|
if [ -n "$bootparam_rootfstype" ]; then
|
flags="$flags -t$bootparam_rootfstype"
|
fi
|
mount $flags $bootparam_root $ROOTFS_DIR
|
if mountpoint -q $ROOTFS_DIR; then
|
break
|
else
|
# It is unlikely to change, but keep trying anyway.
|
# Perhaps we pick a different device next time.
|
umount $ROOTFS_DIR
|
fi
|
fi
|
fi
|
debug "Sleeping for $delay second(s) to wait root to settle..."
|
sleep $delay
|
C=$(( $C + 1 ))
|
done
|
}
|