
On 24.12.15 12:15, Matwey V. Kornilov wrote:
Why just not to implement standard EFI behaviour when EFI looks for boot-efi partition and proceed?
Well, what is "standard EFI behavior"?
There are 2 standard ways I'm aware of:
1) NVRAM
The default case for 99.9% of the boots on normal EFI systems is based on variables in NVRAM that tell EFI which boot device to boot from. Since we don't implement EFI variables today, we can't really make use of this feature. And because you want to change the default boot device at runtime, we'd have to have runtime services be able to modify them after exiting boot services.
2) Removable Media
There is another way implemented for "Removable Media" - mostly intended for USB sticks and the likes. Here EFI searches for a defined file name (EFI/boot/boot{arm,a64,x64}.efi) on the ESP partition and boots it.
Part 1 is very difficult to do without major rework of a few U-Boot components. If EFI becomes the de-facto standard way of booting with U-Boot, I think we'll walk down that road, but it's nothing I want to have to deal with in the initial enablement discussion.
Part 2 is easy to do. But then again it's also easy to do it using a boot script. Or a compiled in bootcmd. If it's really desired.
Which brings me to the next idea. What if we just implement exlinux.conf support for EFI binaries? Then all you need to do is have an extlinux.conf available on your generic EFI media that tells U-Boot where to load the grub binary from.
That way we wouldn't bend U-Boot completely away from its heritage, make use of its flexibility and all distributions that actually care about booting from U-Boot would easily be able to just put such a file in an rpm an install it always.
If ARM board developers will enable EFI support in the future, we can have single one JeOS having all possible dtb in KIWI image. BeagleBone Black has its own u-boot on eMMC, and the user need to push S2 button to force hardware to use our openSUSE u-boot from SD card. Maybe something like that is for other boards. If the single one required u-boot feature is to run EFI grub, then we can even don't touch preinstalled bootloader, that is not possible now, because we need our openSUSE boot scripts.
There are more things we need to solve before we can truly get to a universal booting solution. But one step at a time :).
The reason I implemented "bootefi" was really because it's the natural fit into how U-Boot handles all other formats today. I don't think this is going to be the last patch set around EFI support.
Alex