Bug#940628: grub-efi-{non-i386/amd64}-bin: Missing multiboot.mod
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
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
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