From: Tom Rini <trini@konsulko.com>
To: Simon Glass <sjg@chromium.org>
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 13:09:49 -0500 [thread overview]
Message-ID: <20220121180949.GY7004@bill-the-cat> (raw)
In-Reply-To: <CAPnjgZ3TUs2J10sTSUuciS_irBJbD-CBYY6nD9sbOrsoEw7k=w@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5705 bytes --]
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.
> > > 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.
> 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.
> 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.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2022-01-21 18:10 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 [this message]
2022-01-21 19:14 ` Simon Glass
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=20220121180949.GY7004@bill-the-cat \
--to=trini@konsulko.com \
--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=sjg@chromium.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox