.. SPDX-License-Identifier: GPL-2.0+: ChromiumOS Bootmeth =================== ChromiumOS provides a mechanism for booting its Operating System from a block device, described `here `_. 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 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 Operating System, each with its 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. It is present if `CONFIG_BOOTMETH_CROS` is enabled.