All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: Tom Rini <trini@konsulko.com>
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>,
	 Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	 Daniel Schwierzeck <daniel.schwierzeck@gmail.com>,
	Dennis Gilmore <dennis@ausil.us>,
	 Steffen Jaeckel <jaeckel-floss@eyet-services.de>,
	 Lukas Auer <lukas.auer@aisec.fraunhofer.de>,
	Michal Simek <michal.simek@xilinx.com>,
	 U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH v3 30/31] bootstd: doc: Add documentation
Date: Fri, 21 Jan 2022 12:14:22 -0700	[thread overview]
Message-ID: <CAPnjgZ08MXCPKC=JU_9gZ=FDCKvWMVsonwymyUxAEve7KBRxbg@mail.gmail.com> (raw)
In-Reply-To: <20220121180949.GY7004@bill-the-cat>

Hi Tom,

On Fri, 21 Jan 2022 at 11:09, Tom Rini <trini@konsulko.com> wrote:
>
> On Fri, Jan 21, 2022 at 09:02:13AM -0700, Simon Glass wrote:
> > Hi Tom,
> >
> > On Fri, 21 Jan 2022 at 08:31, Tom Rini <trini@konsulko.com> wrote:
> > >
> > > On Fri, Jan 21, 2022 at 08:20:17AM -0700, Simon Glass wrote:
> > > > Hi,
> > > >
> > > > On Fri, 21 Jan 2022 at 08:08, Tom Rini <trini@konsulko.com> wrote:
> > > > >
> > > > > On Wed, Jan 19, 2022 at 12:39:03PM +0100, Heinrich Schuchardt wrote:
> > > > > > On 1/19/22 02:43, Simon Glass wrote:
> > > [snip]
> > > > > > > +Introduction
> > > > > > > +------------
> > > > > > > +
> > > > > > > +Standard boot provides a built-in way for U-Boot to automatically boot
> > > > > > > +an Operating System without custom scripting and other customisation. It
> > > > > > > +introduces the following concepts:
> > > > > > > +
> > > > > > > +   - bootdev  - a device which can hold or access a distro (e.g. MMC, Ethernet)
> > > > > > > +   - bootmeth - a method to scan a bootdev to find bootflows (e.g. distro boot)
> > > > > > > +   - bootflow - a description of how to boot (provided by the distro)
> > > > > > > +
> > > > > > > +For Linux, the distro (Linux distribution, e.g. Debian, Fedora) is responsible
> > > > > > > +for creating a bootflow for each kernel combination that it wants to offer.
> > > > > >
> > > > > > This gets it completely wrong. There is one standardized boot flow: UEFI.
> > > > > > All major distros support this. U-Boot has to offer UEFI booting out of the
> > > > > > box.
> > > > >
> > > > > I want to jump up and down and emphasize this part as well.  While I
> > > > > believe our UEFI bootmgr is still missing the normal scan code, that's
> > > > > something that has been promised to be implemented.  And that turns the
> > > > > bootcmd for platforms that just want to support modern off the shelf
> > > > > distros in to something fairly small.
> > > >
> > > > Sigh...
> > > >
> > > > UEFI is a bootflow in this model, one of many. If we don't support the
> > > > others, then U-Boot is not U-Boot anymore, it is just EFI Boot.
> > >
> > > No one is talking about removing anything else.  But a major part of
> > > your motivation here seems to be "discovering what to boot where is a
> > > pain" and that's solved (or at least defined, I'm poking Ilias about the
> > > status of that off-list).  And I want to emphasize discover.
> >
> > But only if you use EFI boot manager, right? Even then I'm not sure we
> > have a deterministic way of listing the available bootdevs, which is
> > something that this series provides.
>
> I'll let someone else that knows the EFI boot manager code / design
> speak to this.  But yes, for the discoverable case I'm not seeing where
> "use EFI boot manager" isn't the reasonable answer.

With bootdev you have a proper driver and device tree node where
configuration can be provided. The default ordering for bootdevs can
be provided. We can deal with the quirks of particular subsystems,
like MMC. I think there will be other benefits apparent as this all
matures.

But let's see. Perhaps it doesn't really matter anyway, since it seems
that EFI boot manager is doing its own thing for now.

>
> > > > If we get EFI bootmgr going, then are you saying you want to disable
> > > > everything else?
> > >
> > > Not at all.
> >
> > OK, good.
> >
> > >
> > > > You say 'major distros' but there are many that don't use it,
> > > > particularly in the embedded space. I'll go out on a limb and say that
> > > > the vast majority of embedded devices in the world don't use it. Are
> > > > you really saying we should drop support for everything else? Even the
> > > > distro stuff supports other options.
> > >
> > > I don't know about buildroot off-hand, but I've had OpenEmbedded spit
> > > out UEFI-compatible aarch64 images no problem.  If you're talking about
> > > embedded Debian/Ubuntu/Fedora, that goes back up to "wants UEFI boot
> > > flow".  Armbian is the biggest distro I know of off-hand that doesn't
> > > do UEFI boot for U-Boot targets and I would love to talk with someone
> > > there and find out why (but I guess it's all the 32bit platforms).
> > >
> > > But I'd also say the vast majority of embedded devices don't need the
> > > complexity you're adding here, but DO need the ability to implement A/B
> > > things as easily in U-Boot as they can in grub.  And that in turn is
> > > because it's a pain to modify the default environment in U-Boot and easy
> > > to drop in another script for grub.
> >
> > My feeling is the complexity is already there, just in scripts, which
> > are harder to understand (from personal experience trying to
> > understand what they do) and don't have tests. They are also very hard
> > to build on top of (e.g. verified boot).
>
> Yes, the scripts that live in the environment based boot flow is
> complex.  It's also been a huge step forward from what we had before and
> has been a great help.
>
> > I can't really say that this series is more complex than EFI bootmgr,
> > if that is what you are suggesting. I think the bootdev uclass is
> > well-motivated and will prove useful even for EFI.
>
> No, what I'm suggesting is that I see this as "current boot script stuff
> is too complex, lets replace it".  And I also see the big part of the
> complexity there being the discover where to boot from side of things.

OK, so shall we replace the scripts, or not?

>
> > Also A/B/recovery is a lot easier to implement in code than in
> > scripts. I have linked to the proposed design there.
>
> Show me what implementing Mender or RAUC or swupdate looks like with
> your proposal.  Those are some of the real A/B use cases today and have
> had to take various approaches to dealing with our environment, and also
> supporting x86 and so started dealing with grub.

That sounds like an interesting project. For mendor I found this:

https://github.com/mendersoftware/meta-mender/blob/master/meta-mender-core/recipes-bsp/u-boot/patches/0002-Generic-boot-code-for-Mender.patch

More scripts...

>
> > Anyway if we can agree that we are not going to disable the non-EFI
> > flows, then how about we focus on replacing the distro boot scripts,
> > dropping the config.h files, and leave EFI bootmgr out of this
> > discussion?
>
> The primary use case for the distro boot work is EFI boot, and the "make
> this logic clearer" solution is "use EFI bootmgr".  That's where we get
> stuck in a loop here.  There's no "the distro must create .." because
> the distro is already creating what's needed.

So let me ask again. Is EFI bootmgr the only thing U-Boot is going to
support? I thought you said no.

Are you saying you want to keep the environment boot scripts, or not?

Regards,
Simon

  reply	other threads:[~2022-01-21 19:14 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-19  1:42 [PATCH v3 00/31] Initial implementation of standard boot Simon Glass
2022-01-19  1:42 ` [PATCH v3 01/31] str: Move string tests to the string module Simon Glass
2022-01-19 11:15   ` Heinrich Schuchardt
2022-03-06  3:08     ` Simon Glass
2022-01-19  1:42 ` [PATCH v3 02/31] test: Add tests for trailing_strtol() Simon Glass
2022-01-19 11:26   ` Heinrich Schuchardt
2022-01-19  1:42 ` [PATCH v3 03/31] str: Fix a few bugs in trailing_strtoln() Simon Glass
2022-01-31  9:44   ` Rasmus Villemoes
2022-01-31 16:13     ` Simon Glass
2022-01-19  1:42 ` [PATCH v3 04/31] lib: Add a way to find the postiion of a trailing number Simon Glass
2022-01-19 11:27   ` Heinrich Schuchardt
2022-01-19 14:37     ` Simon Glass
2022-01-19 15:11       ` Tom Rini
2022-01-19 17:23         ` Heinrich Schuchardt
2022-01-20  3:16     ` AKASHI Takahiro
2022-03-06  3:08       ` Simon Glass
2022-01-19  1:42 ` [PATCH v3 05/31] dm: core: Rename uclass_get_by_name_len() Simon Glass
2022-01-19 11:28   ` Heinrich Schuchardt
2022-01-19  1:42 ` [PATCH v3 06/31] dm: core: Allow finding a uclass device by partial name Simon Glass
2022-01-19 11:28   ` Heinrich Schuchardt
2022-01-19  1:42 ` [PATCH v3 07/31] test: fastboot: Avoid using mmc1 Simon Glass
2022-01-19  1:42 ` [PATCH v3 08/31] test: dm: Restart USB before assuming it is stopped Simon Glass
2022-01-19  1:42 ` [PATCH v3 09/31] dm: blk: Add a function to return the device type Simon Glass
2022-01-19 11:30   ` Heinrich Schuchardt
2022-01-19  1:42 ` [PATCH v3 10/31] bootstd: Add the concept of a bootflow Simon Glass
2022-01-19  1:42 ` [PATCH v3 11/31] bootstd: Add the bootstd uclass and core implementation Simon Glass
2022-01-19  1:42 ` [PATCH v3 12/31] bootstd: Add the bootdev uclass Simon Glass
2022-01-19  1:42 ` [PATCH v3 13/31] bootstd: Add the bootmeth uclass and helpers Simon Glass
2022-01-19  1:42 ` [PATCH v3 14/31] bootstd: Add support for bootflows Simon Glass
2022-01-19  1:42 ` [PATCH v3 15/31] bootstd: Add a bootdev command Simon Glass
2022-01-19  1:43 ` [PATCH v3 16/31] bootstd: Add a bootflow command Simon Glass
2022-01-19  1:43 ` [PATCH v3 17/31] bootstd: Add a bootmeth command Simon Glass
2022-01-19  1:43 ` [PATCH v3 18/31] bootstd: Add an implementation of distro boot Simon Glass
2022-01-19  1:43 ` [PATCH v3 19/31] bootstd: mmc: Add a bootdev driver Simon Glass
2022-01-19  1:43 ` [PATCH v3 20/31] bootstd: ethernet: " Simon Glass
2022-01-19  1:43 ` [PATCH v3 21/31] bootstd: Add an implementation of distro PXE boot Simon Glass
2022-01-19  1:43 ` [PATCH v3 22/31] bootstd: Add an implementation of EFI boot Simon Glass
2022-01-19  8:08   ` Michael Walle
2022-01-19 11:45   ` Heinrich Schuchardt
2022-03-06  3:08     ` Simon Glass
2022-03-07  9:03       ` Michael Walle
2022-01-19  1:43 ` [PATCH v3 23/31] bootstd: Add a system bootdev for strange boot methods Simon Glass
2022-01-19  1:43 ` [PATCH v3 24/31] bootstd: Add an implementation of EFI bootmgr Simon Glass
2022-01-19 11:47   ` Heinrich Schuchardt
2022-03-06  3:08     ` Simon Glass
2022-03-12  9:36       ` Ilias Apalodimas
2022-03-12 17:58         ` Simon Glass
2022-01-19  1:43 ` [PATCH v3 25/31] bootstd: Add a sandbox bootmeth driver Simon Glass
2022-01-19  1:43 ` [PATCH v3 26/31] bootstd: Add an implementation of script boot Simon Glass
2022-01-19  1:43 ` [PATCH v3 27/31] bootstd: usb: Add a bootdev driver Simon Glass
2022-01-19  1:43 ` [PATCH v3 28/31] bootstd: Add tests for bootstd including all uclasses Simon Glass
2022-01-19  1:43 ` [PATCH v3 29/31] bootstd: Add setup for the bootflow tests Simon Glass
2022-01-19  1:43 ` [PATCH v3 30/31] bootstd: doc: Add documentation Simon Glass
2022-01-19 11:39   ` Heinrich Schuchardt
2022-01-21 15:08     ` Tom Rini
2022-01-21 15:20       ` Simon Glass
2022-01-21 15:31         ` Tom Rini
2022-01-21 16:02           ` Simon Glass
2022-01-21 18:09             ` Tom Rini
2022-01-21 19:14               ` Simon Glass [this message]
2022-01-21 19:23                 ` Tom Rini
2022-01-21 21:15                   ` Simon Glass
2022-01-21 21:46                     ` Tom Rini
2022-01-21 22:18                       ` Simon Glass
2022-01-30  0:48           ` Ilias Apalodimas
2022-01-21 16:03         ` Mark Kettenis
2022-01-21 16:53           ` Simon Glass
2022-01-21 18:22             ` Mark Kettenis
2022-01-21 18:41               ` Tom Rini
2022-01-21 19:17               ` Simon Glass
2022-01-21 22:05                 ` Heinrich Schuchardt
2022-01-21 22:13                   ` Simon Glass
2022-01-22 11:44                   ` Mark Kettenis
2022-01-19  1:43 ` [PATCH v3 31/31] RFC: Switch rpi over to use bootstd Simon Glass
2022-01-19 14:04   ` Tom Rini
2022-01-19 14:37     ` Simon Glass
2022-01-19 15:01       ` Tom Rini
2022-01-19 16:09         ` Simon Glass
2022-01-19 16:21           ` Tom Rini
2022-01-19 16:38             ` Mark Kettenis
2022-01-19 23:26               ` Simon Glass
2022-01-20  8:35                 ` Michael Walle
2022-01-20 10:28                   ` Mark Kettenis
2022-01-20 18:16                     ` Simon Glass
2022-01-20 18:30                       ` Tom Rini
2022-01-20 18:56                         ` Mark Kettenis
2022-01-20 19:56                           ` Simon Glass
2022-01-20 19:56                         ` Simon Glass
2022-01-20 20:08                           ` Tom Rini
2022-01-20 20:47                             ` Simon Glass
2022-01-20 23:23                               ` Tom Rini
2022-01-21  0:59                                 ` Simon Glass
2022-01-21  1:08                                   ` Tom Rini
2022-01-21  3:12                                     ` Simon Glass
2022-01-21  9:36                                       ` Mark Kettenis
2022-01-21 15:25                                         ` Simon Glass
2022-01-21 15:05                                       ` Tom Rini
2022-01-21 15:23                                         ` Simon Glass
2022-01-19 23:23             ` Simon Glass
2022-01-19  8:09 ` [PATCH v3 00/31] Initial implementation of standard boot Michael Walle
2022-01-19 14:56   ` Simon Glass
2022-01-20  8:38     ` Michael Walle
2022-01-20 18:16       ` Simon Glass
2022-03-06  3:08         ` Simon Glass
2022-03-06 11:03           ` Michael Walle
2022-03-06 13:24             ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPnjgZ08MXCPKC=JU_9gZ=FDCKvWMVsonwymyUxAEve7KBRxbg@mail.gmail.com' \
    --to=sjg@chromium.org \
    --cc=daniel.schwierzeck@gmail.com \
    --cc=dennis@ausil.us \
    --cc=heinrich.schuchardt@canonical.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jaeckel-floss@eyet-services.de \
    --cc=lukas.auer@aisec.fraunhofer.de \
    --cc=michal.simek@xilinx.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.