1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#!/bin/sh
# cryptdisks_start - wrapper around cryptsetup which parses
# /etc/crypttab, just like mount parses /etc/fstab.
# Initial code and (c) 2007 Jon Dowland <jon@alcopop.org>
# License: GNU General Public License, v2 or any later
# (https://www.gnu.org/copyleft/gpl.html)
set -e
. /lib/cryptsetup/cryptdisks-functions
INITSTATE="manual"
DEFAULT_LOUD="yes"
FORCE_START="yes"
usage() {
local rv="${1:-1}"
echo "Usage: $0 [-r|--readonly] <name> [.. <name>]" >&2
echo >&2
echo "reads $TABFILE and starts the mapping corresponding to <name>" >&2
exit $rv
}
CRYPTTAB_EXTRA_OPTIONS=
while [ $# -gt 0 ]; do
case "$1" in
-r|--readonly) CRYPTTAB_EXTRA_OPTIONS="${CRYPTTAB_EXTRA_OPTIONS:+$CRYPTTAB_EXTRA_OPTIONS,}readonly";;
-h|--help|-\?) usage 0;;
--) shift; break;;
-*) echo "Error: unknown option '$1'" >&2; usage 1;;
*) break;;
esac
shift
done
[ $# -gt 0 ] || usage 1
if [ $(id -u) -ne 0 ]; then
log_warning_msg "$0 needs root privileges"
exit 1
fi
log_action_begin_msg "Starting crypto disk"
mount_fs
rv=0
for name in "$@"; do
if ! crypttab_find_entry --quiet "$name"; then
device_msg "$name" "failed, not found in crypttab"
rv=1
else
if [ -n "$CRYPTTAB_EXTRA_OPTIONS" ]; then
CRYPTTAB_OPTIONS="$CRYPTTAB_OPTIONS,$CRYPTTAB_EXTRA_OPTIONS"
_CRYPTTAB_OPTIONS="$_CRYPTTAB_OPTIONS,$CRYPTTAB_EXTRA_OPTIONS"
fi
setup_mapping || rv=$?
fi
done
umount_fs
log_action_end_msg $rv
exit $rv
|