Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/luks.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2021-03-14 12:16:46 +0100
committerAnton Hvornum <anton@hvornum.se>2021-03-14 12:16:46 +0100
commitf589750a3cff6f061bc4b78ef857e52a7fbc874c (patch)
tree58c321134df6bb86ef994d85e959af29959e245f /archinstall/lib/luks.py
parent577428f1b20da6f7f583c9c3c276ee1d38abb01d (diff)
Tweaked SysCallError() exception to include the exit code in a machine readable manner. Since it's useful as an indicator where calls might go wrong and for what reason.
Diffstat (limited to 'archinstall/lib/luks.py')
-rw-r--r--archinstall/lib/luks.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/archinstall/lib/luks.py b/archinstall/lib/luks.py
index de53c05e..a4d2a07d 100644
--- a/archinstall/lib/luks.py
+++ b/archinstall/lib/luks.py
@@ -64,12 +64,16 @@ class luks2():
with open(key_file, 'wb') as fh:
fh.write(password)
- cmd_handle = sys_command(f'/usr/bin/cryptsetup -q -v --type luks2 --pbkdf argon2i --hash {hash_type} --key-size {key_size} --iter-time {iter_time} --key-file {os.path.abspath(key_file)} --use-urandom luksFormat {partition.path}')
- if cmd_handle.exit_code == 256:
- # Partition was in use, unmount it and
- partition.unmount()
- sys_command(f'cryptsetup close {partition.path}')
+ try:
cmd_handle = sys_command(f'/usr/bin/cryptsetup -q -v --type luks2 --pbkdf argon2i --hash {hash_type} --key-size {key_size} --iter-time {iter_time} --key-file {os.path.abspath(key_file)} --use-urandom luksFormat {partition.path}')
+ except SysCallError as err:
+ if err.exit_code == 256:
+ # Partition was in use, unmount it and try again
+ partition.unmount()
+ sys_command(f'cryptsetup close {partition.path}')
+ cmd_handle = sys_command(f'/usr/bin/cryptsetup -q -v --type luks2 --pbkdf argon2i --hash {hash_type} --key-size {key_size} --iter-time {iter_time} --key-file {os.path.abspath(key_file)} --use-urandom luksFormat {partition.path}')
+ else:
+ raise err
if b'Command successful.' not in b''.join(cmd_handle):
raise DiskError(f'Could not encrypt volume "{partition.path}": {o}')