On 7/15/24 12:13, Simon Glass wrote:
Add documentation for the cros bootmeth.

%s/bootmeth/boot method/

throughout the patch.


Signed-off-by: Simon Glass <s...@chromium.org>
---

  doc/develop/bootstd/cros.rst     | 33 ++++++++++++++++++++++++++++++++
  doc/develop/bootstd/index.rst    |  1 +
  doc/develop/bootstd/overview.rst |  1 +
  3 files changed, 35 insertions(+)
  create mode 100644 doc/develop/bootstd/cros.rst

diff --git a/doc/develop/bootstd/cros.rst b/doc/develop/bootstd/cros.rst
new file mode 100644
index 00000000000..96f148837ac
--- /dev/null
+++ b/doc/develop/bootstd/cros.rst
@@ -0,0 +1,33 @@
+.. SPDX-License-Identifier: GPL-2.0+:
+
+ChromiumOS Bootmeth
+===================
+
+ChromiumOS provides a mechanism for booting its Operating System from a block
+device, described
+`here 
<https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot/>`_.
+
+U-Boot includes support for reading the associated data structures from the
+device and identifying a bootable ChromiumOS image. This structure includes the
+kernel itself, boot arguments (kernel command line), as well as the x86 setup
+block (for x86 only).
+
+When invoked on a bootdev, this bootmeth searches for kernel partitions with

What does 'invoked on a boot device' mean? Do you mean "if ChromimumOS
selects a boot device"?

+the appropriate GUID (Globally Unique Identifier). When found, the information
+is loaded and a bootflow is created.
+
+When the bootflow is booted, the bootmeth reads the kernel and boot arguments.
+It then boots the kernel using zboot (on x86) or bootm (on ARM). The boot
+arguments are adjusted to replace %U with the UUID of the selected kernel
+partition. This results in the correct root disk being used, which is the next
+partition after the kernel partition.
+
+For ARM, a :doc:`/usage/fit/index` is used. The `CONFIG_FIT_BEST_MATCH` option
+must be enabled for U-Boot to select the correct devicetree to boot with.
+
+Note that a ChromiumOS image typically has two copies of the OS, each with its

%s/OS/operating system/

+own kernel and root disk. There is no initial ramdisk (initrd). This means that
+this bootmeth typically locates two separate images.
+
+The compatible string "u-boot,cros" is used for the driver. The driver is
+automatically instantiated if there are no bootmeth drivers in the devicetree.

The last sentence should be moved to the overview.

Please, mention the relevant configuration option for the boot method
driver.

Best regards

Heinrich


diff --git a/doc/develop/bootstd/index.rst b/doc/develop/bootstd/index.rst
index f8fce7207ce..69fd3c2d2eb 100644
--- a/doc/develop/bootstd/index.rst
+++ b/doc/develop/bootstd/index.rst
@@ -10,3 +10,4 @@ Standard Boot
     extlinux
     pxelinux
     qfw
+   cros
diff --git a/doc/develop/bootstd/overview.rst b/doc/develop/bootstd/overview.rst
index bcc2c00c775..f12e93236a7 100644
--- a/doc/develop/bootstd/overview.rst
+++ b/doc/develop/bootstd/overview.rst
@@ -417,6 +417,7 @@ Bootmeth drivers are provided for:
     - U-Boot scripts from disk, network or SPI flash
     - EFI boot using bootefi from disk
     - VBE
+   - :doc:`ChromiumOS <cros>` ChromiumOS boot from a disk
     - EFI boot using boot manager
     - :doc:`QFW <qfw>`: QEMU firmware interface


Reply via email to