bootstd: cros: Add docs for the kernel layout

Provide brief documentation about the ChromiumOS kernel layout.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-07-30 11:16:54 -06:00
parent 1a0810924a
commit b7ed5386a4

View file

@ -22,6 +22,35 @@
#include <linux/sizes.h> #include <linux/sizes.h>
#include "bootmeth_cros.h" #include "bootmeth_cros.h"
/*
* Layout of the ChromeOS kernel
*
* Partitions 2 and 4 contain kernels
*
* Contents are:
*
* Offset Contents
* 0 struct vb2_keyblock
* m struct vb2_kernel_preamble
* m + n kernel buffer
*
* m is keyblock->keyblock_size
* n is preamble->preamble_size
*
* The kernel buffer itself consists of various parts:
*
* Offset Contents
* m + n kernel image (Flat vmlinux binary or FIT)
* b - 8KB Command line text
* b - 4KB X86 setup block (struct boot_params, extends for about 16KB)
* b X86 bootloader (continuation of setup block)
* b + 16KB X86 setup block (copy, used for hold data pointed to)
*
* b is m + n + preamble->bootloader_address - preamble->body_load_address
*
* Useful metadata extends from b - 8KB through to b + 32 KB
*/
enum { enum {
PROBE_SIZE = SZ_4K, /* initial bytes read from partition */ PROBE_SIZE = SZ_4K, /* initial bytes read from partition */