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) ...