Cannot use usb-storage initrd module.

  • Done
  • quality assurance status badge
Details
3 participants
  • Ludovic Courtès
  • pelzflorian (Florian Pelz)
  • Tonton
Owner
unassigned
Submitted by
pelzflorian (Florian Pelz)
Severity
normal
Merged with
P
P
pelzflorian (Florian Pelz) wrote on 4 Jun 2018 21:57
(address . bug-guix@gnu.org)
20180604195732.tbt5uwhzouzxoyxk@floriannotebook
My laptop broke and now I use my formerly internal hard disk as an
external hard disk in another laptop. It booted fine but I could not
reconfigure maybe because Guix checks for a wrong spelling of the
usb-storage module.


When I pulled
1458f768c1049812166228b8526128b199518e50
and reconfigured I was told to use

(operating-system
...
(initrd-modules (append (list "uas" "usb_storage")
%base-initrd-modules))

However the module is apparently called usb-storage with a hyphen, the
path is
/gnu/store/9idmpc60bgah6cy6s0k739kpj9qz50qc-linux-libre-4.16.13/lib/modules/4.16.13-gnu/kernel/drivers/usb/storage/usb-storage.ko


Possibly for this reason I got an error

/home/florian/keep/guixsd/guixsd-mac.scm:85:22: warning: 'title' field is deprecated
The following derivations will be built:
/gnu/store/3rk9b4k6797h0yg7m7fbm8jv920cy2cq-system.drv
/gnu/store/bkhkin2lils3jb3g6j8v14yn50d97xxh-grub.cfg.drv
[...]
/gnu/store/l5bglmivni7211gi52gh3z7wvxlhn0b7-module-import-compiled.drv
/gnu/store/ys5drlyhchjzvdbib2wc46xp2ybx1w52-linux-modules.drv
/gnu/store/1xjispr77v2q6d8xxlygvg89ls2w79cv-init.drv
/gnu/store/05knsd3pq0xjd8lw86rz8a7w5dl181c0-raw-initrd.drv
Backtrace:
6 (primitive-load "/gnu/store/09v5nd445bk4qkcy2ya84swhbri?")
In ice-9/eval.scm:
619:8 5 (_ #f)
626:19 4 (_ #<directory (guile-user) 7ce140>)
293:34 3 (_ #<directory (guile-user) 7ce140>)
In srfi/srfi-1.scm:
592:29 2 (map1 _)
592:17 1 (map1 ("usb_storage" "ahci" "usb-storage" "uas" "usb?" ?))
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/9idmpc60bgah6cy6s0k739kpj9qz50qc-linux-libre-4.16.13/lib/modules"
builder for `/gnu/store/ys5drlyhchjzvdbib2wc46xp2ybx1w52-linux-modules.drv' failed with exit code 1
cannot build derivation `/gnu/store/1xjispr77v2q6d8xxlygvg89ls2w79cv-init.drv': 1 dependencies couldn't be built
cannot build derivation `/gnu/store/05knsd3pq0xjd8lw86rz8a7w5dl181c0-raw-initrd.drv': 1 dependencies couldn't be built
cannot build derivation `/gnu/store/bkhkin2lils3jb3g6j8v14yn50d97xxh-grub.cfg.drv': 1 dependencies couldn't be built
guix system: error: build failed: build of `/gnu/store/bkhkin2lils3jb3g6j8v14yn50d97xxh-grub.cfg.drv' failed


But when I use


(operating-system
...
(initrd-modules (append (list "uas" "usb-storage")
%base-initrd-modules))

then I get an error because I should spell it usb_storage.


/home/florian/keep/guixsd/guixsd-mac.scm:85:22: warning: 'title' field is deprecated
/home/florian/keep/guixsd/guixsd-mac.scm:80:9: error: you may need these modules in the initrd for /dev/sdc2: uas usb_storage
hint: Try adding them to the `initrd-modules' field of your `operating-system'
declaration, along these lines:

(operating-system
;; ...
(initrd-modules (append (list "uas" "usb_storage")
%base-initrd-modules)))



Eventually I changed gnu/system/mapped-devices.scm to replace

(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
...

by #t. Then it successfully reconfigured.

I tested again Guix commit 19b662ea7c53a28270a783f10ca033d8c9d2a954
today and it is still broken.
L
L
Ludovic Courtès wrote on 7 Jun 2018 18:11
control message for bug #31598
(address . control@debbugs.gnu.org)
87efhibmqe.fsf@gnu.org
merge 31598 31714
T
T
Tonton wrote on 10 Jul 2018 13:39
Cannot use usb-storage initrd module.
(address . 31714@debbugs.gnu.org)
20180710133732.492d5388@merlin.browniehive.net
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
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEJpQ8ER/dPhCuYhy5z+UMpbuBoZAFAltEmtkACgkQz+UMpbuB
oZCkVA//ZZ/Y72Jp/eMsch/+L5yW+GwvM5I30RcAuU0yBRnuP9D/cVZu/tjK+fTw
Q6hyLhUSlXYZYMp0QqDls5Q8vGPI90LPnR72nrGG6ZiNqFqHBl7L0VEcFczKG5XX
MME6jU38rxle9J+TMmJRM+pnvZvwUreFDCSVQBAelJchty5hMKWeo6dBNrWHyOdu
6vrrrsl/wL7Zj0+W5YFnhVvXIkqL2vjEoM7I8LDYNAfCoNX6dGiERxMaRB/m85oP
n7qlWC10ZI8bDdjeH+344ocmPbes8woISXS6U8QNRzPLe901v4ANGI7ZZT+UpTKO
gE5ku4UAA//KVsBi5mRvlFbktwV1iTIqAos8cYZF1irD91gOIwyAPyHVq3R3ZahR
His4Dboe4fFUR17/m+kO8fgTSypXvfsVnyziIO4RLbV4nUPXPEE9x5DyJOOj5/9a
GpcP4m4JxsU22ozRlCnQOrutAdOCiz/CW9GsuZ+Z/Fwtv7JKhF5Xn12Yt3WsKH8a
xmkzv5GSVghsaugRiTofejUL4yQSvR4cQ1nOVQHh0um7zgB+wAw1XAG8kWwrg5GY
QhxA0UkgliUN8sKL//QNNmPtioe4GREa7aad2NI616ErwJS88/Z+l0yrBuvig0Ha
6vAEYEOx6eavWaS8fVBSp4vACP/OF54dGJftCIT6LXRiipZst7k=
=IlhH
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 29 Jul 2018 18:53
(name . Tonton)(address . tonton@riseup.net)(address . 31714-done@debbugs.gnu.org)
87sh42c7b2.fsf@gnu.org
Hello,

Tonton <tonton@riseup.net> skribis:

Toggle quote (17 lines)
> 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")

[...]

Toggle quote (31 lines)
> 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'

The problem was that the hint would specify “usb_storage”, which is the
correct module name but not the right *file* name (it’s “usb-storage”,
notice the hyphen.)

This is fixed in commit fcd068e984078ab74c6842af2525bf88096cd262, which
takes a sledgehammer approach: it tries hyphen and underscore file
names, such that ‘initrd-modules’ can contain either “usb_storage” or
“usb-storage”.

Thanks,
Ludo’.
Closed
?