Subject: Re: bug#30311: efi-less grub install fails

From: [email-masked] (Ludovic Courtès)
Date: Thu, 01 Feb 2018 00:55:29 +0100

Heya,

Ricardo Wurmus <[email-masked]> skribis:

> “guix system init” fails with a configuration file that specifies
> grub-bootloader (not grub-efi-bootloader).
>
> “grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”
> not being available.  It suggests passing “--target” or “--device”.
>
> Our invocation of grub-install does not include a “--target” argument.
> Only after I edited it to pass “--target=i386-pc” did “guix system init”
> pass.
>
> This is on an x86_64 laptop where “legacy” BIOS booting is enabled.

To complement from what we’ve discussed on IRC:

  • It’s a UEFI laptop with legacy-BIOS enabled, but UEFI still.

  • AIUI the installation image boots in UEFI mode on UEFI machines, and
    then ‘grub-install’ (probably via ‘efivar’ or /sys or similar)
    detects that it’s UEFI, decides that the target is thus
    “x86_64-efi”, and fails because it lacks the EFI files.

I can think of two possible workarounds:

  1. Default to ‘grub-hybrid’.  But in that case, you’d have done a UEFI
     install unconditionally.

  2. For ‘grub-bootloader’ (not EFI), always pass ‘--target=i386-pc’.

Danny, Marius, thoughts?  :-)

Ludo’.