Armbian logo

# 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](https://github.com/armbian/imager/releases) — the easiest way to download and flash Armbian to an SD card or USB drive. Available for Linux, macOS and Windows. ## Quick Start ```bash git clone https://github.com/armbian/build cd build ./compile.sh ``` Build demonstration The entrypoint `compile.sh` dispatches into the framework in `lib/`. Build-time options can be passed on the command line, e.g.: ```bash ./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 (`sudo` or 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 in `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 | | `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`](config/boards/README.md) for the full list of per-board variables (e.g. `BOARD_NAME`, `BOARDFAMILY`, `BOOTCONFIG`, `KERNEL_TARGET`, `SERIALCON`, `MODULES`, `DEFAULT_OVERLAYS`). Release/package base statuses used under `config/distributions/` are defined separately in [`config/distributions/README.md`](config/distributions/README.md). ## Built With - **Bash** — build framework in `lib/`, entrypoint `compile.sh`, most of `extensions/` and the shell portions of board/family configs - **Python** — developer and build helpers under `lib/tools/` (e.g. `patching.py`, `aggregation.py`, `lib/tools/info/`) - **Make / Kbuild** — kernel and U-Boot build systems invoked by the framework; overlay `Makefile`s under `patch/kernel/archive/*/overlay/` - **Device Tree Source** (`.dts` / `.dtsi` / `.dtso`) — board/overlay sources carried under `patch/` - **GitHub Actions** (YAML) — repository automation under `.github/workflows/` - **Patch series** — thousands of `*.patch` files under `patch/` 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`](https://actions.armbian.com/?repo=build)** Self-hosted runner setup notes live in [`.github/workflows/README.md`](.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`](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](https://docs.armbian.com/Developer-Guide_Overview/)** — building, configuring and customizing - **[Website](https://www.armbian.com)** — news, features and supported boards - **[Blog](https://blog.armbian.com)** — development updates and technical articles - **[Forums](https://forum.armbian.com)** — community support and discussion ## Support ### Community Forums 👉 [forum.armbian.com](https://forum.armbian.com) ### Real-time chat 👉 [Community chat (IRC / Discord)](https://docs.armbian.com/Community_IRC/) ### Paid consultation For commercial projects, guaranteed response times, or advanced needs, paid support is available from Armbian maintainers. 👉 [Contact us](https://www.armbian.com/contact) ## Contributors Thank you to everyone who has contributed to Armbian. Contributors See also [`CREDITS.md`](CREDITS.md). ## Armbian Partners Our [partnership program](https://forum.armbian.com/subscriptions) supports Armbian's development and community. Learn more about [our Partners](https://armbian.com/partners). ## License Released under the **GNU General Public License v2.0**. See [`LICENSE`](LICENSE) for the full text.