diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 7a167146f..ef81fe718 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -115,16 +115,19 @@ when modules need to be loaded." (current-error-port (%make-void-port "w")) (current-output-port (%make-void-port "w"))) - (let ((modules (matching-modules alias %known-aliases))) + ;; Look up ALIAS in %KNOWN-ALIASES first, and then, if it fails, + ;; assume that ALIAS is a module name (some modules such as + ;; 'dm-crypt' don't have an alias.) Note that + ;; 'kmod_module_new_from_lookup' uses a different search order. + (let ((modules (match (matching-modules alias %known-aliases) + (() (list alias)) + (lst lst)))) (call-with-output-file "/dev/kmsg" (lambda (port) (setvbuf port 'block 1024) (format port "modprobe[~a]: alias ~s; modules ~s; args ~s~%" (getpid) alias modules (program-arguments)))) - (when (null? modules) - (error "alias resolution failed" alias)) - (load-linux-modules-from-directory modules linux-module-directory)))))