* add hook to allow customizing before kernel make env creation * Hook runs in docker_cli_prepare_launch() just before DOCKER_EXTRA_ARGS is processed, allowing extensions to add Docker arguments with a more descriptive hook name than add_host_dependencies. * Extension: ccache-remote Enables ccache with remote Redis storage for sharing compilation cache across build hosts. Features: - Auto-discovery via Avahi/mDNS (ccache.local hostname) - Explicit Redis server configuration via CCACHE_REMOTE_STORAGE - Build statistics display at end of build (hit/miss/error rates) - Support for both Docker and native builds - Hooks for kernel and u-boot compilation environments Documentation includes server setup instructions with security warnings, client mDNS configuration, and cache sharing requirements. * uboot: fix ccache environment and add extension hook U-Boot build uses `env -i` which clears all environment variables. CCACHE_DIR and CCACHE_TEMPDIR were not explicitly passed to make, unlike kernel build (kernel-make.sh). This caused ccache to use default directory instead of configured Armbian one, breaking cache statistics and shared cache functionality. Changes: - Add CCACHE_DIR and CCACHE_TEMPDIR to uboot_make_envs - Add uboot_make_config hook for extensions (similar to kernel_make_config), allowing modification of environment variables before compilation * add long list of allowed ccache-related env vars * set permissions to ccache files RW for everyone if cache not private * ccache: add ccache_post_compilation hook for extensions * ccache-remote: use ccache_post_compilation hook instead of cleanup handler Show remote ccache stats after each compilation (kernel, uboot) via hook, instead of once at the end via cleanup handler. Stats now shown even on build failure. * ccache: show stats with safe arithmetic * ccache/uboot: improve code comments per review feedback - uboot.sh: clarify ARMBIAN=foe workaround for dual-compiler scenario - ccache-remote.sh: document that CCACHE_REDIS_CONNECT_TIMEOUT must be set before extension loads * ccache-remote: mask storage URLs in logs Mask CCACHE_REMOTE_STORAGE when emitting Docker env debug logs. * ccache-remote: extract ccache_inject_envs() helper to deduplicate passthrough loops Extract ccache_inject_envs() helper to deduplicate identical passthrough loops in kernel and uboot make config hooks. ccache-remote: rename functions to follow project naming conventions Rename get_redis_stats and mask_storage_url to ccache_get_redis_stats and ccache_mask_storage_url to follow project naming conventions. ccache-remote: mask credentials in debug log output for passthrough loops Mask CCACHE_REMOTE_STORAGE value through ccache_mask_storage_url() before logging in both Docker env and make env passthrough loops to avoid leaking credentials into build logs. * ccache-remote: add HTTP/WebDAV backend and DNS discovery * ccache-remote: move extension script into directory layout * ccache-remote: add server setup docs and config files * ccache-remote: validate Redis credentials in URLs * ccache-remote: document Redis auth options and safe passwords Add separate insecure config example for trusted networks. Recommend URL-safe hex passwords and update setup docs. * ccache-remote: improve Docker loopback handling and IPv6 host parsing |
||
|---|---|---|
| .github | ||
| .vscode | ||
| config | ||
| extensions | ||
| lib | ||
| packages | ||
| patch | ||
| tools | ||
| .coderabbit.yaml | ||
| .editorconfig | ||
| .gitignore | ||
| action.yml | ||
| compile.sh | ||
| CONTRIBUTING.md | ||
| CREDITS.md | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| shell.nix | ||
| VERSION | ||
Purpose of This Repository
The Armbian Linux Build Framework creates customizable OS images based on Debian or Ubuntu for single-board computers (SBCs) and embedded devices.
It builds a complete Linux system including kernel, bootloader, and root filesystem, giving you control over versions, configuration, firmware, device trees, and system optimizations.
The framework supports native, cross, and containerized builds for multiple architectures (x86_64, aarch64, armhf, riscv64) and is suitable for development, testing, production, or automation.
Looking for prebuilt images? Use Armbian Imager — the easiest way to download and flash Armbian to your SD card or USB drive. Available for Linux, macOS, and Windows.
Quick Start
git clone https://github.com/armbian/build
cd build
./compile.sh
Build Host Requirements
Hardware
- RAM: ≥8GB (less with
KERNEL_BTF=no) - Disk: ~50GB free space
- Architecture: x86_64, aarch64, or riscv64
Operating System
- Native builds: Armbian or Ubuntu 24.04 (Noble)
- Containerized: Any Docker-capable Linux
- Windows: WSL2 with Armbian/Ubuntu 24.04
Software
- Superuser privileges (
sudoor root) - Up-to-date system (outdated Docker or other tools can cause failures)
Resources
- Documentation — Comprehensive guides for building, configuring, and customizing
- Website — News, features, and board information
- Blog — Development updates and technical articles
- Forums — Community support and discussions
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines on reporting issues, submitting changes, and contributing code.
Support
Community Forums
Get help from users and contributors on troubleshooting, configuration, and development. 👉 forum.armbian.com
Real-time Chat
Join discussions with developers and community members on IRC or Discord. 👉 Community Chat
Paid Consultation
For commercial projects, guaranteed response times, or advanced needs, paid support is available from Armbian maintainers. 👉 Contact us
Contributors
Thank you to everyone who has contributed to Armbian!
Armbian Partners
Our partnership program supports Armbian's development and community. Learn more about our Partners.

