Bug#940628: grub-efi-{non-i386/amd64}-bin: Missing multiboot.mod

2019-09-18 Thread Elliott Mitchell
On Wed, Sep 18, 2019 at 07:06:49AM +0100, Colin Watson wrote:
> On Tue, Sep 17, 2019 at 04:29:37PM -0700, Elliott Mitchell wrote:
> > This makes it impossible for GRUB to load Xen on any platform that is not
> > either i386 or amd64.  Xen has support for running on ARM platforms, but
> > with no bootloader...
> > 
> > For example there is known to be working UEFI third-stage firmware for
> > the Raspberry PI:
> > https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3
> > 
> > The absence of /usr/lib/grub/arm64-efi/multiboot.mod means entries
> > generated by /etc/grub.d/20_linux_xen cannot work.
> 
> I don't understand this point.  20_linux_xen looks like this:
> 
> if ($grub_file --is-arm64-efi $current_xen); then
> xen_loader="xen_hypervisor"
> module_loader="xen_module"
> else
> if ($grub_file --is-x86-multiboot2 $current_xen); then
> xen_loader="multiboot2"
> module_loader="module2"
> else
> xen_loader="multiboot"
> module_loader="module"
> fi
> fi
> 
> So on ARM (64-bit, anyway) it should use xen_hypervisor, not multiboot.

Okay, this may not be an issue for 2.04-3, and instead merely a problem
with 2.02+dfsg1-20.  On 2.02+dfsg1-20, 20_linux_xen is missing the first
if, which means it tries to load multiboot.mod which doesn't exist.

For 2.02+dfsg1-20 and 2.04-3 though I note there is a
/usr/lib/grub/arm64-efi/xen_boot.mod, but no
/usr/lib/grub/arm64-efi/xen_hypervisor.mod.  I don't know too much about
GRUB's workings, but I'm suspicious of 'xen_loader="xen_hypervisor"'.


-- 
(\___(\___(\__  --=> 8-) EHM <=--  __/)___/)___/)
 \BS (| ehem+sig...@m5p.com  PGP 87145445 |)   /
  \_CS\   |  _  -O #include  O-   _  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445



Bug#940628: grub-efi-{non-i386/amd64}-bin: Missing multiboot.mod

2019-09-18 Thread Colin Watson
On Tue, Sep 17, 2019 at 04:29:37PM -0700, Elliott Mitchell wrote:
> In particular grub-efi-arm-bin should have
> /usr/lib/grub/arm-efi/multiboot.mod and grub-efi-arm64-bin should have
> /usr/lib/grub/arm64-efi/multiboot.mod

Well, to be clear, it's not just that the file is missing; multiboot and
multiboot2 have simply not yet been ported to ARM in GRUB upstream.  See
grub-core/Makefile.core.def, whose "enable" declarations indicate which
platforms these modules work on:

  module = {
name = multiboot2;
cppflags = "-DGRUB_USE_MULTIBOOT2";
  
common = loader/multiboot.c;
common = loader/multiboot_mbi2.c;
enable = x86;
enable = i386_xen_pvh;
enable = mips;
  };
  
  module = {
name = multiboot;
common = loader/multiboot.c;
x86 = loader/i386/multiboot_mbi.c;
i386_xen_pvh = loader/i386/multiboot_mbi.c;
extra_dist = loader/multiboot_elfxx.c;
enable = x86;
enable = i386_xen_pvh;
  };

(My guess would be that if anything would make sense to port it would be
multiboot2, not multiboot.  But I don't know ARM platforms at the
necessary level.)

> This makes it impossible for GRUB to load Xen on any platform that is not
> either i386 or amd64.  Xen has support for running on ARM platforms, but
> with no bootloader...
> 
> For example there is known to be working UEFI third-stage firmware for
> the Raspberry PI:
> https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3
> 
> The absence of /usr/lib/grub/arm64-efi/multiboot.mod means entries
> generated by /etc/grub.d/20_linux_xen cannot work.

I don't understand this point.  20_linux_xen looks like this:

if ($grub_file --is-arm64-efi $current_xen); then
xen_loader="xen_hypervisor"
module_loader="xen_module"
else
if ($grub_file --is-x86-multiboot2 $current_xen); then
xen_loader="multiboot2"
module_loader="module2"
else
xen_loader="multiboot"
module_loader="module"
fi
fi

So on ARM (64-bit, anyway) it should use xen_hypervisor, not multiboot.

-- 
Colin Watson   [cjwat...@debian.org]



Bug#940628: grub-efi-{non-i386/amd64}-bin: Missing multiboot.mod

2019-09-17 Thread Elliott Mitchell
Package: src:grub2
Version: 2.02+dfsg1-20
Severity: important

In particular grub-efi-arm-bin should have
/usr/lib/grub/arm-efi/multiboot.mod and grub-efi-arm64-bin should have
/usr/lib/grub/arm64-efi/multiboot.mod

This makes it impossible for GRUB to load Xen on any platform that is not
either i386 or amd64.  Xen has support for running on ARM platforms, but
with no bootloader...

For example there is known to be working UEFI third-stage firmware for
the Raspberry PI:
https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3

The absence of /usr/lib/grub/arm64-efi/multiboot.mod means entries
generated by /etc/grub.d/20_linux_xen cannot work.


-- 
(\___(\___(\__  --=> 8-) EHM <=--  __/)___/)___/)
 \BS (| ehem+sig...@m5p.com  PGP 87145445 |)   /
  \_CS\   |  _  -O #include  O-   _  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445