summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--guix/build/linux-initrd.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm
index 1c44c5c5c7..9a13e7213c 100644
--- a/guix/build/linux-initrd.scm
+++ b/guix/build/linux-initrd.scm
@@ -178,7 +178,20 @@ if DEVICE does not contain an ext2 file system."
 return #t if that partition's volume name is LABEL."
   (lambda (part)
     (let* ((device (string-append "/dev/" part))
-           (sblock (read-ext2-superblock device)))
+           (sblock (catch 'system-error
+                     (lambda ()
+                       (read-ext2-superblock device))
+                     (lambda args
+                       ;; When running on the hand-made /dev,
+                       ;; 'disk-partitions' could return partitions for which
+                       ;; we have no /dev node.  Handle that gracefully.
+                       (if (= ENOENT (system-error-errno args))
+                           (begin
+                             (format (current-error-port)
+                                     "warning: device '~a' not found~%"
+                                     device)
+                             #f)
+                           (apply throw args))))))
       (and sblock
            (let ((volume (ext2-superblock-volume-name sblock)))
              (and volume