diff --git a/site/docs/maintain/index.md b/site/docs/maintain/index.md index 5fb56b2..365cca3 100644 --- a/site/docs/maintain/index.md +++ b/site/docs/maintain/index.md @@ -120,12 +120,6 @@ The files under `bin/` are provided in regular Canoeboot releases. **These** are the ROM images that you should flash. Do *not* flash the ROM images contained under `elf/`! -cbutils/ ---------------- - -The build system compiles `cbfstool` and `ifdtool`, from coreboot, and then -places the executables here for use on coreboot ROM images. - elf/ --------------- @@ -149,6 +143,10 @@ cbmk in your own custom coreboot ROM (that you didn't build with cbmk). This is only used by the build system, but these images are *not* provided in releases (only the images under `bin/` are provided). +As of Canoeboot 20240612, the `elf/` directory must be used by default for all +builds, in an effort to make exclusive use of *out-of-source builds*. As such, +the `cbutils` directory is no longer used. + release/ --------------- @@ -461,6 +459,7 @@ as: * `release="n"` (example entry) * `xtree="default"` (example entry) * `tree_depend="default"` (example entry) +* `grubtree="nvme"` (example entry) The `tree` value refers to `config/coreboot/TREE`; in other words, a given target could specify a name other than its own as the tree; it would then @@ -524,6 +523,9 @@ a given board; two trees may use the same crossgcc as each other. The `tree_depend` option means that a given tree needs another tree, defined by this variable, to also be present. +The `grubtree` option specifies which GRUB tree to use. If unset, it defers to +the `default` GRUB tree. + ### config/coreboot/BOARDNAME/config/ Files in this directory are *coreboot* configuration files. @@ -630,18 +632,18 @@ of their own; for example, `config/grub/` exists. Multiple files exist here, and they are *concatenated* in a temporary file by cbmk, which is then scanned to find information about projects. -config/grub/ +GRUB config --------------- -### config/grub/background +### config/data/grub/background Splash screen images applied duing startup when using the GRUB payload. -### config/grub/background/background1024x768.png +### config/data/grub/background/background1024x768.png Used on ThinkPad X60 and T60. -### config/grub/background/background1280x800.png +### config/data/grub/background/background1280x800.png Used on all other machines, besides X60 and T60 thinkpads. @@ -651,23 +653,15 @@ example, `config/coreboot/x60/target.cfg` specifies this: grub_background="background1024x768.png" -### config/grub/background/COPYING +### config/data/grub/background/COPYING Licensing info for GRUB bootsplash images. -### config/grub/config/ +### config/grub/TREE/config/ GRUB configuration files. -### config/grub/config/AUTHORS - -Author info for GRUB configuration files. - -### config/grub/config/COPYING - -Licensing info for GRUB configuration files. - -### config/grub/config/grub.cfg +### config/grub/TREE/config/grub.cfg This is a configuration file. It is used to program GRUB's shell. @@ -681,7 +675,7 @@ A `grubtest.cfg` can be inserted into CBFS, but it will not override the default `grub.cfg` (either in CBFS or on memdisk); however, the one in memdisk will provide a menuentry for switching to this, if available. -### config/grub/config/grub\_memdisk.cfg +### config/data/grub/memdisk.cfg This GRUB configuration checks whether `grub.cfg` exists in CBFS and switches to that first (not provided by default) or, if one is not available in CBFS, @@ -691,12 +685,12 @@ The GRUB memdisk is a file system within `grub.elf`, itself stored within the coreboot file system named *CBFS*, which is part of the coreboot ROM image on every coreboot target. -### config/grub/keymap/ +### config/data/grub/keymap/ Keymap files used by GRUB. They can alter the character set corresponding to inputted scancodes. -### config/grub/keymap/\*.gkb +### config/data/grub/keymap/\*.gkb The keymap files themselves. These are inserted into the GRUB memdisk, and the `grub.cfg` file can specify which one is to be used. @@ -705,7 +699,7 @@ These files are binary-encoded, defining which characters correspond to which scancodes. It is handled by `grub-core/commands/keylayouts.c` in the GRUB source code. -### config/grub/modules.list +### config/data/grub/modules/TREE This defines which modules are inserted into `grub.elf`. These modules can be anything from file systems, small applications/utilities, launchers (e.g. @@ -871,6 +865,56 @@ Another interesting config option is `CONFIG_POSITION_INDEPENDENT` for ARM boards, which has been so far enabled in the ones `cbmk` supports, just to be safe. +config/submodule +---------------- + +In here you can find submodule configurations for projects. It works for both +single- and multi-tree projects. Use the existing examples as reference. + +Files, in each directory: + +* `module.list` lists paths (files and directories) for given modules, which + can be files(via URL) or Git repositories, or both. +* NAME/module.cfg + +NAME is the file/directory name for the module, with everything up to the +final forward slash removed. E.g. foo/bar/thing.zip would be thing.zip as +NAME. + +In `module.cfg` there can be either, file: + +``` +subfile="url" +subfile_bkup="url" +subhash="sha512sum for file" +``` + +or, git repository: + +``` +subrepo="url" +subrepo_bkup="url" +subhash="sha1 git commit id" +``` + +You must only use `subfile` or `subrepo`, not both, and there must be a backup +URL. The build system intentionally *avoids* using Git's actual submodules +feature, instead opting to download such repositories manually, because the +official submodules feature doesn't have very good redundancy. + +Additionally, a `patches` directory can be included alongside `module.cfg`, +which can be used to patch the submodule (only supported for Git repositories +because files are not extracted, only placed at their configured destination). + +The destination path in `module.list` is relative to the location of the main +Git repository under which it is placed. + +config/data/PROJECT +------------------- + +Random configuration data provided on a per-project basis. Complements +the `config/PROJECT` directory. + U-Boot build system -------------------