
From: Ilias Apalodimas ilias.apalodimas@linaro.org Date: Fri, 29 Oct 2021 16:42:45 +0300
Hi Tom,
On Fri, 29 Oct 2021 at 15:39, Tom Rini trini@konsulko.com wrote:
On Fri, Oct 29, 2021 at 08:45:06AM +0300, Ilias Apalodimas wrote:
On Wed, Oct 27, 2021 at 12:34:40PM -0600, Simon Glass wrote:
Hi Ilias,
On Wed, 27 Oct 2021 at 08:48, Ilias Apalodimas ilias.apalodimas@linaro.org wrote:
Hi Simon,
On Wed, Oct 27, 2021 at 08:09:04AM -0600, Simon Glass wrote:
Hi Ilias,
On Wed, 27 Oct 2021 at 02:36, Ilias Apalodimas ilias.apalodimas@linaro.org wrote: > > Hi Simon, > > On Sun, 24 Oct 2021 at 02:27, Simon Glass sjg@chromium.org wrote: > > > > Add a bootmeth driver which handles EFI boot, using EFI_LOADER. > > > > In effect, this provides the same functionality as the 'bootefi' command > > and shares the same code. But the interface into it is via a bootmeth, > > so it does not require any special scripts, etc. > > > > For now this requires the 'bootefi' command be enabled. Future work may > > tidy this up so that it can be used without CONFIG_CMDLINE being enabled. > > I'll leave this up to Heinrich, but personally I wouldn't include this > patch at all. EFI has it's bootmgr which can handle booting just fine. > I don't see why we should duplicate the functionality. The new boot > method can just have an entry called 'EFI' and then let the existing > EFI code to decide.
This is needed so that EFI boot is actually invoked. If bootmgr starts being used then it can still be invoked from standard boot. The point is that there is a standard way of booting that supports EFI and other things.
This patch tries to reason about the default naming EFI imposes on it's boot files. distro_efi_read_bootflow() will try to find files following the EFI naming convention (e.g bootaarch64.efi, bootarm.efi etc). If those are found it will try to boot them right? That's not the right thing to do though. On the EFI spec these files are tried if no Boot#### variables are found. So we can get rid of this entirely, add a dummy entry on the bootflow that says 'boot the efi manager' (which is what the next patch does).
The efibootmgr then will check Boot#### variables and if none are found, it's going to fallback into loading bootaarch64.efi, bootarm.efi etc essentially offering identical functionality.
Yes that's fine, and when EFI's boot manager is in use I have a driver for that too, as you can see in the other patch. We may need to adjust the order, by the sound of it, if it needs to run before EFI things. But that is easy enough.
That's the point though. I don't want to have 2 different ways of booting EFI as I don't see any benefit. Do you?
Unless we're saying that "bootefi bootmgr" is ready to be used always and without further pre-req support (which I don't think is quite the case, since we don't have persistent EFI vars, so can't set Boot### persistently or via userspace) _something_ is likely needed to either set those, or scan a configurable list of where, to find the EFI payload.
The efibootmgr will try to boot bootaa64.efi, bootarm.efi etc if Boot### variables are not found. The Boot#### themselves are obviously configurable from U-Boot(at boot time). Since this method doesn't allow Linux to edit the boot options either, is it something we need? Since distros usually name their SHIM as bootaa64.efi, I am afraid we are adding code that we will rarely (if at all) ever use.
Hi Ilias,
I'm still seeing:
Device 0: Vendor: Lexar Rev: 1100 Prod: USB Flash Drive Type: Removable Hard Disk Capacity: 30526.0 MB = 29.8 GB (62517248 x 512) ... is now current device Scanning usb 0:1... ** Unable to read file / ** Failed to load '/' libfdt fdt_check_header(): FDT_ERR_BADMAGIC BootOrder not defined EFI boot manager: Cannot load any image Found EFI removable media binary efi/boot/bootaa64.efi 170694 bytes read in 9 ms (18.1 MiB/s) libfdt fdt_check_header(): FDT_ERR_BADMAGIC Booting /efi\boot\bootaa64.efi
So it doesn't seem that efibootmgr will try to bootaa64.efi just yet.
Cheers,
Mark