Adam Van Ymeren <a...@vany.ca> 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 master. Mark >From b7c1947d050a944937b983532d940491821fa75f Mon Sep 17 00:00:00 2001 From: Mark H Weaver <m...@netris.org> 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 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -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) #:select (find-partition-by-luks-uuid))) @@ -114,7 +115,11 @@ ;; udev-populated /dev/disk/by-id directory but udev may ;; 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)) source) -- 2.13.0