Skip to content

Conversation

@tabrisnet
Copy link
Collaborator

@tabrisnet tabrisnet commented Dec 27, 2025

Description

a) clarifies a build-time error message if you're trying to build an image with an F2FS rootfs - lib/functions/configuration/main-config.sh
b) sets EROFS as module in lib/functions/compilation/armbian-kernel.sh
c) sets F2FS_FS & EROFS_FS as module in a bunch of kernel configs.
d) CONFIG_R8712U is an artifact of rewrite-kernel-config as is CONFIG_CRYPTO_CRC32

Note: as ext4 works as rootfs while a module [just needs to be in the initrd], there should be no issue for f2fs as well.

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

  • Test A
  • Test B

Checklist:

Please delete options that are not relevant.

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced Docker support capabilities.
    • Added kernel-level cryptographic CRC32 support.
  • Chores

    • Kernel configuration refactored to use loadable modules for core filesystem features.
    • Removed legacy staging driver support.
    • Clarified error messaging for kernel configuration requirements.

✏️ Tip: You can customize this high-level summary in your review settings.

@tabrisnet tabrisnet requested review from a team, SteeManMI and adeepn as code owners December 27, 2025 15:49
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 27, 2025

📝 Walkthrough

Walkthrough

Kernel configuration files across multiple platforms are modified to convert filesystem support options (F2FS, Overlay FS, EROFS) from built-in to module format, alongside build script updates for Docker support and clarified error messaging.

Changes

Cohort / File(s) Summary
F2FS filesystem module conversion
config/kernel/linux-meson64-current.config, config/kernel/linux-meson64-edge.config, config/kernel/linux-rockchip-current.config, config/kernel/linux-rockchip-edge.config, config/kernel/linux-rockchip64-current.config, config/kernel/linux-rockchip64-edge.config, config/kernel/linux-spacemit-current.config, config/kernel/linux-spacemit-edge.config, config/kernel/linux-sunxi-current.config, config/kernel/linux-sunxi-edge.config, config/kernel/linux-sunxi64-current.config, config/kernel/linux-sunxi64-edge.config
CONFIG_F2FS_FS changed from built-in (y) to module (m) across 12 kernel config files
Overlay FS and EROFS module conversion
config/kernel/linux-filogic-current.config, config/kernel/linux-filogic-legacy.config, config/kernel/linux-rockchip64-current.config
CONFIG_OVERLAY_FS changed from y to m; CONFIG_EROFS_FS changed from y to m (filogic files)
EROFS module-only configurations
config/kernel/linux-filogic-edge.config
CONFIG_EROFS_FS changed from y to m
Rockchip64-current additional changes
config/kernel/linux-rockchip64-current.config
CONFIG_UNICODE changed from y to m; CONFIG_R8712U (staging) removed; CONFIG_CRYPTO_CRC32 added (y)
Build script updates
lib/functions/compilation/armbian-kernel.sh
EROFS_FS added to module options in armbian_kernel_config__enable_docker_support function
Error message clarification
lib/functions/configuration/main-config.sh
Error message updated to specify "host kernel configuration" instead of "kernel configuration"

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • rpardini
  • chraac
  • EvilOlaf
  • igorpecovnik
  • teknoid

Poem

🐰 Modules leap where kernels stood,
F2FS and friends now modular, good!
EROFS joins the Docker dance,
Configs shift with each new chance. 📦✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: converting EROFS, overlayfs, and F2FS from built-in to modules across kernel config files.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 1e7ef9d and a4edef5.

📒 Files selected for processing (17)
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-meson64-current.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-sunxi-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-sunxi64-edge.config
  • lib/functions/compilation/armbian-kernel.sh
  • lib/functions/configuration/main-config.sh
🧰 Additional context used
🧠 Learnings (26)
📓 Common learnings
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-17T05:09:02.306Z
Learning: In the Armbian build system, kernel patches (e.g., in patch/kernel/archive/sunxi-6.18/patches.armbian/) contain device tree overlays and other code that have existed for years and are maintained/ported across kernel versions. When reviewing PRs that modify these patch files, focus on the actual changes being made (e.g., Makefile fixes, new additions) rather than reviewing the entire existing content within the patch as if it were new code. The patch file contents are existing, stable code unless explicitly modified in the PR diff.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-199
Timestamp: 2025-09-25T18:37:00.330Z
Learning: In PR armbian/build#8661, line 235 of lib/functions/compilation/armbian-kernel.sh already contains the corrected comment "BPF link support for netfilter hooks" for NETFILTER_BPF_LINK, not the misleading "BPF_SYSCALL" comment that was flagged during review.
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-12-19T13:56:45.124Z
Learning: When reviewing kernel or u-boot version bump PRs in the Armbian build system, check if patches existed in previous kernel version directories (e.g., sunxi-6.12, sunxi-6.13) before describing them as new features. If a patch and the majority of its contents existed previously with no major functionality changes, focus the review on the actual changes: the version bump itself and patch compatibility adjustments. Don't describe existing patches being ported/maintained across versions as new features or drivers—this is misleading. The patches are existing code being re-aligned to work with the new upstream version.
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:805-825
Timestamp: 2025-07-27T15:53:30.629Z
Learning: In the Armbian build system, kernel configurations prioritize broad hardware compatibility over optimization concerns. Even when including numerous legacy/obsolete drivers causes technical issues like increased initramfs size and slower enumeration, the project philosophy is to "appease the masses" by ensuring maximum device compatibility rather than optimizing for specific use cases.
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In Linux kernel configuration for the Armbian build system, when CONFIG_EXT2_FS and CONFIG_EXT3_FS are both set to =y (built-in), CONFIG_EXT4_FS is automatically enabled/hard-coded and does not need to be explicitly specified in the configuration file. This dependency relationship means that EXT4 support is implicitly included when EXT2 and EXT3 are built into the kernel.
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.
📚 Learning: 2025-08-30T06:56:33.372Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T06:56:33.372Z
Learning: In Armbian kernel configuration, the BTRFS configuration logic preserves existing settings (whether built-in 'y' or module 'm') and only sets BTRFS_FS to module when it was previously disabled or not set, achieving "allow but not require" flexibility while maintaining backward compatibility.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-09-22T21:52:01.225Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-201
Timestamp: 2025-09-22T21:52:01.225Z
Learning: The kernel_config_set_m function in lib/functions/compilation/armbian-kernel.sh preserves existing 'y' (built-in) settings and only sets options to 'm' (module) when they are not already built-in, achieving "prefer modules but allow built-ins" behavior.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In the Armbian build system's kernel configuration, when CONFIG_EXT2_FS=y and CONFIG_EXT3_FS=y are both set to built-in, EXT4 filesystem support becomes automatically available/hard-coded without requiring an explicit CONFIG_EXT4_FS line in the configuration file. This is specific to how Armbian handles kernel configuration and differs from typical standalone Linux kernel configuration behavior.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • lib/functions/configuration/main-config.sh
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-08-30T04:13:16.457Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-30T04:13:16.457Z
Learning: Armbian kernel configuration files like linux-filogic-current.config are autogenerated overlays on top of arch defconfig. Comments added manually will be lost during future updates by maintainers, and explicit "CONFIG_OPTION is not set" statements aren't needed for mutually exclusive options since these are overlay configs that only specify changes from the base configuration.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-10-22T07:56:19.424Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:56:19.424Z
Learning: In Linux kernel configuration, some `=y` (builtin) options are infrastructure or feature flags that enable subsystems or features for modular drivers, rather than directly compiling code into the kernel. For example, in Armbian wireless configs, options like CONFIG_SPARD_WLAN_SUPPORT=y, CONFIG_SC23XX=y, CONFIG_WCN_BSP_DRIVER_BUILDIN=y, CONFIG_UNISOC_WIFI_PS=y are module infrastructure/feature enablers, while the actual drivers (CONFIG_WLAN_UWE5621=m, CONFIG_WLAN_UWE5622=m) remain as loadable modules. These infrastructure options don't cause kernel bloat.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-09-27T21:47:58.020Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-bcm2711-edge.config:859-861
Timestamp: 2025-09-27T21:47:58.020Z
Learning: In the Armbian build system, kernel configuration files in config/kernel/ are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-09-27T21:49:55.796Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-current.config:78-80
Timestamp: 2025-09-27T21:49:55.796Z
Learning: In the Armbian build system, kernel configuration files are generated through an automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-09-27T21:50:04.845Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sm8250-edge.config:80-82
Timestamp: 2025-09-27T21:50:04.845Z
Learning: In the Armbian build system, kernel configuration files are generated through this automated process: taking previous config → applying scripted changes from armbian-kernel.sh → running kernel's `make oldconfig` → processing by Armbian machinery back into config files. This automated process properly handles kernel configuration dependencies and reduces the likelihood of manual configuration errors.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-07-27T13:03:53.146Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2664-2671
Timestamp: 2025-07-27T13:03:53.146Z
Learning: In Linux kernel configuration for the Armbian build system, when CONFIG_EXT2_FS and CONFIG_EXT3_FS are both set to =y (built-in), CONFIG_EXT4_FS is automatically enabled/hard-coded and does not need to be explicitly specified in the configuration file. This dependency relationship means that EXT4 support is implicitly included when EXT2 and EXT3 are built into the kernel.

Applied to files:

  • config/kernel/linux-sunxi-current.config
  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-11-02T20:49:56.719Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8849
File: config/boards/radxa-e54c.csc:14-28
Timestamp: 2025-11-02T20:49:56.719Z
Learning: In Armbian board configuration files (config/boards/*.conf, *.csc, etc.), do not use kernel_config_set, kernel_config_set_m, kernel_config_set_y, or custom_kernel_config__* functions to modify kernel configuration. Kernel configuration is associated with LINUXFAMILY/BOARDFAMILY, not individual BOARD. Board-specific kernel modifications cause inconsistency in kernel packages published to the apt repository because boards within a family share the same kernel packages. Kernel configuration changes must be made in the appropriate kernel config file (e.g., config/kernel/linux-*-*.config) or in family configuration files (config/sources/families/*.conf, *.inc) instead.

Applied to files:

  • config/kernel/linux-filogic-edge.config
  • config/kernel/linux-meson64-edge.config
  • lib/functions/configuration/main-config.sh
  • config/kernel/linux-meson64-current.config
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-spacemit-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-08-11T22:00:13.411Z
Learnt from: rafayahmed317
Repo: armbian/build PR: 8484
File: config/kernel/linux-rk35xx-vendor.config:904-906
Timestamp: 2025-08-11T22:00:13.411Z
Learning: In the linux-rk35xx-vendor kernel, the LTE driver options (CONFIG_LTE, CONFIG_LTE_RM310, CONFIG_LTE_EM05) are defined as boolean in drivers/net/lte/Kconfig and cannot be built as modules - they must be either built-in (=y) or disabled.

Applied to files:

  • config/kernel/linux-filogic-edge.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-03-31T12:57:13.880Z
Learnt from: libiunc
Repo: armbian/build PR: 8033
File: config/kernel/linux-starfive2-vendor.config:43-43
Timestamp: 2025-03-31T12:57:13.880Z
Learning: For StarFive2 platform kernel configurations, maintain alignment with vendor-provided configurations rather than modifying security settings like SECCOMP. This ensures hardware compatibility as intended by the manufacturer.

Applied to files:

  • config/kernel/linux-meson64-edge.config
📚 Learning: 2025-09-27T21:50:15.915Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8678
File: config/kernel/linux-sunxi64-current.config:94-94
Timestamp: 2025-09-27T21:50:15.915Z
Learning: When kernel config files are generated through Armbian's automated process (previous config → armbian-kernel.sh changes → make oldconfig → Armbian machinery processing), manual config file edits are not appropriate since they would be overwritten. Deprecated option handling should be implemented in the automated tooling instead.

Applied to files:

  • config/kernel/linux-meson64-edge.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-sunxi64-current.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
  • config/kernel/linux-sunxi-edge.config
📚 Learning: 2025-12-18T23:40:41.627Z
Learnt from: rpardini
Repo: armbian/build PR: 9101
File: lib/functions/image/compress-checksum.sh:44-48
Timestamp: 2025-12-18T23:40:41.627Z
Learning: In the Armbian build framework, scripts run with set -e, so a non-zero exit status will abort the script. During reviews, assume failures will stop execution unless explicitly handled. Verify that commands that must fail are checked, errors are propagated, and any critical steps have proper error handling (e.g., using pipefail where appropriate, checking exit codes, and not masking failures).

Applied to files:

  • lib/functions/configuration/main-config.sh
  • lib/functions/compilation/armbian-kernel.sh
📚 Learning: 2025-08-02T05:46:10.664Z
Learnt from: EvilOlaf
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-08-02T05:46:10.664Z
Learning: In the Armbian build system, the KERNEL_CONFIGURE=yes switch is deprecated. The recommended approach for kernel configuration is now to use the `kernel-config` build command, which provides a more structured way to configure kernel options.

Applied to files:

  • config/kernel/linux-meson64-current.config
  • config/kernel/linux-sunxi64-edge.config
  • config/kernel/linux-spacemit-current.config
  • config/kernel/linux-sunxi64-current.config
📚 Learning: 2025-09-22T21:52:01.225Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:194-201
Timestamp: 2025-09-22T21:52:01.225Z
Learning: In lib/functions/compilation/armbian-kernel.sh, the kernel_config_modifying_hashes array is not universally required for all kernel configuration functions - some functions like armbian_kernel_config__netkit() operate without it, and adding entries with '=m' would be incorrect when the actual result might be '=y' for options already built-in.

Applied to files:

  • config/kernel/linux-meson64-current.config
  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-rockchip64-edge.config
  • config/kernel/linux-rockchip-edge.config
  • config/kernel/linux-rockchip-current.config
  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-09-22T21:59:36.334Z
Learnt from: tabrisnet
Repo: armbian/build PR: 8661
File: lib/functions/compilation/armbian-kernel.sh:200-200
Timestamp: 2025-09-22T21:59:36.334Z
Learning: Functions named with the pattern `armbian_kernel_config__*` in lib/functions/compilation/armbian-kernel.sh are automatically discovered and invoked by Armbian's extension system via metaprogramming using `compgen -A function`, without requiring explicit registration or calls.

Applied to files:

  • lib/functions/compilation/armbian-kernel.sh
📚 Learning: 2025-10-26T12:56:29.185Z
Learnt from: rpardini
Repo: armbian/build PR: 8820
File: config/sources/families/include/meson64_common.inc:51-53
Timestamp: 2025-10-26T12:56:29.185Z
Learning: In the Armbian build framework, scripts/config correctly handles kernel configuration option names both with and without the CONFIG_ prefix, so opts_m+=("CONFIG_RTL8822CS") and opts_m+=("RTL8822CS") are both valid and will work correctly.

Applied to files:

  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-09-14T06:19:06.828Z
Learnt from: amazingfate
Repo: armbian/build PR: 8619
File: config/kernel/linux-rockchip-vendor.config:0-0
Timestamp: 2025-09-14T06:19:06.828Z
Learning: CONFIG_ZSWAP has an implicit kernel-level dependency on CONFIG_SWAP, so when CONFIG_ZSWAP=y is set in Armbian overlay configs, CONFIG_SWAP gets automatically enabled during kernel build configuration processing, even if not explicitly specified in the overlay file.

Applied to files:

  • lib/functions/compilation/armbian-kernel.sh
  • config/kernel/linux-filogic-legacy.config
  • config/kernel/linux-filogic-current.config
  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-10-03T11:42:46.660Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8705
File: .github/workflows/rewrite-kernel-configs.yml:96-169
Timestamp: 2025-10-03T11:42:46.660Z
Learning: In the Armbian build repository's kernel config rewrite workflow (.github/workflows/rewrite-kernel-configs.yml), deletion of kernel config files does not need to be handled. The workflow intentionally only captures ACMR (added/copied/modified/renamed) changes and does not need to propagate deletions to the aggregator.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-07-27T15:54:35.119Z
Learnt from: pyavitz
Repo: armbian/build PR: 8421
File: config/kernel/linux-sunxi64-edge.config:2168-2173
Timestamp: 2025-07-27T15:54:35.119Z
Learning: In the Armbian build system, staging 802.11 drivers like CONFIG_RTLLIB, CONFIG_RTL8192E, CONFIG_R8712U are kept enabled alongside upstream rtw88 drivers because rtw88 is still under development and suffers from reliability issues. The staging drivers serve as necessary fallbacks when upstream drivers are unstable, prioritizing working hardware over avoiding technical conflicts.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-10-22T07:51:53.015Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8789
File: config/kernel/linux-sunxi64-edge.config:839-839
Timestamp: 2025-10-22T07:51:53.015Z
Learning: In Armbian's wireless driver configuration, CONFIG_RK_WIFI_DEVICE_* options are Rockchip-specific device registration settings, while CONFIG_WLAN_UWE* are the actual cross-platform driver modules for UWE5622 wireless chips. The UWE5622 chip (manufactured by Unisoc/Spreadtrum) is used on multiple Allwinner boards including Orange Pi Zero 2/2W/3 and Orange Pi 3 LTS, so CONFIG_WLAN_UWE5621/5622 along with Unisoc infrastructure options (CONFIG_SPARD_WLAN_SUPPORT, CONFIG_SC23XX, CONFIG_UNISOC_WIFI_PS, CONFIG_WCN_BSP_DRIVER_BUILDIN) are correct in sunxi64 kernel configs.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-10-23T19:48:42.980Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-sm8250-edge.config:498-501
Timestamp: 2025-10-23T19:48:42.980Z
Learning: For Armbian EDGE kernel configs, CONFIG_ATH12K=m alone is sufficient for PCI-based Wi-Fi 7 devices (e.g., WCN785x/QCN9274). A separate CONFIG_ATH12K_PCI option is not required, as confirmed by maintainer testing.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-07-22T07:02:58.863Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8408
File: lib/functions/compilation/patch/drivers_network.sh:258-260
Timestamp: 2025-07-22T07:02:58.863Z
Learning: In the Armbian build system, RTL8811CU/RTL8821C wireless driver deprecation starting with kernel 6.12+ is not due to build failures but because support is being integrated into the upstream RTW88 driver. The deprecated drivers still build and function correctly during the transition period.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
📚 Learning: 2025-10-23T19:50:25.841Z
Learnt from: igorpecovnik
Repo: armbian/build PR: 8812
File: config/kernel/linux-rockchip-edge.config:730-733
Timestamp: 2025-10-23T19:50:25.841Z
Learning: For ATH12K wireless driver configuration: only CONFIG_ATH12K=m needs to be explicitly set in kernel config files. The kernel build system automatically selects CONFIG_ATH12K_PCI when both CONFIG_ATH12K and CONFIG_PCI are enabled. This pattern is consistent across all Armbian edge kernel configs. CONFIG_ATH12K_PCI does not need to be explicitly added to config files.

Applied to files:

  • config/kernel/linux-rockchip64-current.config
🧬 Code graph analysis (1)
lib/functions/configuration/main-config.sh (1)
lib/functions/logging/traps.sh (1)
  • exit_with_error (173-196)
🔇 Additional comments (21)
config/kernel/linux-sunxi-current.config (1)

2685-2687: F2FS switched to module is consistent; just verify root‑on‑F2FS flows

Making CONFIG_F2FS_FS=m while keeping EXT4_FS/BTRFS_FS builtin matches the “optional FS as module” pattern used elsewhere. This should be fine for non‑root F2FS usage, but any images that use F2FS as the root filesystem now depend on f2fs.ko being present in the initrd and loaded early enough.

Please confirm the image build/initrd tooling covers that for F2FS‑root targets. Based on learnings, this keeps the “prefer modules but allow builtins” behavior consistent.

config/kernel/linux-sunxi64-edge.config (1)

2685-2691: F2FS as a module fits the existing FS layout; confirm F2FS‑root boot path

Switching CONFIG_F2FS_FS to m while leaving EXT2/EXT3 (and thus EXT4 via dependency) and BTRFS builtin keeps F2FS in the “optional FS via module” bucket. That’s consistent with other Armbian configs and avoids bloating the core kernel.

As with sunxi‑current, please verify that any configurations using F2FS as the root filesystem have f2fs.ko in the initrd and loaded early enough. Based on learnings, this aligns with the existing “prefer modules” strategy.

config/kernel/linux-spacemit-edge.config (1)

1639-1645: Consistent F2FS→module change; root FS behavior unchanged for ext2/3/4/XFS/BTRFS

Setting CONFIG_F2FS_FS=m while keeping EXT2/EXT3/EXT4, XFS and BTRFS builtin keeps F2FS in the optional‑module category for spacemit, which matches the pattern in other families and shouldn’t affect existing ext4/XFS/BTRFS root deployments.

If you later ship F2FS‑root images for spacemit, double‑check that their initrd includes and loads f2fs.ko early in the boot sequence.

config/kernel/linux-filogic-current.config (1)

696-696: OverlayFS and EROFS as modules look fine; verify initrd coverage for EROFS+overlay roots

Changing both CONFIG_OVERLAY_FS and CONFIG_EROFS_FS from builtin to m aligns with the “core FS builtin, optional FS as modules” approach already used for BTRFS and F2FS on filogic, while keeping EXT4 as a solid builtin root choice. Based on learnings about Armbian’s kernel_config_set_m behavior, this is consistent with the existing “prefer modules but allow builtins” model.

For any images that boot an EROFS root (possibly with an overlay root stack), please ensure the initrd includes and loads erofs.ko and overlay.ko early so that root mounting semantics remain unchanged.

Also applies to: 725-725

config/kernel/linux-sunxi64-current.config (1)

2713-2718: F2FS switched to module on sunxi64-current looks fine

Moving CONFIG_F2FS_FS to m aligns with the “optional F2FS rootfs via initrd” approach and matches the PR’s modular-F2FS direction; EXT2/3 and BTRFS remain built-in, so no regression there.

lib/functions/configuration/main-config.sh (1)

607-631: Clarified F2FS host-kernel config error message is accurate

Updating the message to explicitly reference the host kernel configuration matches what the code actually inspects and should reduce confusion without altering behavior.

config/kernel/linux-spacemit-current.config (1)

1159-1167: Spacemit F2FS made modular in line with other families

Setting CONFIG_F2FS_FS=m while leaving EXT2/3 and BTRFS built-in follows the same modular-F2FS strategy as the other configs in this PR, with no obvious downsides for non-F2FS-root setups.

lib/functions/compilation/armbian-kernel.sh (1)

351-430: Adding EROFS_FS to Docker kernel opts is consistent and safe

Including EROFS_FS in opts_m under armbian_kernel_config__enable_docker_support matches the move to modular EROFS in the defconfigs and follows the existing “prefer modules but keep existing =y” behavior of the config helpers.

config/kernel/linux-rockchip-edge.config (1)

1628-1636: Rockchip-edge F2FS modularization matches the overall FS strategy

Changing CONFIG_F2FS_FS to m brings Rockchip-edge in line with the other families and the Docker/optional-filesystem approach, while existing built-in filesystems still cover default rootfs scenarios.

config/kernel/linux-meson64-edge.config (1)

3751-3751: F2FS switched to module – verify root‑on‑F2FS boot paths

Setting CONFIG_F2FS_FS=m aligns with Armbian’s “prefer modules but allow built‑ins” pattern and mirrors how BTRFS is handled. Please double‑check that:

  • Images with an F2FS rootfs for meson64 edge include the F2FS module in the initramfs, and
  • There’s no supported scenario here that relies on a kernel without initrd but with an F2FS root partition.

If those cases are covered, the change looks fine.

Based on learnings, this matches the existing BTRFS/module strategy.

config/kernel/linux-rockchip-current.config (1)

1654-1654: Rockchip current: F2FS as module – ensure initramfs covers F2FS rootfs

CONFIG_F2FS_FS moving to m is consistent with the modular FS direction in this PR and with how other filesystems are handled.

Please confirm for the rockchip current kernels that:

  • F2FS root filesystems are only supported when an initramfs is used, and
  • The initramfs tooling reliably pulls in f2fs so upgrades won’t break existing F2FS‑root installs.

If that’s already guaranteed, no further change seems necessary.

Based on learnings, this follows the established “allow but not require” pattern for filesystems.

config/kernel/linux-meson64-current.config (1)

3806-3806: Meson64 current: F2FS modularization – check parity with edge images

Switching CONFIG_F2FS_FS to m for meson64 current keeps this family aligned with the new F2FS‑as‑module policy.

Please verify:

  • Meson64 current images that use F2FS for root get the F2FS module into initramfs, mirroring the ext4‑as‑module setup, and
  • There’s no supported meson64‑current configuration that expects F2FS root without an initrd.

Assuming those conditions hold, this change looks good.

Based on learnings, this is consistent with the automated, module‑oriented kernel config flow.

config/kernel/linux-filogic-edge.config (1)

731-731: LGTM: EROFS converted to module

The change is consistent with the PR's broader shift of filesystem support to modules. Note that EROFS_FS_ZIP remains disabled (line 732), which is appropriate for the module configuration.

Based on learnings, kernel configs are autogenerated through Armbian's automated process.

config/kernel/linux-filogic-legacy.config (2)

556-556: LGTM: OverlayFS converted to module

The change from built-in to module is correct. Note that CONFIG_OVERLAY_FS_XINO_AUTO=y (line 557) appropriately remains enabled as a dependency.

Based on learnings, these configs are autogenerated through the Armbian build process.


586-586: LGTM: EROFS converted to module

The change aligns with the PR objective to convert EROFS to module support across multiple platforms.

Based on learnings, kernel configs are autogenerated through the Armbian build process.

config/kernel/linux-rockchip64-edge.config (1)

3153-3153: LGTM: F2FS converted to module

The change from built-in to module is correct. F2FS dependencies (SECURITY, CHECK_FS, COMPRESSION at lines 3154-3156) are properly maintained.

Based on learnings, these configs are autogenerated through the Armbian build process.

config/kernel/linux-sunxi-edge.config (1)

2665-2665: LGTM: F2FS converted to module

The change from built-in to module is consistent with the PR objective. Ensure all platform configs (sunxi, filogic, rockchip, meson64, spacemit families across current/edge variants) have been updated consistently.

Likely an incorrect or invalid review comment.

config/kernel/linux-rockchip64-current.config (4)

3360-3360: UNICODE module change looks correct with automatic dependency handling.

Converting CONFIG_UNICODE to a module aligns with the filesystem modularization changes (F2FS, OVERLAY_FS). The kernel module dependency system should automatically load the UNICODE module when required by F2FS or other filesystems.

This change was likely generated through Armbian's automated kernel config process (previous config → armbian-kernel.sh changes → make oldconfig), which properly handles dependencies.

Based on learnings, Armbian kernel configurations are generated through an automated process that handles dependencies correctly.


3212-3213: This review comment is based on incorrect assumptions about overlayfs usage in Armbian. The codebase shows that overlayfs is not boot-critical for rockchip64:

  1. overlayfs_wrapper is build-time only — It runs on the host system during image compilation, not on the target OS. It directly calls mount -t overlay and doesn't depend on the target kernel's CONFIG_OVERLAY_FS setting.

  2. Runtime overlayfs is optional — The only production usage in the final OS is profile-sync-daemon (psd) configuration. This script checks for overlayfs availability but gracefully handles its absence; psd functions without it.

  3. CONFIG_OVERLAY_FS=m is standard across Armbian — rockchip64 (current/edge) consistently uses =m, matching rockchip and other generic variants. The rk3588-specific configs use =y, but that's a distinct high-end variant with different requirements. This is not an anomaly.

  4. No boot-critical overlayfs dependencies exist — Docker/containers are not primary use cases for rockchip64 SBCs, and there is no evidence of live boot or configuration overlay system depending on built-in overlayfs.

The modular configuration is safe and follows established Armbian patterns across 70+ kernel configs.

Likely an incorrect or invalid review comment.


3427-3427: The review comment's core claim is incorrect. Git history shows that CONFIG_CRYPTO_CRC32=y was intentionally added in commit a4edef5 (which created this new configuration file), not as an artifact from an automatic kernel config rewrite. The commit message explicitly states "kernel configs - enable EROFS as module, ditto overlayfs & F2FS," indicating CONFIG_CRYPTO_CRC32 was deliberately included alongside the filesystem modularizations, likely as a dependency for the modular filesystems.

Likely an incorrect or invalid review comment.


3191-3194: F2FS_FS=m aligns with established Armbian configuration standard.

Setting CONFIG_F2FS_FS=m matches the existing pattern used across most Armbian current kernel configurations (mt7623, rockchip, sunxi, meson64, spacemit, filogic, thead, uefi variants). If module-based F2FS caused rootfs boot failures, those 15+ boards would already exhibit the problem. Armbian passes rootfstype directly via kernel parameters without relying on initrd for filesystem module discovery.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size/small PR with less then 50 lines 02 Milestone: First quarter release Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Framework Framework components labels Dec 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

02 Milestone: First quarter release Framework Framework components Hardware Hardware related like kernel, U-Boot, ... Needs review Seeking for review size/small PR with less then 50 lines

Development

Successfully merging this pull request may close these issues.

1 participant