Subject: bug#35380: disk-image fails to install efi grub

From: rendaw <[email-masked]>
Date: Tue, 23 Apr 2019 01:06:15 +0900

Package: guix
Version: 0.16.0

This might be 2 bugs.

I ran `guix pull` a few hours ago.

I have a minimal system configuration:
```
(use-modules (gnu))
(operating-system
    (host-name "min1")
    (timezone "UTC")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
        (bootloader grub-bootloader)
    ))
    (file-systems (cons
        (file-system
            (device (file-system-label "abcdefghijk"))
            (mount-point "/")
            (type "ext4"))
        %base-file-systems))
)
```

This boots fine with:
```
qemu-system-x86_64 -m 1024 testimage
```
(after copying to testimage and doing chmod u+w)

Changing it to use grub-efi-bootloader results in this error during build:
```
installing bootloader...
/gnu/store/6zkimxsfyn0gdc7p4ikxlrhilpnpblsi-grub-efi-2.02/sbin/grub-install:
error:
/gnu/store/6zkimxsfyn0gdc7p4ikxlrhilpnpblsi-grub-efi-2.02/lib/grub/i386-pc/modinfo.sh
doesn't exist. Please spe.
Backtrace:
           2 (primitive-load "/gnu/store/mkbilylx3l6c2y9pdckdiibcpwb?")
In ./gnu/build/vm.scm:
    534:6  1 (initialize-hard-disk "/dev/vda" #:bootloader-package _ ?)
In unknown file:
           0 (scm-error misc-error #f "~A" ("failed to install GRU?") ?)

ERROR: In procedure scm-error:
failed to install GRUB (EFI)
boot program
'/gnu/store/0m2ap3d4c9gl7chmsrh7ci7i5gy4bbl0-linux-vm-loader'
terminated, rebooting
[  184.005459] Unregister pv shared memory for cpu 0
[  184.006818] reboot: Restarting system
[  184.007498] reboot: machine restart
successfully built
/gnu/store/57smyxccd3965dzirpcjfdkljbv9mrpy-disk-image.drv
/gnu/store/f90acaac9wvg61i6j3mgjfjvyd5p1yzg-disk-image
```

Bug 1: Even though there's a fairly serious error (bootloader failed to
install) a broken image is produced and it exits with a success status code.

Running with the same command above, qemu halts saying the drive isn't
bootable, trying floppy disks, etc.

Bug 2: So is it appears disk-image won't build with an EFI bootloader.
I'm guessing that qemu is run with a bios boot image here, which is why
grub's using i386-pc.

I'm building the image for a UEFI machine and I don't want to disable
UEFI so this is a blocker.