Subject: bug#31714: Cannot use usb-storage initrd module.

From: Tonton <[email-masked]>
Date: Tue, 10 Jul 2018 13:39:05 +0200

Today it seems I hit this bug.

The last days I've been upgrading this machine with guix pull, and have been
booting and reconfiguring fine until a few hours ago.

Also, sorry about formatting.

My config contained:

 (initrd (lambda (file-systems . rest)
	   ;; Add a kernel module for RAID-0 (aka. "stripe")
           ;; and RAID-1 (aka. "mirror").
	   (apply base-initrd file-systems
		  #:extra-modules '("raid0" "raid1")
		  rest)))

And I got an error from guix system reconfigure/build:

<unknown location>: error: you may need these modules in the initrd
for /dev/sdg2: uas usb_storage
hint: Try adding them to the `initrd-modules' field of your
`operating-system' declaration, (initrd-modules (append (list "uas"
"usb_storage")

The machine has the OS on a usb stick because all the internal SATA drives
are RAID and I prefer to separate them. This machine has been configured like
this for a long time.

After following the recommendation (and finding the module in store is
actually named usb-storage.ko) I end up with the following config snippet:

 (initrd-modules (append (list "uas" "usb-storage" "raid0" "raid1")
                         %base-initrd-modules))

 (initrd (lambda (file-systems . rest)
	   ;; Add a kernel module for RAID-0 (aka. "stripe")
           ;; and RAID-1 (aka. "mirror").
	   (apply base-initrd file-systems
		  #:extra-modules '("raid0" "raid1"); "uas" "usb-storage")
		  rest)))

This works if I use --skip-checks. But with checks it gives me the same error
as above, changing the initrd-modules line to:

 (initrd-modules (append (list "uas" "usb_storage" "raid0" "raid1")

Gives the following error:

The following derivations will be built:
   /gnu/store/p5sash3cqywp5kmb9dwh8kbxy0rrdmc0-system.drv
   /gnu/store/g7pfwc7386x1bxf5pdv5nh1xz6ywxgxm-grub.cfg.drv
   /gnu/store/w57aw36wpc0388aa1frkj7h7qh8xac6z-parameters.drv
   /gnu/store/kh9v5z295kz4p79q3kancdv8d86n3cxr-linux-modules.drv
   /gnu/store/pbrj245mgv9zcy3shid348n8qdpv468v-init.drv
   /gnu/store/mvl7lb92g39d0qw08r2l2qiysvdf0sgs-raw-initrd.drv
Backtrace:
           6 (primitive-load "/gnu/store/hj17134gdpixdpif8nljwyh31k1?")
In ice-9/eval.scm:
    619:8  5 (_ #f)
   626:19  4 (_ #<directory (guile-user) 7cc140>)
   293:34  3 (_ #<directory (guile-user) 7cc140>)
In srfi/srfi-1.scm:
   592:29  2 (map1 _)
   592:17  1 (map1 ("usb_storage" "raid0" "raid1" "ahci" "usb-sto?" ?))
In unknown file:
           0 (scm-error misc-error #f "~A ~S ~S" ("module not fo?" ?) ?)

ERROR: In procedure scm-error:
module not found "usb_storage.ko"
"/gnu/store/khxmq6p1470171537z8agikiqmi469jr-linux-libre-4.17/lib/modules"
builder for `/gnu/store/kh9v5z295kz4p79q3kancdv8d86n3cxr-linux-modules.drv'
failed with exit code 1 cannot build derivation
`/gnu/store/pbrj245mgv9zcy3shid348n8qdpv468v-init.drv': 1 dependencies
couldn't be built cannot build derivation
`/gnu/store/mvl7lb92g39d0qw08r2l2qiysvdf0sgs-raw-initrd.drv': 1 dependencies
couldn't be built cannot build derivation
`/gnu/store/g7pfwc7386x1bxf5pdv5nh1xz6ywxgxm-grub.cfg.drv': 1 dependencies
couldn't be built guix system: error: build failed: build of
`/gnu/store/g7pfwc7386x1bxf5pdv5nh1xz6ywxgxm-grub.cfg.drv' failed