[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27242: Fail to load LUKS encrypted rootfs, attempts to open luks dev
Mark H Weaver
bug#27242: Fail to load LUKS encrypted rootfs, attempts to open luks device before it's ready.
Mon, 05 Jun 2017 06:07:52 -0400
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Adam Van Ymeren <address@hidden> writes:
> On my machine when booting GuixSD, it fails to find the rootfs from the
> initramfs. It errors out attempting to find the luks device node.
> Shortly after it errors is when I see the kernel dmesg output of the
> nvme0 device becomining ready.
> It looks like we need to wait for the device node to become ready, or
> poll/sleep a few times if we fail to locate the device.
I ran into the same problem at one point, and have applied the following
patch to my private branch of Guix. Perhaps it should be applied to
>From b7c1947d050a944937b983532d940491821fa75f Mon Sep 17 00:00:00 2001
From: Mark H Weaver <address@hidden>
Date: Tue, 28 Mar 2017 05:52:28 -0400
Subject: [PATCH] DRAFT: Cope with delayed appearance of LUKS source.
gnu/system/mapped-devices.scm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 2959802c9..3659ac2d6 100644
@@ -101,6 +101,7 @@
#~(let ((source #$source))
;; XXX: 'use-modules' should be at the top level.
(use-modules (rnrs bytevectors) ;bytevector?
+ (srfi srfi-1)
((gnu build file-systems)
@@ -114,7 +115,11 @@
;; udev-populated /dev/disk/by-id directory but udev
;; be unavailable at the time we run this.
(if (bytevector? source)
- (or (find-partition-by-luks-uuid source)
+ (or (let loop ((tries-left 10))
+ (and (positive? tries-left)
+ (or (find-partition-by-luks-uuid source)
+ (begin (sleep 1)
+ (loop (- tries-left 1))))))
(error "LUKS partition not found" source))