[U-Boot] efi_loader: test_efi_grub_net()

Alexander Graf agraf at csgraf.de
Tue Jul 2 18:59:20 UTC 2019


On 02.07.19 18:52, Heinrich Schuchardt wrote:
> On 7/2/19 6:16 PM, Alexander Graf wrote:
>>
>> On 30.06.19 17:17, Heinrich Schuchardt wrote:
>>> Hello Alex,
>>>
>>> the test/py/tests/test_efi_loader.py test for GRUB is failing for me. I
>>> get the following output:
>>>
>>> => tftpboot 40000000 orangepi-pc/grubarm.efi
>>> Using ethernet at 1c30000 device
>>> TFTP from server 192.168.123.3; our IP address is 192.168.123.85
>>> Filename 'orangepi-pc/grubarm.efi'.
>>> Load address: 0x40000000
>>> Loading: ###################
>>>          1.5 MiB/s
>>> done
>>> Bytes transferred = 94208 (17000 hex)
>>> => => crc32 40000000 $filesize
>>> crc32 for 40000000 ... 40016fff ==> b51ed96c
>>> => => bootefi 40000000
>>> error: disk `,msdos2' not found.
>>> Entering rescue mode...
>>> grub rescue>
>>>
>>> Your script expects "grub>".
>>>
>>> I have been using the GRUB installed by Debian.
>>>
>>> I guess you expect the one from:
>>> http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm 
>>>
>>>
>>>
>>> I suggest that both prompts ("grub>", "grub rescue>") should be
>>> permissible.
>>
>>
>> grub rescue means that grub is in emergency mode because it could not
>> find its modules. This is definitely not ok :). It usually indicates a
>> device path issue.
>>
>> In your case, I'm slightly puzzled why grub would append ,msdos2 to a
>> netboot path. But it definitely looks wrong, as it could not find the
>> real config file (which should also reside at the tftp location).
>
> The Suse copy shows only 'grub>' though I have no grub.cfg on the tftp
> server nor did I install any modules.


It probably already embeds the "normal" module then.


>
> On Debian grubarm.efi is only generated when you run grub-install and in
> the generation process it adds the the relevant partition (msdos2). The
> Debian package itself contains no file with an .efi extension.
>
> Building upstream GRUB does not generate any *.efi file either. Instead
> it behaves like Debian generating the *.efi file when installing GRUB on
> the user chosen partition.
>
> I wonder if it were not preferable to have the build recipe for GRUB and
> the binaries on a denx.de server. Do you know the path to the Suse GRUB
> build recipe?


The prebuilt grub.efi is mostly there to help with secure boot. It 
allows the distro to ship a self-contained grub binary that does not 
require any external modules. The build recipe for that is here:

https://build.opensuse.org/package/view_file/Base:System/grub2/grub2.spec?expand=1

Just search for "grub.efi" in the file to see the command.


Alex




More information about the U-Boot mailing list