aboutsummaryrefslogtreecommitdiffstats
path: root/kernfrag.7
diff options
context:
space:
mode:
authorWynn Wolf Arbor2020-05-02 17:53:44 +0200
committerWynn Wolf Arbor2020-05-05 21:12:32 +0200
commitb6f8e3d1615e6928ae2bca50f6b28b2486876ff8 (patch)
tree76b9e03993e9f0901b605098821a58d78e2c4d3b /kernfrag.7
parent23b99539570ff769505564ec1be2068ee142640d (diff)
downloadkern-b6f8e3d1615e6928ae2bca50f6b28b2486876ff8.tar.gz
Add kern(1) and kernfrag(7) manuals
Diffstat (limited to 'kernfrag.7')
-rw-r--r--kernfrag.7134
1 files changed, 134 insertions, 0 deletions
diff --git a/kernfrag.7 b/kernfrag.7
new file mode 100644
index 0000000..60eb4d5
--- /dev/null
+++ b/kernfrag.7
@@ -0,0 +1,134 @@
+.Dd May 4, 2020
+.Dt KERNFRAG 7
+.Os
+.Sh NAME
+.Nm kernfrag
+.Nd compose Linux kernel configurations
+.Sh DESCRIPTION
+.Nm
+is a framework for arranging and composing Linux kernel configurations.
+It is comprised of two distinct types of files,
+.Em fragments
+and
+.Em templates ,
+which are organized within a specific directory structure.
+.Pp
+Utilities such as
+.Xr kern 1
+then use the kernel's
+.Em merge_config.sh
+script to compose a complete configuration file from a given template
+and all fragments referenced within it.
+.Pp
+Note that by default,
+.Em merge_config.sh
+will merge fragments with the
+kernel's default configuration as generated by
+.Sq make alldefconfig .
+In other words, configuration symbols that are enabled (or disabled) by
+default need not be included explicitly.
+.Pp
+This manual requires a basic understanding of the kernel build system.
+For more information, refer to the resources linked in the
+.Sx SEE ALSO
+section of this manual.
+.Sh FRAGMENTS
+A
+.Em fragment
+is a text file containing a set of configuration symbols and
+their respective values.
+.Pp
+The format of this file is analogous to the one used by the kernel
+configuration file.
+For example:
+.Bd -literal -offset indent
+# We only really care about standard PC systems
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+
+# We want to support transparent hugepages, though applications
+# should ask for them specifically with madvise
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+.Ed
+.Sh TEMPLATES
+A
+.Em template
+is a text file containing a list of
+.Em fragment
+paths.
+.Pp
+One such path is given per line, relative to the
+.Pa fragments/
+directory in the root
+.Nm
+structure.
+Empty lines or comments are not allowed.
+For example:
+.Bd -literal -offset indent
+devices/input/xpad
+devices/net/r8169
+devices/usb/sound
+.Ed
+.Sh DIRECTORY STRUCTURE
+The canonical root directory for the
+.Nm
+structure is
+.Pa /etc/kernfrag .
+Contained within are two directories,
+.Pa fragments/
+and
+.Pa templates/ .
+.Pp
+The
+.Pa fragments/
+directory contains an arbitrarily nested tree of fragments.
+It is recommended to group fragments according to the nature of the
+configuration symbols they contain.
+For example, a group for device drivers can be arranged like this:
+.Bd -literal -offset indent
+fragments/devices/
+├── input
+│   └── xpad
+├── net
+│   ├── r8169
+│   └── tigon3
+└── usb
+ ├── bluetooth
+ └── sound
+.Ed
+.Pp
+The
+.Pa templates/
+directory contains all templates.
+Usually there is one template for each host managed by the user.
+A special
+.Qq base
+template is used by
+.Xr kern 1
+to determine which fragments are always included.
+.Pp
+For example, the following listing contains templates for two hosts
+and the previously mentioned
+.Qq base
+template.
+.Bd -literal -offset indent
+templates/
+├── aphrodite
+├── base
+└── hephaestus
+.Ed
+.Sh FILES
+.Bl -tag -width Ds
+.It Pa /etc/kernfrag
+The canonical root directory for the
+.Nm
+structure.
+.El
+.Sh SEE ALSO
+.Xr kern 1
+.Bl -tag -width Ds
+.It The Kernel Build System:
+https://www.kernel.org/doc/html/latest/kbuild/index.html
+.It The kernel's merge_config shell script
+.Pa /usr/src/linux/scripts/kconfig/merge_config.sh
+.El