- 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.
- 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- 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.
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=noBuild 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.
- Building Armbian (how to start, how to automate)
- Build options (all build options)
- User configuration (how to add packages, patches, and override sources config)
- manually released standard supported builds (quarterly)
- automatically released staging and standard supported builds (daily)
- automatically released community maintained builds (weekly)
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 | 
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
We always need those volunteering positions:
Just apply and follow!
For commercial or prioritized assistance:
- Book an hour of professional consultation
- Consider becoming a project partner
- Contact us!
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.
- Forums for Participate in Armbian
- IRC: #armbianon Libera.chat / oftc.net
- Discord: https://discord.gg/armbian
- Follow @armbian on 𝕏 (formerly known as Twitter), Fosstodon or LinkedIn.
- Bugs: issues / JIRA
- Office hours: Wednesday, 12 midday, 18 afternoon, CET
Thank you to all the people who already contributed to Armbian!
- Current and past contributors, our families and friends.
- Support staff that keeps forums usable.
- Friends and individuals who support us with resources and their time.
- The Armbian Community helps with their ideas, reports and donations.
Armbian's partnership program helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with our Partners:
This software is published under the GPL-2.0 License license.
 
  