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.
Go to file
hongruichen 8733093045 Squashed commit of the following:
commit 3c141f345220f5f2018adc208c2cd1d815dde91f
Merge: 41f554c56 4df3bddd6
Author: chr <chraac@gmail.com>
Date:   Thu Apr 18 20:42:26 2024 +0800

    Merge branch 'main' into dev-zero2w

commit 41f554c56393b100aaf27a7d0704ed5da8c10cc2
Author: chraac <chraac@gmail.com>
Date:   Mon Apr 15 21:24:26 2024 +0800

    split uboot patch into separated files

commit 5fa75455b77c8b76a750683fcd30160e7e344bf0
Author: chraac <chraac@gmail.com>
Date:   Thu Apr 11 10:18:35 2024 +0800

    wip

commit 266fe2e5546c98c20de7a6b3773cc7fcbdbbb781
Merge: ed22ba9ab 27a07d918
Author: chr <chraac@gmail.com>
Date:   Sun Apr 14 23:41:23 2024 +0800

    Merge branch 'main' into dev-zero2w

commit ed22ba9ab27e883bf8bd760b228b2f041497fea7
Author: chraac <chraac@gmail.com>
Date:   Wed Apr 10 23:26:25 2024 +0800

    move the u-boot patch to common parent folder

commit 80c3b23897b9723f732f4509b2dd0987bc142585
Merge: e23673e08 aee4c495a
Author: chr <chraac@gmail.com>
Date:   Wed Apr 10 13:12:15 2024 +0800

    Merge branch 'main' into dev-zero2w

commit e23673e084d03d375f09eb625cd83af852779b51
Author: chraac <chraac@gmail.com>
Date:   Tue Apr 9 23:44:16 2024 +0800

    rename old i2c overlays

commit 50e895c2aaec3b36611f7968f970d7a4c09253c5
Author: chraac <chraac@gmail.com>
Date:   Mon Apr 8 21:10:22 2024 +0800

    add overlay to enable gpu

commit 88a2a780af0ff2c53456e4c110958b0a4fae2538
Author: chraac <chraac@gmail.com>
Date:   Mon Apr 8 10:21:04 2024 +0800

    rename overlay and add pin binding

commit c4cf96be5f7bac4c563f7f162a075833faa49eee
Author: chraac <chraac@gmail.com>
Date:   Sun Apr 7 22:09:48 2024 +0800

    change overlay prefix back to 'sun50i-h616'

commit 72d6bf25531d870b90648d1853525820ed42d24e
Author: chraac <chraac@gmail.com>
Date:   Sat Apr 6 22:36:28 2024 +0800

    bump uboot version

commit 346d27611e0c493353e608e15eaad4f59b4ec9bd
Author: chraac <chraac@gmail.com>
Date:   Fri Apr 5 12:38:38 2024 +0800

    add dto overlay with h618 prefix

commit 62a6d90574c91def7b7bbcfaf00f8c49a3210ef8
Merge: 85c909511 e83d1a0ea
Author: chr <chraac@gmail.com>
Date:   Thu Apr 4 22:24:19 2024 +0800

    Merge branch 'main' into dev-zero2w

commit 85c909511d12cf04a0354211766269a510e964c4
Author: chraac <chraac@gmail.com>
Date:   Wed Apr 3 12:36:25 2024 +0800

    remove driver skip

commit 498e177c8981b7c9038abb3a0cb4c0d6a2dcf6bc
Author: chraac <chraac@gmail.com>
Date:   Mon Apr 1 23:35:18 2024 +0800

    update board maintainer

commit acccdf70a2690475511f28132a350ecb7707b424
Merge: 8cc50e576 6ced5cc02
Author: chraac <chraac@gmail.com>
Date:   Mon Apr 1 15:29:47 2024 +0800

    Merge branch 'main' into dev-zero2w

commit 8cc50e5762be9ed9a085278ad1ce1b79cf83a937
Author: chraac <chraac@gmail.com>
Date:   Sun Mar 31 23:58:48 2024 +0800

    add sun50i-h618-cpu-dvfs.dtsi

commit 7e9f7a8757a811918ba0cf406994fb17b33a30d9
Author: chraac <chraac@gmail.com>
Date:   Sat Mar 30 15:28:00 2024 +0800

    format zero2w dts

commit b32369dd18cf93b65b83ee6360a6fdcb79434f18
Author: chraac <chraac@gmail.com>
Date:   Sat Mar 30 11:09:00 2024 +0800

    wip -> csc

commit 12b76decdfe6bfd7e7a9110f8c2607a1db4b7ef4
Author: chraac <chraac@gmail.com>
Date:   Fri Mar 29 18:41:49 2024 +0800

    enable hdmi

commit bad08f83d1f19f430593ae9794238d2001a97114
Author: chraac <chraac@gmail.com>
Date:   Fri Mar 29 16:59:42 2024 +0800

    compact the u-boot patch

commit 4ab2fb50ae3b865f3423e5134ac8fad3fa11e6a1
Author: chraac <chraac@gmail.com>
Date:   Fri Mar 29 12:07:08 2024 +0800

    add skip driver and add patch for kernel 6.7

commit 8747eb35b3fee796ea33a3e1b027b158dd6f6e10
Author: chraac <chraac@gmail.com>
Date:   Fri Mar 29 10:57:35 2024 +0800

    remove unused patch of u-boot

commit 3afa2cd61f31dfbd5a41d054331125dc2052bb16
Author: chraac <chraac@gmail.com>
Date:   Thu Mar 28 21:57:20 2024 +0800

    use single patch for u-boot

commit bb83471dc5413e498d0bd0191ee28a7e9f667fbc
Author: chraac <chraac@gmail.com>
Date:   Thu Mar 28 20:45:38 2024 +0800

    update u-boot tag

commit d26508f299225471fb143515ab5f83dc6e3246a6
Author: chraac <chraac@gmail.com>
Date:   Wed Mar 27 23:26:39 2024 +0800

    revert unused changes

commit 9292534923f1d8071ba8f4023925a38c46c5d810
Author: chraac <chraac@gmail.com>
Date:   Wed Mar 27 23:20:02 2024 +0800

    fix temp too high on boot, and do not override the BOOTPATCHDIR!!!

commit 4e6f5b36d121ddb6436214784084c059701cd371
Author: chraac <chraac@gmail.com>
Date:   Wed Mar 27 11:16:33 2024 +0800

    wip

commit ce8cf00ddf8f3c9f77013a53f23d63a111184db7
Author: chraac <chraac@gmail.com>
Date:   Fri Mar 22 10:53:25 2024 +0800

    fix overheat issue by increasing the critical temp

commit bce1034a48b02bd8184126009bdb10ab2a13d062
Author: chraac <chraac@gmail.com>
Date:   Thu Mar 21 21:16:22 2024 +0800

    remove unused changes

commit 6c356a8aa8de75b0a3dcd4eb9ee5b1c4b86cf5cb
Author: chraac <chraac@gmail.com>
Date:   Thu Mar 21 10:34:57 2024 +0800

    fix diff

commit dfe5cce8b5ce7717df4705adcbe1d0505350e640
Merge: ae1a5f22e 2cd46aceb
Author: chraac <chraac@gmail.com>
Date:   Thu Mar 21 10:13:59 2024 +0800

    Merge tag 'v24.2.1' into dev-zero2w

commit ae1a5f22eaddf52ccb6e1f11052a8d3b6df439e6
Author: chraac <chraac@gmail.com>
Date:   Wed Mar 20 23:23:45 2024 +0800

    simpilfy dts

commit abec25c16e89cda29ae8f39a34c5e29eebe51319
Author: chraac <chraac@gmail.com>
Date:   Wed Mar 20 18:54:43 2024 +0800

    fix gpu therminal error

commit fe377d22db11163fd22a25e348f0872f235f3634
Author: chraac <chraac@gmail.com>
Date:   Mon Mar 18 23:24:41 2024 +0800

    use patch for uboot

commit 639c9998a95114ea8bf094b9892a824f117119fd
Author: chraac <chraac@gmail.com>
Date:   Mon Mar 18 20:40:53 2024 +0800

    fix cpu freq

commit b8f661dad97739aa6c19cb608aebc5b0b652f140
Author: chraac <chraac@gmail.com>
Date:   Mon Mar 18 19:04:53 2024 +0800

    change dts according to orangepi offical repo

commit b6d8c78c667b5e969889e743073f216528542e3a
Author: chraac <chraac@gmail.com>
Date:   Sat Mar 16 12:03:43 2024 +0800

    booted!

commit 09cd4af6e5
Author: Igor Pecovnik <igor.pecovnik@gmail.com>
Date:   Thu Feb 29 19:03:07 2024 +0100

    Updated broken commit ids for Raspberry-pi kernel

commit 0e6911f30b
Author: Igor Pecovnik <igor.pecovnik@gmail.com>
Date:   Thu Feb 29 17:49:27 2024 +0100

    Create output/info early in host prepare for storing JSON files

commit 2630001fbd
Author: Gunjan Gupta <viraniac@gmail.com>
Date:   Mon Feb 12 21:44:40 2024 +0530

    Freeze git sources for v24.02 release

commit 20491dcb2e
Author: Gunjan Gupta <viraniac@gmail.com>
Date:   Mon Feb 12 21:43:49 2024 +0530

    Add ability to freeze git resources

commit 5084cd6eff
Merge: c72537f21 25b0a833f
Author: Igor Pecovnik <igor.pecovnik@gmail.com>
Date:   Thu Feb 29 17:09:57 2024 +0100

    Merge branch 'main' into v24.02

commit c72537f21f
Merge: 080d23446 fa3c79675
Author: Igor Pecovnik <igor.pecovnik@gmail.com>
Date:   Tue Feb 13 22:15:50 2024 +0100

    Merge branch 'main' into v24.02

commit 080d234467
Author: Igor Pecovnik <igor.pecovnik@gmail.com>
Date:   Sun Feb 11 00:13:37 2024 +0100

    Set version
2024-04-26 20:53:33 +08:00
.github Automatic board configs status synchronise 2024-04-26 15:10:43 +08:00
.vscode chore: edit code format config (#3578) 2022-03-26 12:41:25 +01:00
config Squashed commit of the following: 2024-04-26 20:53:33 +08:00
extensions add support for allwinner T527 Avaota-A1 (#6495) 2024-04-26 09:22:17 +02:00
lib Revert "python-tools: Bump pip dependencies to their latest versions" 2024-04-26 20:46:42 +08:00
packages armbian-hardware-optimize: add thought-provoking FIXMEs to inspire the next generation of tuners 2024-04-26 18:18:03 +08:00
patch Squashed commit of the following: 2024-04-26 20:53:33 +08:00
tools Unset hardcoded defaults from repo management tool 2024-03-07 12:09:29 +01:00
.editorconfig shellfmt/.editorconfig: enable trim whitespaces, run shellfmt, no actual code changes (#4849) 2023-02-23 09:24:41 +01:00
.gitignore Adjusting ORAS cache location, runners (#5129) 2023-05-02 11:08:34 +02:00
action.yml Fix for Github Action - don't use custom folder if it doesn't exists 2024-03-03 17:10:06 +01:00
compile.sh artifacts: download-artifact CLI. makes sure to only used local .deb, or download from OCI, never build 2023-05-16 20:09:47 +02:00
CONTRIBUTING.md Improve labeling system - refactor labeling logic (#5916) 2023-11-19 22:36:06 +01:00
CREDITS.md Add / modify (c) in bash scripts (#4922) 2023-03-09 18:30:40 +01:00
LICENSE Create LICENSE 2014-10-08 10:14:29 +02:00
README.md It's Mastodon 2024-04-22 12:06:32 +08:00
shell.nix Add compatibility for non-FHS 3.0 systems 2023-07-19 23:16:22 +02:00
VERSION Bump VERSION to 24.5.0-trunk 2024-02-20 08:49:19 +05:30

Armbian logo
Armbian Linux Build Framework

GitHub contributors Artifacts generation GitHub last commit (branch)

What does this project do?

  • Builds custom kernel, image or a distribution optimized for low-resource hardware,
  • Include filesystem generation, low-level control software, kernel image and bootloader compilation,
  • Provides a consistent user experience by keeping system standards across different platforms.

Getting started

Requirements for self hosted

  • x86_64 / aarch64 machine
  • at least 2GB of memory and ~35GB of disk space for VM, container or bare metal installation
  • Armbian / Ubuntu Jammy 22.04.x for native building or any Docker capable Linux for containerised
  • Windows 10/11 with WSL2 subsystem running Ubuntu Jammy 22.04.x
  • Superuser rights (configured sudo or root access).
  • Make sure your system is up-to-date! Outdated Docker binaries, for example, can cause trouble.

For stable branch use --branch=v23.11

apt-get -y install git
git clone --depth=1 --branch=main https://github.com/armbian/build
cd build
./compile.sh

Armbian logo

  • Interactive graphical interface.
  • Prepares the workspace by installing the necessary dependencies and sources.
  • It guides the entire process and creates a kernel package or a ready-to-use SD card image.

Build parameter examples

Show work-in-progress areas in interactive mode:

./compile.sh EXPERT="yes"

Build minimal CLI Armbian Jammy for Bananapi M5 with LTS kernel:

./compile.sh \
BOARD=bananapim5 \
BRANCH=current \
RELEASE=jammy \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_CONFIGURE=no

Build with GitHub actions: (advanced version)

name: "Build Armbian"
on:
  workflow_dispatch:
jobs:
  build-armbian:
    runs-on: ubuntu-latest
    steps:
      - uses: armbian/build@main
        with:
          armbian_token:     "${{ secrets.GITHUB_TOKEN }}"  # GitHub token
          armbian_release:   "jammy"                        # userspace
          armbian_target:    "build"                        # build=image, kernel=kernel
          armbian_board:     "bananapim5"                   # build target

Generated image will be uploaded to your repository release. Note: GitHub upload file limit is 2Gb.

More information:

Download prebuilt images releases

Point

Rolling

Compared with industry standards

Expand Check similarities, advantages and disadvantages compared with leading industry standard build software.
Function Armbian Yocto Buildroot
Target general purpose embedded embedded / IOT
U-boot and kernel compiled from sources compiled from sources compiled from sources
Board support maintenance   complete outside outside
Root file system Debian or Ubuntu based custom custom
Package manager APT any none
Configurability limited large large
Initramfs support yes yes yes
Getting started quick very slow slow
Cross compilation yes yes yes

Project structure

Expand
├── cache                                Work / cache directory
│   ├── aptcache                         Packages
│   ├── ccache                           C/C++ compiler
│   ├── docker                           Docker last pull
│   ├── git-bare                         Minimal Git
│   ├── git-bundles                      Full Git
│   ├── initrd                           Ram disk
│   ├── memoize                          Git status
│   ├── patch                            Kernel drivers patch
│   ├── pip                              Python
│   ├── rootfs                           Compressed userspaces
│   ├── sources                          Kernel, u-boot and other sources
│   ├── tools                            Additional tools like ORAS
│   └── utility
├── config                               Packages repository configurations
│   ├── targets.conf                     Board build target configuration
│   ├── boards                           Board configurations
│   ├── bootenv                          Initial boot loaders environments per family
│   ├── bootscripts                      Initial Boot loaders scripts per family
│   ├── cli                              CLI packages configurations per distribution
│   ├── desktop                          Desktop packages configurations per distribution
│   ├── distributions                    Distributions settings
│   ├── kernel                           Kernel build configurations per family
│   ├── sources                          Kernel and u-boot sources locations and scripts
│   ├── templates                        User configuration templates which populate userpatches
│   └── torrents                         External compiler and rootfs cache torrents
├── extensions                           Extend build system with specific functionality
├── lib                                  Main build framework libraries
│   ├── functions
│   │   ├── artifacts
│   │   ├── bsp
│   │   ├── cli
│   │   ├── compilation
│   │   ├── configuration
│   │   ├── general
│   │   ├── host
│   │   ├── image
│   │   ├── logging
│   │   ├── main
│   │   └── rootfs
│   └── tools
├── output                               Build artifact
│   └── deb                              Deb packages
│   └── images                           Bootable images - RAW or compressed
│   └── debug                            Patch and build logs
│   └── config                           Kernel configuration export location
│   └── patch                            Created patches location
├── packages                             Support scripts, binary blobs, packages
│   ├── blobs                            Wallpapers, various configs, closed source bootloaders
│   ├── bsp-cli                          Automatically added to armbian-bsp-cli package
│   ├── bsp-desktop                      Automatically added to armbian-bsp-desktopo package
│   ├── bsp                              Scripts and configs overlay for rootfs
│   └── extras-buildpkgs                 Optional compilation and packaging engine
├── patch                                Collection of patches
│   ├── atf                              ARM trusted firmware
│   ├── kernel                           Linux kernel patches
|   |   └── family-branch                Per kernel family and branch
│   ├── misc                             Linux kernel packaging patches
│   └── u-boot                           Universal boot loader patches
|       ├── u-boot-board                 For specific board
|       └── u-boot-family                For entire kernel family
├── tools                                Tools for dealing with kernel patches and configs
└── userpatches                          User: configuration patching area
    ├── lib.config                       User: framework common config/override file
    ├── config-default.conf              User: default user config file
    ├── customize-image.sh               User: script will execute just before closing the image
    ├── atf                              User: ARM trusted firmware
    ├── kernel                           User: Linux kernel per kernel family
    ├── misc                             User: various
    └── u-boot                           User: universal boot loader patches

Contribution

Want to help?

We always need those volunteering positions:

Just apply and follow!

Support

For commercial or prioritized assistance:

Free support:

Find free support via general project search engine, documentation, community forums or IRC/Discord. Remember that our awesome community members mainly provide this in a best-effort manner, so there are no guaranteed solutions.

Contact

Contributors

Thank you to all the people who already contributed to Armbian!

Also

Armbian Partners

Armbian's partnership program helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with our Partners:

Star History

Star History Chart

License

This software is published under the GPL-2.0 License license.