Hi Ilias, On Sat, 12 Mar 2022 at 02:37, Ilias Apalodimas <ilias.apalodi...@linaro.org> wrote: > > Hi Simon > > On Sun, 6 Mar 2022 at 05:08, Simon Glass <s...@chromium.org> wrote: >> >> Hi Heinrich, >> >> On Wed, 19 Jan 2022 at 04:47, Heinrich Schuchardt <xypron.g...@gmx.de> wrote: >> > >> > On 1/19/22 02:43, Simon Glass wrote: >> > > Add a bootmeth driver which handles EFI boot manager, using EFI_LOADER. >> > > >> > > In effect, this provides the same functionality as the 'bootefi bootmgr' >> > > 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. >> > > >> > > Signed-off-by: Simon Glass <s...@chromium.org> >> > > --- >> > > >> > > Changes in v3: >> > > - Add a log category >> > > >> > > boot/Makefile | 3 ++ >> > > boot/bootmeth_efi_mgr.c | 86 +++++++++++++++++++++++++++++++++++++++++ >> > > 2 files changed, 89 insertions(+) >> > > create mode 100644 boot/bootmeth_efi_mgr.c >> > > >> > > diff --git a/boot/Makefile b/boot/Makefile >> > > index 795665f7ce5..38b10d81f0d 100644 >> > > --- a/boot/Makefile >> > > +++ b/boot/Makefile >> > > @@ -31,6 +31,9 @@ obj-$(CONFIG_$(SPL_TPL_)BOOTSTD) += bootstd-uclass.o >> > > obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_DISTRO) += bootmeth_distro.o >> > > obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_DISTRO_PXE) += bootmeth_pxe.o >> > > obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EFILOADER) += bootmeth_efi.o >> > > +ifdef CONFIG_$(SPL_TPL_)BOOTSTD_FULL >> > > +obj-$(CONFIG_$(SPL_TPL_)CMD_BOOTEFI_BOOTMGR) += bootmeth_efi_mgr.o >> > > +endif >> > > >> > > obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += image-fdt.o >> > > obj-$(CONFIG_$(SPL_TPL_)FIT_SIGNATURE) += fdt_region.o >> > > diff --git a/boot/bootmeth_efi_mgr.c b/boot/bootmeth_efi_mgr.c >> > > new file mode 100644 >> > > index 00000000000..a6914466db7 >> > > --- /dev/null >> > > +++ b/boot/bootmeth_efi_mgr.c >> > > @@ -0,0 +1,86 @@ >> > > +// SPDX-License-Identifier: GPL-2.0+ >> > > +/* >> > > + * Bootmethod for EFI boot manager >> > > + * >> > > + * Copyright 2021 Google LLC >> > > + * Written by Simon Glass <s...@chromium.org> >> > > + */ >> > > + >> > > +#define LOG_CATEGORY UCLASS_BOOTSTD >> > > + >> > > +#include <common.h> >> > > +#include <bootdev.h> >> > > +#include <bootflow.h> >> > > +#include <bootmeth.h> >> > > +#include <command.h> >> > > +#include <dm.h> >> > > + >> > > +static int efi_mgr_check(struct udevice *dev, struct bootflow_iter >> > > *iter) >> > > +{ >> > > + int ret; >> > > + >> > > + /* Must be an bootstd device */ >> > > + ret = bootflow_iter_uses_system(iter); >> > > + if (ret) >> > > + return log_msg_ret("net", ret); >> > > + >> > > + return 0; >> > > +} >> > > + >> > > +static int efi_mgr_read_bootflow(struct udevice *dev, struct bootflow >> > > *bflow) >> > > +{ >> > > + /* >> > > + * Just assume there is something to boot since we don't have any >> > > way >> > > + * of knowing in advance >> > > + */ >> > > + bflow->state = BOOTFLOWST_READY; >> > > + >> > > + return 0; >> > > +} >> > > + >> > > +static int efi_mgr_read_file(struct udevice *dev, struct bootflow >> > > *bflow, >> > > + const char *file_path, ulong addr, ulong >> > > *sizep) >> > > +{ >> > > + /* Files are loaded by the 'bootefi bootmgr' command */ >> > > + >> > > + return -ENOSYS; >> > > +} >> > > + >> > > +static int efi_mgr_boot(struct udevice *dev, struct bootflow *bflow) >> > > +{ >> > > + int ret; >> > > + >> > > + /* Booting is handled by the 'bootefi bootmgr' command */ >> > > + ret = run_command("bootefi bootmgr", 0); >> > >> > You are missing to provide the device tree. >> >> OK well I can deal with that when I get to it, I suppose. Which distro >> can I try with? > > > Any recent distro would work. If you try to run an installer keep in mind > setting up grub will fail (since runtime variable support isn't yet > supported). You can find more info on installing fedora here[1] just skip > the security and encryption parts
I see that Fedora 35 is out, so I will give that a go at some point. > > [1] https://www.linaro.org/blog/securing-a-device-with-trusted-substrate/ Regards, Simon