ColorfulRhino 01be9ecbf9 kernel-config: Update forced kernel options with kernel version checks
This makes the process even more automatic, requiring less manual changes in the config in case of having to solve dependency chains.
2024-03-29 15:57:40 +00:00

85 lines
3.9 KiB
Bash

#!/usr/bin/env bash
#
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
#
# This file is a part of the Armbian Build Framework
# https://github.com/armbian/build/
# Forced .config options for all Armbian kernels.
# Please note: Manually changing options doesn't check the validity of the .config file. This is done at next make time. Check for warnings in build log.
# This is an internal/core extension.
function armbian_kernel_config__disable_various_options() {
kernel_config_modifying_hashes+=("CONFIG_MODULE_COMPRESS_NONE=y" "CONFIG_MODULE_SIG=n" "CONFIG_LOCALVERSION_AUTO=n" "DEBUG_KERNEL=n")
if [[ -f .config ]]; then
display_alert "Disabling module compression and signing / debug / auto version" "armbian-kernel" "debug"
# DONE: Disable: signing, and compression of modules, for speed.
kernel_config_set_n CONFIG_MODULE_COMPRESS_XZ # No use double-compressing modules
kernel_config_set_n CONFIG_MODULE_COMPRESS_ZSTD
kernel_config_set_n CONFIG_MODULE_COMPRESS_GZIP
if linux-version compare "${KERNEL_MAJOR_MINOR}" ge 6.0; then
kernel_config_set_y CONFIG_MODULE_COMPRESS_NONE # Introduced in 6.0
else
kernel_config_set_n CONFIG_MODULE_COMPRESS # Only available up to 5.12
fi
kernel_config_set_n CONFIG_SECURITY_LOCKDOWN_LSM
kernel_config_set_n CONFIG_MODULE_SIG # No use signing modules
# DONE: Disable: version shenanigans
kernel_config_set_n CONFIG_LOCALVERSION_AUTO # This causes a mismatch between what Armbian wants and what make produces.
kernel_config_set_string CONFIG_LOCALVERSION '""' # Must be empty; make is later invoked with LOCALVERSION and it adds up
# DONE: Disable: debug option
kernel_config_set_n DEBUG_KERNEL # Armbian doesn't know how to package a debug kernel.
kernel_config_set_n EXPERT # This needs to be disabled as well since DEBUG_KERNEL=y is a dependency for EXPERT=y, meaning DEBUG_KERNEL would be re-enabled automatically if EXPERT is enabled
#kernel_config_set_y DEBUG_INFO_NONE # Do not build the kernel with debugging information, which will result in a faster and smaller build. (NOTE: Not needed (?) when DEBUG_KERNEL=n and EXPERT=n since all DEBUG_INFO options are missing anyway in that case)
kernel_config_set_n GDB_SCRIPTS
if linux-version compare "${KERNEL_MAJOR_MINOR}" le 6.5; then
kernel_config_set_n EMBEDDED # Only present up to 6.5; this option forces EXPERT=y so it needs to be disabled
fi
# @TODO: Enable the options for the extrawifi/drivers; so we don't need to worry about them when updating configs
fi
}
# Helpers for manipulating kernel config.
function kernel_config_set_m() {
declare module="$1"
display_alert "Enabling kernel module" "${module}=m" "debug"
run_host_command_logged ./scripts/config --module "$module"
}
function kernel_config_set_y() {
declare config="$1"
display_alert "Enabling kernel config/built-in" "${config}=y" "debug"
run_host_command_logged ./scripts/config --enable "${config}"
}
function kernel_config_set_n() {
declare config="$1"
display_alert "Disabling kernel config/module" "${config}=n" "debug"
# Only set to "n" if the config option can be found in the config file.
# Otherwise the option would maybe be considered as misconfiguration.
if grep -qE "(\b${config}\=|CONFIG_${config}\=)" .config; then
run_host_command_logged ./scripts/config --disable "${config}"
elif grep -qE "(\b${config} is not set|\bCONFIG_${config} is not set)" .config; then
display_alert "Kernel config/module was already disabled" "${config}=n skipped" "debug"
else
display_alert "Kernel config/module was not found in the config file" "${config}=n was not added to prevent misconfiguration" "debug"
fi
}
function kernel_config_set_string() {
declare config="$1"
declare value="${2}"
display_alert "Setting kernel config/module" "${config}=${value}" "debug"
run_host_command_logged ./scripts/config --set-str "${config}" "${value}"
}