The official build framework for the Armbian Linux distribution. This repository contains the complete toolchain and scripts required to compile custom OS images from source, including kernel configuration, U-Boot handling, and board-specific tweaks for various ARM and ARM64 single-board computers.
Access rate limit exceeded. Please log in to continue.
Armbian Linux Build Framework
Purpose of This Repository
The Armbian Linux Build Framework builds customizable OS images based on Debian or Ubuntu for single-board computers (SBCs) and other embedded devices. It assembles the kernel, bootloader, firmware, device trees and root filesystem into a reproducible image, with per-board and per-family configuration.
Looking for prebuilt images? Use Armbian Imager — the easiest way to download and flash Armbian to an SD card or USB drive. Available for Linux, macOS and Windows.
Quick Start
git clone https://github.com/armbian/build
cd build
./compile.sh
The entrypoint compile.sh sources lib/single.sh and dispatches into the framework in lib/. Build-time options can be passed on the command line, e.g.:
./compile.sh BOARD=orangepi5 BRANCH=current RELEASE=trixie BUILD_MINIMAL=yes KERNEL_CONFIGURE=no
Build Host Requirements
Hardware
- RAM: ≥ 8 GB (less with
KERNEL_BTF=no) - Disk: ~50 GB free space
- Architecture: x86_64, aarch64 or riscv64
Operating System
- Native builds: Armbian / Debian 13 (Trixie)
- Containerized: any Docker-capable Linux
- Windows: WSL2 with Armbian / Debian 13 (Trixie)
Software
- Superuser privileges (
sudoor root) - An up-to-date host (outdated Docker or other tooling can cause failures)
Repository Layout
| Path | Contents |
|---|---|
compile.sh |
Build entrypoint; sources lib/single.sh and invokes the CLI |
lib/ |
Core build framework (Bash functions, Python helpers under lib/tools/) |
config/ |
Board, family, distribution, kernel and CLI configuration |
config/boards/ |
One file per board; the extension marks its support status (see below) |
config/distributions/ |
Supported Debian/Ubuntu release metadata |
config/cli/ |
CLI package selections per release |
config/its/ |
Image Tree Source files for device tree builder |
patch/ |
Kernel, U-Boot and ATF patch sets organized by family/version |
packages/ |
In-tree package sources, blobs and BSP material |
extensions/ |
Optional build extensions enabled via ENABLE_EXTENSIONS= |
tools/ |
Developer helpers (mk_format_patch, unifying_configs) |
action.yml |
GitHub Action definition ("Rebuild Armbian") |
Board config extensions
Files under config/boards/ use an extension that signals support status:
| Extension | Meaning |
|---|---|
.conf |
Standard board configuration |
.csc |
Community maintained / unstable (no active Armbian maintainer) |
.wip |
Work in progress |
.eos |
End of life |
.tvb |
TV box, community supported (no Armbian maintainer) |
See config/boards/README.md for the full list of per-board variables (e.g. BOARD_NAME, BOARD_VENDOR, BOARDFAMILY, BOOTCONFIG, KERNEL_TARGET, SERIALCON, MODULES, DEFAULT_OVERLAYS).
Release/package base statuses used under config/distributions/ are defined separately in config/distributions/README.md.
Built With
- Bash — build framework in
lib/, entrypointcompile.sh, most ofextensions/, and the shell portions of board/family configs - Python — developer and build helpers under
lib/tools/ - Make / Kbuild — kernel and U-Boot build systems invoked by the framework; overlay
Makefiles underpatch/kernel/archive/*/overlay/ - Device Tree Source (
.dts/.dtsi/.dtso) — board and overlay sources carried underpatch/ - GitHub Actions (YAML) — repository automation under
.github/workflows/ - Patch series — thousands of
*.patchfiles underpatch/applied to kernel, U-Boot and ATF trees
Continuous Integration
Repository automation (board/maintainer data sync, labeling, security scanning, artifact builds, mirroring, etc.) lives in .github/workflows/. For a live overview of workflow runs and status, see:
👉 CI overview for armbian/build
Self-hosted runner setup notes live in .github/workflows/README.md.
Using the GitHub Action
This repository publishes a composite action (action.yml, "Rebuild Armbian") that can be consumed from other workflows to build an image or a kernel.
| Input | Required | Default |
|---|---|---|
armbian_token |
yes | — |
armbian_target |
no | kernel |
armbian_board |
no | uefi-x86 |
armbian_branch |
no | main |
armbian_kernel_branch |
no | current |
armbian_release |
no | noble |
armbian_ui |
no | minimal |
armbian_compress |
no | sha,img,xz |
armbian_extensions |
no | (empty) |
armbian_artifacts |
no | build/output/images/ |
See action.yml for the full input list (versioning, signing, publishing and release-metadata options).
Contributing
Contributions are welcome. See CONTRIBUTING.md for how to report issues, how to prepare patches (including the ./compile.sh CREATE_PATCHES="yes" flow) and the PR / labeling conventions. The .github/labels.yml file is the source of truth for labels.
Resources
- Documentation — building, configuring and customizing
- Website — news, features and supported boards
- Blog — development updates and technical articles
- Forums — community support and discussion
Support
Community Forums
Real-time chat
👉 Community chat (IRC / Discord)
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.
See also CREDITS.md.
Armbian Partners
Our partnership program supports Armbian's development and community. Learn more about our Partners.
License
Released under the GNU General Public License v2.0. See LICENSE for the full text.
Introduction
The official build framework for the Armbian Linux distribution. This repository contains the complete toolchain and scripts required to compile custom OS images from source, including kernel configuration, U-Boot handling, and board-specific tweaks for various ARM and ARM64 single-board computers.

