t11 and new partitioner fixes
[automated-distro-installer] / fsf / open-crypt-luks-keys-loopback
1 #!/bin/bash
2
3 # usage: $0
4 # this script is idempotent
5
6 # warning: changes here may affect the close version of this script
7
8
9 if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
10 shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
11 set -eE -o pipefail
12 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
13
14 m() { printf "%s\n" "$*"; "$@"; }
15
16
17 fs_file=/root/crypt-luks-keys-loopback
18 mapper_name=crypt-luks-keys-loopback
19
20 l=$(losetup -j $fs_file | sed -rn 's/^([^ ]+): .*/\1/p' | head -n1 ||:)
21 if [[ $l ]]; then
22 echo "$0: skipping losetup due to existing loopback: $l"
23 else
24 l=$(losetup -f)
25 m losetup $l $fs_file
26 fi
27 if cryptsetup status /dev/mapper/$mapper_name &>/dev/null; then
28 echo "$0: skipping cryptsetup due to existing /dev/mapper/$mapper_name"
29 else
30 if ! cryptsetup luksOpen $l $mapper_name; then
31 echo "$0: error luksOpen failed. detaching loopback" >&2
32 m losetup -d $l
33 exit 1
34 fi
35 fi
36 if mountpoint -q /dev/mapper/$mapper_name; then
37 echo "$0: skipping mount /dev/mapper/$mapper_name /mnt2 due to existing mount"
38 else
39 m mount /dev/mapper/$mapper_name /mnt2
40 fi