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

[1] https://www.linaro.org/blog/securing-a-device-with-trusted-substrate/

Cheers
/Ilias

>
> Regards,
> Simon
>

Reply via email to