Configuration file for genkernel
This file is sourced by genkernel at startup and determines which options
we will be using to compile our kernel. The order of precidence is simple,
with the internal settings being least important, configuration file
settings next, and command line options being most important.
=========COMMON COMMAND LINE OPTION DEFAULTS=========
Install to $BOOTDIR
#INSTALL="yes"
Run 'make oldconfig' before compiling this kernel
#OLDCONFIG="yes"
make oldconfig takes the current kernel configuration in the .config file,
and updates it based on the new kernel release. Will not print anything, unless
a new configuration value is needed.
--> gzip -dc /proc/config.gz > .config
--> current running config
Run 'make menuconfig' before compiling this kernel
#MENUCONFIG="no"
Run 'make gconfig' before compiling this kernel
#GCONFIG="no"
Run 'make nconfig' (ncurses 'menuconfig') before compiling this kernel
#NCONFIG="no"
Run 'make xconfig' before compiling this kernel
#XCONFIG="no"
Run 'make mrproper' before compiling this kernel
#MRPROPER="yes"
make clean < make mrproper < make distclean
Run 'make clean' before compiling this kernel
Only needed if MRPROPER is set to NO because
MRPROPER implies 'make clean'.
#CLEAN="yes"
Mount BOOTDIR automatically if it isn't mounted
#MOUNTBOOT="yes"
it will mount according to /etc/fstab
Make symlinks in BOOTDIR automatically
#SYMLINK="no"
The symlinks are usually named vmlinuz and initramfs, and they point to
the respective kernel and initramfs files.
/boot/vmlinuz -> /boot/vmlinuz-
/boot/initramfs -> /boot/initramfs-.img
?? where is this defined??
Save the new configuration in /etc/kernels upon
successful compilation
#SAVE_CONFIG="yes"
Will be saved as,
config-[]
is the version of the kernel being compiled, such as 5.4.83-r1.
is an optional local version string that you can specify
in your kernel configuration
?? where is this defined??
Enable color output in genkernel
NOCOLOR="false"
Clear build cache dir on gernkernel start
#CLEAR_CACHEDIR="no"
Clear all tmp files and caches after genkernel has run
#POSTCLEAR="no"
Check for x MB free disk space in BOOTDIR
#CHECK_FREE_DISK_SPACE_BOOTDIR=0
Default is 0 (disabled).
Check for x MB free disk space in kernel outputdir
#CHECK_FREE_DISK_SPACE_KERNELOUTPUTDIR=0
Default is 0 (disabled).
Genkernel uses an independent configuration for MAKEOPTS, and does not source
/etc/portage/make.conf . You can override the default setting by uncommenting
and tweaking the following line. Default setting is set up by
${GK_SHARE}/${ARCH_OVERRIDE}/config.sh . The recommended value for -j
argument is: *+1
MAKEOPTS="$(portageq envvar MAKEOPTS)"
if /etc/portage/make.conf as this line
MAKEOPTS="-j8"
then portageq envvar MAKEOPTS
will return -j8
Run the kernel make at the following NICE level
NICE=10
NICE option is used to set the priority level (also known as the "niceness" or "NICE level")
at which the kernel compilation process will run
Lower values of NICE make the process run with higher priority, potentially
consuming more CPU resources.
Add bcache support
#BCACHE="no"
bcache is a Linux kernel feature that provides a block-level caching mechanism
for storage devices.
It allows you to use one or more fast storage devices, such as SSDs (Solid State Drives),
as cache for slower, larger storage devices like traditional HDDs (Hard Disk Drives)
or other types of storage.
Add LVM support
#LVM="no"
LVM, which stands for Logical Volume Manager, is a software-based technology used in
Linux and some other Unix-like operating systems to manage disk drives and storage devices.
Add LUKS support
#LUKS="no"
LUKS, which stands for Linux Unified Key Setup, is a disk encryption specification and
an associated set of tools used for encrypting entire block devices (such as hard drives
or partitions) on Linux-based operating systems.
Add GnuPG support
#GPG="no"
GnuPG, which stands for GNU Privacy Guard, is a free and open-source software tool
used for encryption, decryption, digital signatures, and secure communication.
It is based on the OpenPGP (Pretty Good Privacy) standard and is commonly used for
securing email communication, file encryption, and verifying the authenticity of digital files.
Add keyctl support for loading LUKS passphrase into a keyring
#KEYCTL="no"
keyctl utility that allows for the management and manipulation of security keys. Specifically,
it is related to the interaction between the Linux Unified Key Setup (LUKS) encryption subsystem
and the key management facilities provided by the kernel.
Add in early microcode support: this sets the kernel options for early microcode loading
Possible values: empty/"no", "all", "intel", "amd"
#MICROCODE="all"
Early Loading: "Early microcode support" means that the system firmware or BIOS has the
capability to load microcode updates for the CPU early in the boot process, often before
the operating system kernel is loaded. This allows the CPU to operate with the most
up-to-date microcode from the start.
Include early microcode in generated initramfs.
Only needed if system cannot load multiple initramfs.
NOTE: >=sys-boot/grub-2 will detect and auto-load {amd,intel}-uc.img file
provided by sys-firmware/intel-microcode[initramfs] or
sys-kernel/linux-firmware[initramfs].
#MICROCODE_INITRAMFS="no"
Add NFS support
#NFS="no"
Add DMRAID support
#DMRAID="no"
DMRAID is a technology that allows you to configure and manage software RAID
(Redundant Array of Independent Disks) devices using the device mapper framework
on Linux. It is often used when you want to create and manage software-based RAID arrays.
Add SSH support
#SSH="no"
?? not related to sshd services???
Add b2sum support
#B2SUM="no"
B2sum is a cryptographic hash function and checksum tool used to verify the integrity of data.
It is part of the BLAKE2 family of cryptographic hash functions, which are designed to be fast and secure.
Include busybox in the initramfs. If included, busybox is rebuilt
if the cached copy is out of date.
BUSYBOX="yes"
If you need BusyBox for tasks like emergency recovery or debugging during
the initramfs phase, it's a good idea to include it.
Add MDRAID support
#MDADM="no"
Specify a custom mdadm.conf.
By default the initramfs will be built without an mdadm.conf and will auto-detect
arrays during bootup. Usually, this should not be needed.
#MDADM_CONFIG="/etc/mdadm.conf"
MDRAID is a software RAID (Redundant Array of Independent Disks) implementation in Linux.
Add Multipath support
#MULTIPATH="no"
multipath is used to detect and coalesce multiple paths to devices, for fail-over or performance reasons.
Add iSCSI support
#ISCSI="no"
with iSCSI you can access storage over an IP-based network.
Add e2fsprogs support
E2FSPROGS="yes"
Ext2/3/4 filesystem utilities
Include support for unionfs
#UNIONFS="no"
A user space unionfs implementation
Include support for zfs volume management. If unset, genkernel will attempt
to autodetect and enable this when rootfs is on zfs.
#ZFS="no"
Add BTRFS support
#BTRFS="no"
Add xfsprogs support
XFSPROGS="yes"
Install firmware onto root filesystem
Will conflict with sys-kernel/linux-firmware package
#FIRMWARE_INSTALL="no"
Add firmware(s) to initramfs
#FIRMWARE="no"
Specify directory to pull from
#FIRMWARE_DIR="/lib/firmware"
Specify a comma-separated list of firmware files or directories to include,
relative to FIRMWARE_DIR. If empty or unset, the full contents of
FIRMWARE_DIR will be included (if FIRMWARE option above is set to YES).
#FIRMWARE_FILES=""
Add new kernel to grub
Possible values: empty/"no", "grub", "grub2"
#BOOTLOADER="no"
Use sandbox when building initramfs
#SANDBOX="yes"
Embed and set font early on boot
Possible values: empty/"none", "current",
#BOOTFONT="none"
Add boot splash using splashutils
SPLASH="yes"
splash_geninitramfs is obsoleted
Use this splash theme. If commented out - the "default" name theme is used.
Also, SPLASH="yes" needs to be enabled for this one to work.
This supersedes the "SPLASH_THEME" option in '/etc/conf.d/splash'.
SPLASH_THEME="gentoo"
Run "emerge @module-rebuild" automatically when possible and necessary
after kernel and modules have been compiled
#MODULEREBUILD="yes"
Run the specified command in the current environment after the kernel and
modules have been compiled, useful to rebuild external kernel module
(see MODULEREBUILD above) or installing additional
files (use 'copy_image_with_preserve dtb path/to/dtb dtb ')
#CMD_CALLBACK=""
=========KEYMAP SETTINGS=========
Force keymap selection at boot
#DOKEYMAPAUTO="no"
Enables keymap selection support
#KEYMAP="yes"
=========LOW LEVEL COMPILE SETTINGS=========
Assembler to use for the kernel. See also the --kernel-as command line
option.
#KERNEL_AS="as"
Archiver to use for the kernel. See also the --kernel-ar command line
option.
#KERNEL_AR="ar"
Compiler to use for the kernel (e.g. distcc). See also the --kernel-cc
command line option.
#KERNEL_CC="gcc"
Linker to use for the kernel. See also the --kernel-ld command line option.
#KERNEL_LD="ld"
NM utility to use for the kernel. See also the --kernel-nm command line option.
#KERNEL_NM="nm"
GNU Make to use for kernel. See also the --kernel-make command line option.
#KERNEL_MAKE="make"
objcopy utility to use for the kernel. See also the --kernel-objcopy command
line option.
#KERNEL_OBJCOPY="objcopy"
objdump utility to use for the kernel. See also the --kernel-objdump command
line option.
#KERNEL_OBJDUMP="objdump"
ranlib utility to use for the kernel. See also the --kernel-ranlib command
line option.
#KERNEL_RANLIB="ranlib"
readelf utility to use for the kernel. See also the --kernel-readelf command
line option.
#KERNEL_READELF="readelf"
strip utility to use for the kernel. See also the --kernel-strip command line
option.
#KERNEL_STRIP="strip"
Assembler to use for the utilities. See also the --utils-as command line
option.
#UTILS_AS="as"
Archiver to use for the utilities. See also the --utils-ar command line
option.
#UTILS_AR="ar"
C Compiler to use for the utilities (e.g. distcc). See also the --utils-cc
command line option.
#UTILS_CC="gcc"
C++ Compiler to use for the utilities (e.g. distcc). See also the --utils-cxx
command line option.
#UTILS_CXX="g++"
Linker to use for the utilities. See also the --utils-ld command line
option.
#UTILS_LD="ld"
NM utility to use for the utilities. See also the --utils-nm command line option.
#UTILS_NM="nm"
GNU Make to use for the utilities. See also the --utils-make command line
option.
#UTILS_MAKE="make"
Target triple (i.e. aarch64-linux-gnu) to build for. If you do not
cross-compile, leave blank for auto detection.
#CROSS_COMPILE=""
Target triple (i.e. aarch64-linux-gnu) to build kernel for. Utilities will be
built for the native target, not this target. If you do not cross-compile,
leave blank.
#KERNEL_CROSS_COMPILE=""
Override default make target (bzImage). See also the --kernel-target
command line option. Useful to build a uImage on arm.
#KERNEL_MAKE_DIRECTIVE_OVERRIDE="fooImage"
Override default kernel binary path. See also the --kernel-binary
command line option. Useful to install a uImage on arm.
#KERNEL_BINARY_OVERRIDE="arch/foo/boot/bar"
=========GENKERNEL LOCATION CONFIGURATION=========
Variables:
%%ARCH%% - Final determined architecture
%%CACHE%% - Final determined cache location
Set genkernel's temporary work directory
TMPDIR="/var/tmp/genkernel"
Set the boot directory, default is /boot
BOOTDIR="/boot"
Default share directory location
GK_SHARE="${GK_SHARE:-/usr/share/genkernel}"
${GK_SHARE:-/usr/share/genkernel} is a variable expansion that has a default value.
If GK_SHARE is already defined with a value, it will use that value.
If not, it will use the default value /usr/share/genkernel.
Location of the default cache
CACHE_DIR="/var/cache/genkernel"
Location of DISTDIR, where our source tarballs are stored
DISTDIR="${GK_SHARE}/distfiles"
Log output file
LOGFILE="/var/log/genkernel.log"
Debug Level
LOGLEVEL=1
=========COMPILED UTILS CONFIGURATION=========
Default location of kernel source
DEFAULT_KERNEL_SOURCE="/usr/src/linux"
Default kernel config (only use to override using
arch/%%ARCH%%/kernel-config-${VER}.${PAT} !)
#DEFAULT_KERNEL_CONFIG="${GK_SHARE}/arch/%%ARCH%%/kernel-config"
Specifies a user created busybox config
#BUSYBOX_CONFIG="/path/to/file"
NOTE: Since genkernel 3.4.41 the version of
busybox, lvm, mdadm, ... have been moved to
/usr/share/genkernel/defaults/software.sh in order to
reduce the merging you have to do during etc-update.
You can still override these settings in here.
=========MISC KERNEL CONFIGURATION=========
Set kernel filename which will be used when kernel will be installed
into BOOTDIR. See man page to learn more about available placeholders.
#KERNEL_FILENAME="vmlinuz-%%KV%%"
Set kernel symlink name which will be used when kernel will be installed
into BOOTDIR and SYMLINK option is enabled
#KERNEL_SYMLINK_NAME="kernel"
This option will set kernel option CONFIG_LOCALVERSION.
Use special value "UNSET" to unset already set CONFIG_LOCALVERSION.
#KERNEL_LOCALVERSION="-%%ARCH%%"
This option is only valid if kerncache is
defined. If there is a valid kerncache no checks
will be made against a kernel source tree.
#KERNEL_SOURCES="yes"
Build a static (monolithic kernel)
#BUILD_STATIC="no"
Make and install kernelz image (PowerPC)
#GENZIMAGE="no"
Archive file created using tar containing kernel binary, content
of /lib/modules and the kernel config.
NOTE: Archive is created before the callbacks are run!
#KERNCACHE="/path/to/file.tar.xz"
Prefix to kernel module destination, modules
will be installed in /lib/modules
#KERNEL_MODULES_PREFIX=""
=========MISC INITRAMFS CONFIGURATION=========
Set initramfs filename which will be used when initramfs will be
installed into BOOTDIR. See man page to learn more about available
placeholders.
#INITRAMFS_FILENAME="initramfs-%%KV%%.img"
Set initramfs symlink name which will be used when initramfs will be
installed into BOOTDIR and SYMLINK option is enabled
#INITRAMFS_SYMLINK_NAME="initramfs"
Copy all compiled kernel modules to the initramfs
#ALLRAMDISKMODULES="no"
Copy selected modules to the initramfs based on arch-specific modules_load file
#RAMDISKMODULES="yes"
Archive file created using tar containing kernel and initramfs.
NOTE: No modules outside of the initramfs will be included!
#MINKERNPACKAGE="/path/to/file.tar.xz"
Add additional modules to the initramfs using the module groups defined
in /usr/share/genkernel/defaults/modules_load (see this file for
more details). This would be used if, for example, you
required an additional crypto module or network device at boot
time and did not want to statically compile these in the kernel.
Options take the form AMODULES_{group} where {group} is one of
the groups in modules_load (which are in the form MODULES_{group}).
Use this with caution.
#AMODULES_group="module-to-include another-module"
Override the default modules in the initramfs, for a given group, as defined by
/usr/share/genkernel/defaults/modules_load and the per-arch modules_load
files. You PROBABLY want to use AMODULES_* above, and NOT MODULES_* here.
If you use MODULES_* here, the default and per-arch modules will NOT be used.
#MODULES_group1="some-module" #MODULES_group2="" # Load no modules for this group
Override the default used linuxrc script.
#LINUXRC="/path/to/custom/linuxrc"
Archive file created using tar containing modules after
the callbacks have run
#MODULESPACKAGE="/path/to/file.tar.xz"
Directory structure to include in the initramfs,
only available on >=2.6 kernels
#INITRAMFS_OVERLAY=""
Build the generated initramfs into the kernel instead of
keeping it as a separate file
#INTEGRATED_INITRAMFS="no"
Compress generated initramfs
#COMPRESS_INITRD="yes"
Types of compression: best, xz, lzma, bzip2, gzip, lzop, lz4, zstd, fastest
"best" selects the best available compression method
"fastest" selects the fastest available compression method
#COMPRESS_INITRD_TYPE="best"
wrap initramfs using mkimage for u-boot bootloader
WRAP_INITRD=no
Create a self-contained env in the initramfs
#NETBOOT="no"
=========MISC BOOT CONFIGURATION=========
Specify a default for real_root=
#REAL_ROOT="/dev/one/two/gentoo"
custom
KERNEL_DIR=/usr/src/linux KERNEL_CONFIG=/usr/src/linux/arch/arm64/configs/orgpi5+_defconfig
CONFIG_LOCALVERSION="arm64"
KERNEL_LOCALVERSION="arm64"
(chroot) orgpi5Gentoo /usr/src # nano /etc/genkernel.conf
(chroot) orgpi5Gentoo /usr/src # genkernel all --kernel-config=menuconfig
* Gentoo Linux Genkernel; Version 4.3.6
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: all --kernel-config=menuconfig
* ERROR: splash_geninitramfs is required for --splash but was not found!
* Please consult '/var/log/genkernel.log' for more information and any
* errors that were reported above.
*
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to genkernel@gentoo.org. Please include
* as much information as you can in your bug report; attaching
* '/var/log/genkernel.log' so that your issue can be dealt with effectively.
*
* Please do *not* report kernel compilation failures as genkernel bugs!
*
* Failed to determine session leader; Will not try to stop child processes
(chroot) orgpi5Gentoo /usr/src # emerge --search splash_geninitramfs
[ Results for search key : splash_geninitramfs ]
Searching...
[ Applications found : 0 ]
(chroot) orgpi5Gentoo /usr/src # nano /etc/genkernel.conf
(chroot) orgpi5Gentoo /usr/src # genkernel all --kernel-config=menuconfig
* Gentoo Linux Genkernel; Version 4.3.6
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: all --kernel-config=menuconfig
* ERROR: --kernel-config file '/usr/src/menuconfig' does not exist!
* Please consult '/var/log/genkernel.log' for more information and any
* errors that were reported above.
*
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to genkernel@gentoo.org. Please include
* as much information as you can in your bug report; attaching
* '/var/log/genkernel.log' so that your issue can be dealt with effectively.
*
* Please do *not* report kernel compilation failures as genkernel bugs!
*
* Failed to determine session leader; Will not try to stop child processes
(chroot) orgpi5Gentoo /usr/src # nano /etc/genkernel.conf
(chroot) orgpi5Gentoo /usr/src # genkernel all --kernel-config=oldconfig
* Gentoo Linux Genkernel; Version 4.3.6
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: all --kernel-config=oldconfig
* ERROR: --kernel-config file '/usr/src/oldconfig' does not exist!
* Please consult '/var/log/genkernel.log' for more information and any
* errors that were reported above.
*
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to genkernel@gentoo.org. Please include
* as much information as you can in your bug report; attaching
* '/var/log/genkernel.log' so that your issue can be dealt with effectively.
*
* Please do *not* report kernel compilation failures as genkernel bugs!
*
* Failed to determine session leader; Will not try to stop child processes
(chroot) orgpi5Gentoo /usr/src # genkernel all
* Gentoo Linux Genkernel; Version 4.3.6
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: all
* Working with Linux kernel 6.1.53-gentoo-r1 for arm64
* Using kernel config file '/usr/share/genkernel/arch/arm64/generated-config' ...
*
* Note: The version above is subject to change (depends on config and status of kernel sources).
* kernel: >> Initializing ...
* >> Previous config backed up to .config--2023-10-02--11-39-22.bak
* >> Running 'make mrproper' ...
* >> Running 'make oldconfig' ...
* >> Ignoring --microcode parameter; Architecture does not support microcode loading ...
* >> Re-running 'make oldconfig' due to changed kernel options ...
* >> Kernel version has changed (probably due to config change) since genkernel start:
* We are now building Linux kernel 6.1.53-gentoo-r1-arm64 for arm64 ...
* >> Compiling 6.1.53-gentoo-r1-arm64 Image ...
* >> Compiling 6.1.53-gentoo-r1-arm64 modules ...
* >> Installing 6.1.53-gentoo-r1-arm64 modules (and stripping) ...