Cannot upgrade GuixSD due to check-device-initrd-modules

  • Open
  • quality assurance status badge
Details
3 participants
  • Adam Van Ymeren
  • Danny Milosavljevic
  • Ludovic Courtès
Owner
unassigned
Submitted by
Adam Van Ymeren
Severity
normal
A
A
Adam Van Ymeren wrote on 18 Mar 2018 17:32
(address . bug-guix@gnu.org)
87zi351h0t.fsf@vany.ca
My root device is on NVMe.

In my current kernel config CONFIG_NVME_CORE is set to a module, which is
included in my initrd.

However upstream defconfig has been changed to CONFIG_NVME_CORE=y

When trying to guix reconfigure my system, building the operating system
fails in check-device-initrd-modules with the following message

vany/systems.scm:111:10: error: you may need these modules in the initrd for /dev/nvme0n1p2: nvme shpchp
hint: Try adding them to the `initrd-modules' field of your `operating-system' declaration, along these lines:

(operating-system
;; ...
(initrd-modules (append (list "nvme" "shpchp")
%base-initrd-modules)))


If I add initrd-modules to my operating-system, then building the initrd
fails because nvme module cannot be found (as it is not being build as a
module).

Fundamentally I think the problem is that check-device-initrd-modules is
checking modules for the currently running kernel which is not
necessarily the kernel that I will be installing.

At the very least however it would be nice if I could override this
check with a --i-know-what-im-doing flag of some sort.

It seems odd that check-device-initrd-modules will not prevent your
installation from continuing if it can't find modules.alias, but if it
can find it and you didn't specify the initrd-modules it thinks you need
then it becomes a hard error that you can't override. Perhaps it should
always be a warning or prompt the user if they want to continue.
D
D
Danny Milosavljevic wrote on 18 Mar 2018 23:33
(name . Adam Van Ymeren)(address . adam@vany.ca)(address . 30847@debbugs.gnu.org)
20180318233331.59bc54e1@scratchpost.org
Hi Adam,

On Sun, 18 Mar 2018 12:32:18 -0400
Adam Van Ymeren <adam@vany.ca> wrote:

Toggle quote (4 lines)
> Fundamentally I think the problem is that check-device-initrd-modules is
> checking modules for the currently running kernel which is not
> necessarily the kernel that I will be installing.

Yeah, otherwise it would have to build everything first.

Toggle quote (3 lines)
> At the very least however it would be nice if I could override this
> check with a --i-know-what-im-doing flag of some sort.

It exists: --skip-checks

Toggle quote (7 lines)
> It seems odd that check-device-initrd-modules will not prevent your
> installation from continuing if it can't find modules.alias, but if it
> can find it and you didn't specify the initrd-modules it thinks you need
> then it becomes a hard error that you can't override.
> Perhaps it should
> always be a warning or prompt the user if they want to continue.

Yeah, I'd prefer a warning and sleep 5 since the result is not guaranteed to be
correct.

Also it would be possible to build a Frankenstein's monster version where it
checks the new kernel config and finds out which modules would be builtin
(that would involve a lot of Makefile and Kconfig parsing... ugh).

An additional more complete check (with the new kernel etc) at the end would
make sense.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAlqu6TsACgkQ5xo1VCww
uqVsoAf+KBvrfuaJ9EMMEz9c5jCaD+4ZQxFo/dT7AbQPewIzVAcZyIs4FCrrA/3h
I1Vc8/XkrQUaqC9MrDsS7ExsnFZ10xJFg+szqcr0gxV9q/BHfP6XcVa1mLVui2e7
qWoh/ZDRWIu9W9wjypmofeKoVho2yLMMwZwEuaVFrlrXtpKTEVUpniHYpfiEHXpA
JeagG/xqTpJnwQjXswQ4ZdTjXOl6QQWsW3908CQMJx4aMD/kJWohA6ERoAdqKsKH
EvYVbt0wu+xkQiyy4aE8y8kJfQOAb/HUsbboBEx4dRf6mKtQ7Gx1tRiXFxlySzcu
hz6Tp4zOZittloVea+MaUm6gDxxLEw==
=PCYY
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 19 Mar 2018 17:51
(name . Adam Van Ymeren)(address . adam@vany.ca)(address . 30847@debbugs.gnu.org)
87fu4wuhyz.fsf@gnu.org
Hello Adam,

Adam Van Ymeren <adam@vany.ca> skribis:

Toggle quote (7 lines)
> My root device is on NVMe.
>
> In my current kernel config CONFIG_NVME_CORE is set to a module, which is
> included in my initrd.
>
> However upstream defconfig has been changed to CONFIG_NVME_CORE=y

Out of curiosity, what’s the current and target kernel versions?

Like Danny wrote, ‘check-device-initrd-modules’ can have false positives
as it is, in which case you have to use ‘--skip-checks’.

We could arrange to not have false positives, but the UX would be a
little less good because we’d first need to build the target kernel. So
I wonder how frequent the situation you experienced is.

Thanks for your report!

Ludo’.
L
L
Ludovic Courtès wrote on 27 Mar 2018 15:19
(name . Adam Van Ymeren)(address . adam@vany.ca)(address . 30847@debbugs.gnu.org)
87605hwt8t.fsf@gnu.org
Ping! :-)

ludo@gnu.org (Ludovic Courtès) skribis:

Toggle quote (23 lines)
> Hello Adam,
>
> Adam Van Ymeren <adam@vany.ca> skribis:
>
>> My root device is on NVMe.
>>
>> In my current kernel config CONFIG_NVME_CORE is set to a module, which is
>> included in my initrd.
>>
>> However upstream defconfig has been changed to CONFIG_NVME_CORE=y
>
> Out of curiosity, what’s the current and target kernel versions?
>
> Like Danny wrote, ‘check-device-initrd-modules’ can have false positives
> as it is, in which case you have to use ‘--skip-checks’.
>
> We could arrange to not have false positives, but the UX would be a
> little less good because we’d first need to build the target kernel. So
> I wonder how frequent the situation you experienced is.
>
> Thanks for your report!
>
> Ludo’.
?