Skip to content

Commit

Permalink
armbian-kernel: drop DEBUG_KERNEL/DEBUG_INFO disables; force `EXP…
Browse files Browse the repository at this point in the history
…ERT=y` and bring back `CONFIG_GPIO_SYSFS=y` for all kernels

- we had `_DEBUG=n` forced, which conflicted with `_EXPERT=y`;
  - some important SBC features (like _GPIO_SYSFS) depend on _EXPERT=y
- we've plans to enable BTF/CO-RE kernels soon, so removing the non-debug enforcement makes some sense
  - also, .config's will be free to determine debug config, nothing's changing in those here
- remove the `_EMBEDDED` special case handling, we can do that as well now
- add a separate hook to renable `CONFIG_GPIO_SYSFS=y`; it was a victim of `EXPERT=n` in some kernels
- this does not include rewrites of all the .configs -- those should be done in a separate batch -- either way effect is the same, hooks will always override .config's
  - during rewrites, a large number of new options will show up, since `_EXPERT=y` is used as dependency for many of Kernel's experimental-ish features
  • Loading branch information
rpardini authored and igorpecovnik committed May 11, 2024
1 parent 1c4919f commit fb17a2a
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions lib/functions/compilation/armbian-kernel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@

# 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")
kernel_config_modifying_hashes+=("CONFIG_MODULE_COMPRESS_NONE=y" "CONFIG_MODULE_SIG=n" "CONFIG_LOCALVERSION_AUTO=n" "EXPERT=y")
if [[ -f .config ]]; then
display_alert "Enable CONFIG_EXPERT=y" "armbian-kernel" "debug"
kernel_config_set_y EXPERT # Too many config options are hidden behind EXPERT=y, lets have it always on

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
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
Expand All @@ -32,26 +35,21 @@ function armbian_kernel_config__disable_various_options() {
# 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
}

function armbian_kernel_config__enable_config_access_in_live_system() {
kernel_config_modifying_hashes+=("CONFIG_IKCONFIG_PROC=y")
if [[ -f .config ]]; then
kernel_config_set_y CONFIG_IKCONFIG # This information can be extracted from the kernel image file with the script scripts/extract-ikconfig and used as input to rebuild the current kernel or to build another kernel
kernel_config_set_y CONFIG_IKCONFIG_PROC # This option enables access to the kernel configuration file through /proc/config.gz
kernel_config_set_y CONFIG_IKCONFIG # This information can be extracted from the kernel image file with the script scripts/extract-ikconfig and used as input to rebuild the current kernel or to build another kernel
kernel_config_set_y CONFIG_IKCONFIG_PROC # This option enables access to the kernel configuration file through /proc/config.gz
fi
}

function armbian_kernel_config__restore_enable_gpio_sysfs() {
kernel_config_modifying_hashes+=("CONFIG_GPIO_SYSFS=y")
if [[ -f .config ]]; then
kernel_config_set_y CONFIG_GPIO_SYSFS # This was a victim of not having EXPERT=y due to some _DEBUG conflicts in old times. Re-enable it forcefully.
fi
}

Expand Down Expand Up @@ -90,6 +88,13 @@ function kernel_config_set_n() {
function kernel_config_set_string() {
declare config="$1"
declare value="${2}"
display_alert "Setting kernel config/module" "${config}=${value}" "debug"
display_alert "Setting kernel config/module string" "${config}=${value}" "debug"
run_host_command_logged ./scripts/config --set-str "${config}" "${value}"
}

function kernel_config_set_val() {
declare config="$1"
declare value="${2}"
display_alert "Setting kernel config/module value" "${config}=${value}" "debug"
run_host_command_logged ./scripts/config --set-val "${config}" "${value}"
}

0 comments on commit fb17a2a

Please sign in to comment.