guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/04: installer: Ensure luks devices are open when mounting partitions.


From: guix-commits
Subject: 03/04: installer: Ensure luks devices are open when mounting partitions.
Date: Thu, 22 Sep 2022 10:28:25 -0400 (EDT)

mothacehe pushed a commit to branch master
in repository guix.

commit fd942712d8036519d1bcb85b37b127a8f2fff474
Author: Josselin Poiret <dev@jpoiret.xyz>
AuthorDate: Thu Sep 22 15:12:46 2022 +0200

    installer: Ensure luks devices are open when mounting partitions.
    
    Partially-Fixes: <https://issues.guix.gnu.org/57983>
    
    * gnu/installer/parted.scm (luks-ensure-open): New procedure.
    (unmount-user-partitions): Ensure luks devices are open.
    
    Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
---
 gnu/installer/parted.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 51ba2bebd6..fcc936a391 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -1194,6 +1194,20 @@ USER-PARTITION if it is encrypted, or the plain 
file-name otherwise."
        ((run-command-in-installer) "cryptsetup" "open" "--type" "luks"
         "--key-file" key-file file-name label)))))
 
+(define (luks-ensure-open user-partition)
+  "Ensure partition pointed by USER-PARTITION is opened."
+  (unless (file-exists? (user-partition-upper-file-name user-partition))
+    (let* ((file-name (user-partition-file-name user-partition))
+           (label (user-partition-crypt-label user-partition))
+           (password (secret-content (user-partition-crypt-password 
user-partition))))
+      (call-with-luks-key-file
+       password
+       (lambda (key-file)
+         (installer-log-line "opening LUKS entry ~s at ~s"
+                             label file-name)
+         ((run-command-in-installer) "cryptsetup" "open" "--type" "luks"
+          "--key-file" key-file file-name label))))))
+
 (define (luks-close user-partition)
   "Close the encrypted partition pointed by USER-PARTITION."
   (let ((label (user-partition-crypt-label user-partition)))
@@ -1278,6 +1292,8 @@ respective mount-points."
                         (user-fs-type->mount-type fs-type))
                        (file-name
                         (user-partition-upper-file-name user-partition)))
+                  (when crypt-label
+                    (luks-ensure-open user-partition))
                   (mkdir-p target)
                   (installer-log-line "mounting ~s on ~s" file-name target)
                   (mount file-name target mount-type)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]