#!/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 kernel_config_set_y CONFIG_MODULE_COMPRESS_NONE 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 # @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}" }