diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-03-10 00:15:59 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-03-10 00:15:59 +0100 |
commit | 8d5c14edf5a6d01f859b1aa00c836ffdb5ddecf4 (patch) | |
tree | 8b4cd15bdba1785fee1b66d9a160429f83b9f2ff | |
parent | 464f5447396fcec9b43f7eab71d5d42b522a157f (diff) | |
download | guix-8d5c14edf5a6d01f859b1aa00c836ffdb5ddecf4.tar guix-8d5c14edf5a6d01f859b1aa00c836ffdb5ddecf4.tar.gz |
linux-initrd: Skip initrd module check when 'modules.alias' can't be found.
Fixes <https://bugs.gnu.org/30760>.
Reported by Tomáš Čech <sleep_walker@gnu.org>.
* gnu/system/linux-initrd.scm (check-device-initrd-modules): Call
'known-module-aliases' and catch 'system-error around it. Pass it to
'matching-modules'.
-rw-r--r-- | gnu/system/linux-initrd.scm | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 1eb5f5130d..16a8c43753 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -353,17 +353,27 @@ loaded at boot time in the order in which they appear." (define (check-device-initrd-modules device linux-modules location) "Raise an error if DEVICE needs modules beyond LINUX-MODULES to operate. DEVICE must be a \"/dev\" file name." - (let ((modules (delete-duplicates - (append-map matching-modules - (device-module-aliases device))))) - (unless (every (cute member <> linux-modules) modules) - (raise (condition - (&message - (message (format #f (G_ "you may need these modules \ + (define aliases + ;; Attempt to load 'modules.alias' from the current kernel, assuming we're + ;; on GuixSD, and assuming that corresponds to the kernel we'll be + ;; installing. Skip the whole thing if that file cannot be read. + (catch 'system-error + (lambda () + (known-module-aliases)) + (const #f))) + + (when aliases + (let ((modules (delete-duplicates + (append-map (cut matching-modules <> aliases) + (device-module-aliases device))))) + (unless (every (cute member <> linux-modules) modules) + (raise (condition + (&message + (message (format #f (G_ "you may need these modules \ in the initrd for ~a:~{ ~a~}") - device modules))) - (&fix-hint - (hint (format #f (G_ "Try adding them to the + device modules))) + (&fix-hint + (hint (format #f (G_ "Try adding them to the @code{initrd-modules} field of your @code{operating-system} declaration, along these lines: @@ -373,8 +383,8 @@ these lines: (initrd-modules (append (list~{ ~s~}) %base-initrd-modules))) @end example\n") - modules))) - (&error-location - (location (source-properties->location location)))))))) + modules))) + (&error-location + (location (source-properties->location location))))))))) ;;; linux-initrd.scm ends here |