READONLY_SET_='false'
ADDITIONAL_MOUNT_ARGS_=""
BATCH_MODE_="--batch-mode"
+PV_='/usr/bin/pv'
###
### __FUNCTIONS
Format a device or a file (is created with the given size if it
does not exist) with the given filesystem and mount it, if a
mountpoint was given.
- start <device/file> <mountpoint>
- Mount the device/file in the mountpoint.
+ start <device/file> [mountpoint]
+ Mount the device/file in the mountpoint or to a default mountpoint.
stop <mountpoint>
Umount the given mountpoint (umount, luksClose, losetup -d)
{
type_="$1" # could be donothing or init
ret_=0
+ local ddcmd_="dd if=/dev/zero of=$DM_PATH_ bs=1M &>/dev/null"
+ if [[ -x "$PV_" && $verbose_ -ge 3 ]] ; then
+ ddcmd_="dd if=/dev/zero bs=1M 2>/dev/null | $PV_ | dd of=$DM_PATH_ bs=1M &>/dev/null"
+ fi
args_="$VERIFY_PW_ $BATCH_MODE_ --key-size $CIPHER_SIZE_ --cipher $CIPHER_ --iter-time $ITERATION_TIME_ $ADDITIONAL_CRYPTSETUP_ARGS_"
#args_=`echo "$args_" |tr -s ' '`
if [[ $type_ == 'init' && $OPTIMIZED_MODE_SET_ == 'true' ]]; then
echo "finishing optimised initialisation (this could take some time)"
# FIXME
- execute "dd if=/dev/zero of=$DM_PATH_ bs=1M &>/dev/null" # || \
+ execute "$ddcmd_" # || \
# warn "could not finish optimised initialisation properly"
ret_=$?
# cutted out because of no space left on device error :(
{
ret_=0
- # no mountpoint, by-by
if [[ "$MOUNT_POINT_" == "" ]]; then
- printUsage
- die 'no mountpoint given'
- fi
- if [ ! -d "$MOUNT_POINT_" ]; then
- die "mountpoint $MOUNT_POINT_ does not exist"
+ MOUNT_POINT_="/mnt/$DM_NAME_"
+ else
+ # error out if mountpoint was given but doesn't exist
+ if [ ! -d "$MOUNT_POINT_" ]; then
+ die "mountpoint $MOUNT_POINT_ does not exist"
+ fi
fi
# removed due to unionfs problem isLuks does not work with filesystem images
# without losetup
fi
margs_=""
$READONLY_SET_ && margs_='-r'
+ # mountpoint was not given so we use the default one which we need to create first
+ if [ ! -d "$MOUNT_POINT_" ]; then
+ execute "mkdir -p '$MOUNT_POINT_'" || die "failed to create mountpoint $MOUNT_POINT_"
+ fi
execute "mount $margs_ $ADDITIONAL_MOUNT_ARGS_ $DM_PATH_ $MOUNT_POINT_" die
}
dprint "dm_path_=\"$dm_path_\""
# check for symlinks
+ unset tmp_dm_path_
for dmapper in /dev/mapper/grml-crypt* ; do
link=$(readlink -f "$dmapper")
dprint "looping device mapper devices, dmapper=$dmapper => link=$link"
if [ -n "$tmp_dm_path_" ] ; then
dm_path_="$tmp_dm_path_"
+ unset tmp_dm_path_
fi
dm_name_="${dm_path_##*/}"
dprint "device_=\"$device_\""
execute "umount $dm_path_" die "could not unmount $device_"
+ if [[ "$MOUNT_POINT_" == "/mnt/$dm_name_" ]]; then
+ rmdir "$MOUNT_POINT_"
+ fi
execute "$CRYPTSETUP_ luksClose $dm_name_" die "could not close $dm_path_"
echo "$device_" |grep loop &>/dev/null && execute "losetup -d $device_" \
die "could not delete loop device $device_" || \
IS_IMAGE_='false'
ret_=0
init_='init'
+ local ddcmd_
if (( $SIZE_ < 3 )); then
die "the minimum size of an encrypted luks partition should be 2"
elif [[ $ENTROPY_SOURCE_ != '/dev/zero' ]]; then
# default mode
echo "SECURE mode (taking $ENTROPY_SOURCE_ as source, this could take some time)"
- execute "dd if=$ENTROPY_SOURCE_ of=$TARGET_ bs=1M &>/dev/null" #||\
+ ddcmd_="dd if=$ENTROPY_SOURCE_ of=$TARGET_ bs=1M &>/dev/null"
+ if [[ -x "$PV_" && $verbose_ -ge 3 ]] ; then
+ ddcmd_="dd if=$ENTROPY_SOURCE_ bs=1M 2>/dev/null | $PV_ | dd of=$TARGET_ bs=1M &>/dev/null"
+ fi
+ execute "$ddcmd_" # ||\
# skipped because "no space left on device" from dd
# die "could not initialise $TARGET_ with $ENTROPY_SOURCE_"
else