Armbian logo
Armbian Linux Build Framework

$${\color{black}NEXT\space \color{red}gen}$$

## Table of contents - [What does this project do?](#what-does-this-project-do) - [Getting started](#getting-started) - [Compared with industry standards](#compared-with-industry-standards) - [Download prebuilt images](#download-prebuilt-images) - [Project structure](#project-structure) - [Contribution](#contribution) - [Support](#support) - [Contact](#contact) - [Contributors](#contributors) - [Partners](#armbian-partners) - [License](#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](https://learn.microsoft.com/en-us/windows/wsl/install), 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 ```bash apt-get -y install git git clone --depth=1 --branch=main https://github.com/armbian/build cd build ./compile.sh ``` ### BUILD Allwinner H616 quad core 2GB RAM SoC WiFi (blueberry) ### 构建Allwinner H616四核2GB RAM SoC WiFi(蓝莓) ```bash apt-get -y install git git clone --depth=1 --branch=main https://git.aixiao.me/aixiao/build.git ./compile.sh build BOARD=blueberry BRANCH=legacy BUILD_DESKTOP=no BUILD_MINIMAL=yes KERNEL_CONFIGURE=yes RELEASE=bookworm ``` 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: ```bash ./compile.sh EXPERT="yes" ``` Build minimal CLI Armbian Focal image for Orangepi Zero. Use modern kernel and write image to the SD card: ```bash ./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](https://docs.armbian.com/Developer-Guide_Build-Preparation/) — how to start, how to automate; - [Build options](https://docs.armbian.com/Developer-Guide_Build-Options/) — all build options; - [User configuration](https://docs.armbian.com/Developer-Guide_User-Configurations/) — how to add packages, patches, and override sources config; ## Download prebuilt images - quarterly released **supported** builds — - weekly released **unsupported** community builds — - upon code change **unsupported** development builds — ## 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 ```text ├── 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](https://forum.armbian.com/staffapplications/) and choose what you want to do ❤️ - [Seed torrents](https://forum.armbian.com/topic/4198-seed-our-torrents/) - Help with [forum moderating](https://forum.armbian.com/topic/12631-help-on-forum-moderating/) - [Project administration](https://forum.armbian.com/forum/39-armbian-project-administration/) - [Donate](https://www.armbian.com/donate). ### Want to become a maintainer? Please review the [Board Maintainers Procedures and Guidelines](https://docs.armbian.com/Board_Maintainers_Procedures_and_Guidelines/), and if you can meet the requirements and find a board on the [Board Maintainers](https://docs.armbian.com/Release_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](https://docs.armbian.com/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](https://github.com/armbian/build/pulls?q=is%3Apr+is%3Aopen+review%3Arequired) - dashboard for [junior](https://armbian.atlassian.net/jira/dashboards/10000) and [seniors](https://armbian.atlassian.net/jira/dashboards/10103) developers - [documentation](https://docs.armbian.com/) - [continuous integration](https://docs.armbian.com/Process_CI/) ## Support For commercial or prioritized assistance: - Book an hour of [professional consultation](https://calendly.com/armbian/consultation) - Consider becoming a project partner. Reach us at . Alternatively, find free support via [general project search engine](https://www.armbian.com/search), [documentation](https://docs.armbian.com), [community forums](https://forum.armbian.com/) or [IRC/Discord](https://docs.armbian.com/Community_IRC/). Remember that our awesome community members mainly provide this in a **best-effort** manner, so there are no guaranteed solutions. ## Contact - [Forums](https://forum.armbian.com) for Participate in Armbian - IRC: `#armbian` on Libera.chat - Discord: [https://discord.gg/armbian](https://discord.gg/armbian) - Follow [@armbian](https://twitter.com/armbian) on Twitter, [Fosstodon](https://fosstodon.org/@armbian) or [LinkedIn](https://www.linkedin.com/company/armbian). - Bugs: [issues](https://github.com/armbian/build/issues) / [JIRA](https://armbian.atlassian.net/jira/dashboards/10000) - Office hours: [Wednesday, 12 midday, 18 afternoon, CET](https://calendly.com/armbian/office-hours) ## Contributors Thank you to all the people who already contributed to Armbian! ### Also - [Current and past contributors](https://github.com/armbian/build/graphs/contributors), our families and friends. - [Support staff](https://forum.armbian.com/members/2-moderators/) that keeps forums usable. - [Friends and individuals](https://armbian.com/authors) who support us with resources and their time. - [The Armbian Community](https://forum.armbian.com/) helps with their ideas, reports and [donations](https://www.armbian.com/donate). ## Armbian Partners Armbian's partnership program helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with our Partners: - [Click here to visit our Partners page!](https://armbian.com/partners) - [How can I become a Partner?](https://forum.armbian.com/subscriptions) ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=armbian/build&type=Date)](https://star-history.com/#armbian/build&Date) ## License This software is published under the GPL-2.0 License license.