[PATCH 08/16] bootstd: cros: Add docs for the kernel layout

Simon Glass sjg at chromium.org
Sun Jul 30 19:16:54 CEST 2023


Provide brief documentation about the ChromiumOS kernel layout.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 boot/bootmeth_cros.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/boot/bootmeth_cros.c b/boot/bootmeth_cros.c
index 3b9e75540aa8..a551d43701d8 100644
--- a/boot/bootmeth_cros.c
+++ b/boot/bootmeth_cros.c
@@ -22,6 +22,35 @@
 #include <linux/sizes.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 {
 	PROBE_SIZE	= SZ_4K,	/* initial bytes read from partition */
 
-- 
2.41.0.487.g6d72f3e995-goog



More information about the U-Boot mailing list