$${\color{black}NEXT\space \color{red}gen}$$
Table of contents
- What does this project do?
- Getting started
- Compared with industry standards
- Download prebuilt images
- Project structure
- Contribution
- Support
- Contact
- Contributors
- Partners
- License
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
Basic requirements
- 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:
./compile.sh EXPERT="yes"
Build minimal CLI Armbian Focal image for Orangepi Zero. Use modern kernel and write image to the SD card:
./compile.sh \
BOARD=orangepizero \
BRANCH=current \
RELEASE=focal \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_CONFIGURE=no \
CARD_DEVICE="/dev/sdX"
More information:
- 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 β https://www.armbian.com/download
- weekly released unsupported community builds β https://github.com/armbian/community
- upon code change unsupported development builds β https://github.com/armbian/build/releases
Compared with industry standards
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
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
β€οΈ - Seed torrents
- Help with forum moderating
- Project administration
- Donate.
Want to become a maintainer?
Please review the Board Maintainers Procedures and Guidelines, and if you can meet the requirements and find a board on the Board Maintainers list with less than two maintainers, then please apply using the linked form.
Want to become a developer?
To help with development, you should first review the Development Code Review Procedures and Guidelines. Then you can review the pre-made Jira dashboards and additional resources provided below to find open tasks and how you can assist:
- pull requests that need a review
- dashboard for junior and seniors developers
- documentation
- continuous integration
Support
For commercial or prioritized assistance:
- Book an hour of professional consultation
- Consider becoming a project partner. Reach us at https://armbian.com/contact. Alternatively, 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
- Forums for Participate in Armbian
- IRC:
#armbian
on Libera.chat - Discord: https://discord.gg/armbian
- Follow @armbian on Twitter, Fosstodon or LinkedIn.
- Bugs: issues / JIRA
- Office hours: Wednesday, 12 midday, 18 afternoon, CET
Contributors
Thank you to all the people who already contributed to Armbian!
Also
- 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 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
License
This software is published under the GPL-2.0 License license.