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

Reply via email to