Subject: bug#31714: closed (Re: bug#31598: Check for initrd-modules fails to detect when loaded module and on-disk module filename differ)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 14 Jun 2018 21:39:03 +0000

Your bug report

#31598: Cannot use usb-storage initrd module.

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
31598: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=31598
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#31598: Check for initrd-modules fails to detect when loaded module and on-disk module filename differ
From: [email-masked] (Ludovic Courtès)
To: Vagrant Cascadian <[email-masked]>, <[email-masked]>
Cc: [email-masked]
Date: Thu, 14 Jun 2018 23:38:14 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Vagrant & Florian,

Vagrant Cascadian <[email-masked]> skribis:

> In my config:
>
>   (initrd-modules (append (list ... "sdhci-of-arasan" ... ) %base-initrd-modules))
>
>
> When I run:
>
>   $ sudo -E guix system reconfigure /etc/config.scm
>
>   <unknown location>: error: you may need these modules in the initrd for /dev/mmcblk1p1: sdhci_of_arasan
>   hint: Try adding them to the `initrd-modules' field of your `operating-system' declaration, along these
>   lines:
>
>         (operating-system
>           ;; ...
>           (initrd-modules (append (list "sdhci_of_arasan")
>                                   %base-initrd-modules)))
>
> Since the on-disk module name uses "-" instead of underscores:
>
>   $ find /gnu/store/*linux-libre* -name '*'arasan.ko
>   /gnu/store/nilzipm6fpicvlzfv1w8yj1j8mm1xlan-linux-libre-4.16.11/lib/modules/4.16.11-gnu/kernel/drivers/mmc/host/sdhci-of-arasan.ko
>
>
> But the loaded module uses "_" in the name:
>
>   $ lsmod | grep arasan
>   sdhci_of_arasan        20480  1
>   cqhci                  24576  1 sdhci_of_arasan
>   sdhci_pltfm            16384  1 sdhci_of_arasan
>   sdhci                  61440  2 sdhci_pltfm,sdhci_of_arasan

I believe this is fixed by 411959bef30b488928ab2418a064c8a9b0347c41.
Let me know if it’s not!

Thanks,
Ludo’.

Subject: Cannot use usb-storage initrd module.
From: "pelzflorian (Florian Pelz)" <[email-masked]>
To: [email-masked]
Date: Mon, 4 Jun 2018 21:57:32 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

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.