Table of contents
- What does this project do?
- Getting started
- Compared with industry standards
- Download prebuilt images
- Project structure
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.
- x86_64 or aarch64 machine with at least 2GB of memory and ~35GB of disk space for a virtual machine, WSL2, container or bare metal installation
- Ubuntu Jammy 22.04.x amd64 or aarch64 for native building or any Docker capable amd64 / aarch64 Linux for containerised
- Superuser rights (configured sudo or root access).
- Make sure all your system components are up-to-date. Outdated Docker binaries, for example, can cause trouble.
Start with the build script
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.
Build parameter examples
Show work-in-progress areas in interactive mode:
Build minimal CLI Armbian Jammy image for Orangepi Zero. Use
current kernel and write image to the SD card:
./compile.sh \ BOARD=orangepizero \ BRANCH=current \ RELEASE=jammy \ BUILD_MINIMAL=yes \ BUILD_DESKTOP=no \ KERNEL_CONFIGURE=no \ CARD_DEVICE="/dev/sdX"
- Building Armbian — how to start, how to automate;
- Build options — all build options;
- User configuration — how to add packages, patches, and override sources config;
Download prebuilt images
- quarterly released supported builds
- quarterly released community maintained builds
- automatic released rolling release builds (daily or when code changes)
Compared with industry standards
ExpandCheck similarities, advantages and disadvantages compared with leading industry standard build software.
|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|
|Getting started||quick||very slow||slow|
├── 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
You don't need to be a programmer to help!
The easiest way to help is by "Starring" our repository - it helps more people find our code.
- Check out our list of volunteer positions and choose what you want to do ❤️
- Mirror our download infrastructure ❤️
- Donate! ❤️
Want to become a maintainer?
Want to become a developer?
To help with development, review this document and move straight to the code:
For commercial or prioritized assistance:
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
- Discord: https://discord.gg/armbian
- Follow @armbian on X (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.