diff options
Diffstat (limited to 'scripts/casper-helpers')
| -rw-r--r-- | scripts/casper-helpers | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/scripts/casper-helpers b/scripts/casper-helpers index 8402d93..17f7d62 100644 --- a/scripts/casper-helpers +++ b/scripts/casper-helpers @@ -113,6 +113,7 @@ setup_loop() { local module=$2 local pattern=$3 local offset=$4 + local encryption=$5 modprobe ${MP_QUIET} -b "$module" udevsettle @@ -120,10 +121,34 @@ setup_loop() { for loopdev in $pattern; do if [ "$(cat $loopdev/size)" -eq 0 ]; then dev=$(sys2dev "${loopdev}") - if [ -n "$offset" ]; then - losetup -o "$offset" "$dev" "$fspath" + options='' + if [ 0 -lt "${offset}" ]; then + options="${options} -o ${offset}" + fi + if [ -z "${encryption}" ]; then + losetup ${options} "${dev}" "${fspath}" else - losetup "$dev" "$fspath" + # Loop AES encryption + while true; do + echo -n "Enter passphrase for ${fspath}: " >&6 + read -s passphrase + echo "${passphrase}" > /tmp/passphrase + exec 9</tmp/passphrase + /sbin/losetup ${options} -e "${encryption}" -p 9 "${dev}" "${fspath}" + error=$? + exec 9<&- + rm -f /tmp/passphrase + if [ 0 -eq ${error} ]; then + unset error + break + fi + echo -n "Something went wrong... Retry? [YES/no] " >&6 + read answer + if [ 'no' = "${answer}" ]; then + unset answer + break + fi + done fi echo "$dev" return 0 |
