2022-04-07 07:10:58 +08:00
< p align = "center" >
< a href = " #build -framework" >
< img src = ".github/armbian-logo.png" alt = "Armbian logo" width = "144" >
< / a > < br >
2023-05-04 16:02:32 +02:00
< strong > Armbian Linux Build Framework< / strong > < br > < h3 >
$${\color{black}NEXT\space \color{red}gen}$$
< / h3 >
2020-02-06 22:57:41 +01:00
## Table of contents
2015-12-02 20:33:32 +01:00
2023-05-29 20:52:56 +01:00
- [What does this project do? ](#what-does-this-project-do )
2022-04-07 07:10:58 +08:00
- [Getting started ](#getting-started )
2023-05-29 20:52:56 +01:00
- [Compared with industry standards ](#compared-with-industry-standards )
2022-04-07 07:10:58 +08:00
- [Download prebuilt images ](#download-prebuilt-images )
- [Project structure ](#project-structure )
- [Contribution ](#contribution )
2020-02-06 22:57:41 +01:00
- [Support ](#support )
2022-04-07 07:10:58 +08:00
- [Contact ](#contact )
- [Contributors ](#contributors )
2023-05-04 16:02:32 +02:00
- [Partners ](#armbian-partners )
2022-04-07 07:10:58 +08:00
- [License ](#license )
2020-07-24 20:32:40 +02:00
2023-05-29 20:52:56 +01:00
## What does this project do?
2015-12-02 20:33:32 +01:00
2023-05-29 20:52:56 +01:00
- Builds custom kernel, image or a distribution optimized for low-resource hardware,
2022-08-15 19:44:54 +02:00
- Include filesystem generation, low-level control software, kernel image and bootloader compilation,
2022-04-07 07:10:58 +08:00
- Provides a consistent user experience by keeping system standards across different platforms.
2017-01-04 02:57:03 -07:00
2022-04-07 07:10:58 +08:00
## Getting started
2017-01-04 02:57:03 -07:00
2022-08-15 19:44:54 +02:00
### Basic requirements
2021-06-24 20:50:00 +08:00
2023-02-18 18:11:04 +01:00
- 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
2022-04-07 07:10:58 +08:00
- Superuser rights (configured sudo or root access).
2023-05-29 20:52:56 +01:00
- Make sure all your system components are up-to-date. Outdated Docker binaries, for example, can cause trouble.
2015-12-02 20:33:32 +01:00
2023-05-29 20:52:56 +01:00
### Start with the build script
2015-12-02 20:33:32 +01:00
2022-04-07 07:10:58 +08:00
```bash
2020-04-25 21:25:05 +02:00
apt-get -y install git
2023-02-18 18:11:04 +01:00
git clone --depth=1 --branch=main https://github.com/armbian/build
2020-02-06 22:57:41 +01:00
cd build
./compile.sh
```
2022-04-07 07:10:58 +08:00
2020-02-06 22:57:41 +01:00
< a href = " #how -to-build-an-image-or-a-kernel" >< img src = ".github/README.gif" alt = "Armbian logo" width = "100%" ></ a >
2022-04-07 07:10:58 +08:00
- Interactive graphical interface.
2023-05-29 20:52:56 +01:00
- 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.
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
### Build parameter examples
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
Show work-in-progress areas in interactive mode:
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
```bash
2020-02-06 22:57:41 +01:00
./compile.sh EXPERT="yes"
```
2021-06-26 23:36:47 +02:00
Build minimal CLI Armbian Focal image for Orangepi Zero. Use modern kernel and write image to the SD card:
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
```bash
2021-06-26 23:36:47 +02:00
./compile.sh \
BOARD=orangepizero \
BRANCH=current \
RELEASE=focal \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_CONFIGURE=no \
2023-02-03 12:01:17 +00:00
CARD_DEVICE="/dev/sdX"
2020-02-06 22:57:41 +01:00
```
2022-07-31 17:46:17 +03:00
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;
2023-05-29 20:52:56 +01:00
- [User configuration ](https://docs.armbian.com/Developer-Guide_User-Configurations/ ) — how to add packages, patches, and override sources config;
2020-02-06 22:57:41 +01:00
2022-08-15 19:44:54 +02:00
## 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 >
2023-05-29 20:52:56 +01:00
## Compared with industry standards
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
Check similarities, advantages and disadvantages compared with leading industry standard build software.
2020-02-06 22:57:41 +01:00
Function | Armbian | Yocto | Buildroot |
|:--|:--|:--|:--|
2021-06-24 20:50:00 +08:00
| Target | general purpose | embedded | embedded / IOT |
2020-02-06 22:57:41 +01:00
| U-boot and kernel | compiled from sources | compiled from sources | compiled from sources |
2021-06-24 20:50:00 +08:00
| Board support maintenance | complete | outside | outside |
2020-02-06 22:57:41 +01:00
| 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 |
2017-01-15 00:48:36 +03:00
2022-04-07 07:10:58 +08:00
## Project structure
2020-02-06 22:57:41 +01:00
2023-03-15 23:23:54 +08:00
< details > < summary > Expand< / summary >
2020-02-06 22:57:41 +01:00
```text
2020-06-30 22:59:24 +02:00
├── cache Work / cache directory
2023-03-15 23:23:54 +08:00
│ ├── 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
2020-06-30 22:59:24 +02:00
├── 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
2021-06-26 23:36:47 +02:00
│ ├── cli CLI packages configurations per distribution
│ ├── desktop Desktop packages configurations per distribution
│ ├── distributions Distributions settings
2020-06-30 22:59:24 +02:00
│ ├── 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
2023-03-15 23:23:54 +08:00
├── extensions Extend build system with specific functionality
2022-01-24 17:11:38 +01:00
├── lib Main build framework libraries
2023-03-15 23:23:54 +08:00
│ ├── functions
│ │ ├── artifacts
│ │ ├── bsp
│ │ ├── cli
│ │ ├── compilation
│ │ ├── configuration
│ │ ├── general
│ │ ├── host
│ │ ├── image
│ │ ├── logging
│ │ ├── main
│ │ └── rootfs
│ └── tools
2020-06-30 22:59:24 +02:00
├── 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
2023-03-15 23:23:54 +08:00
│ ├── bsp-cli Automatically added to armbian-bsp-cli package
2021-07-07 16:06:00 +02:00
│ ├── bsp-desktop Automatically added to armbian-bsp-desktopo package
2020-06-30 22:59:24 +02:00
│ ├── 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
2022-08-15 19:44:54 +02:00
├── tools Tools for dealing with kernel patches and configs
2020-06-30 22:59:24 +02:00
└── userpatches User: configuration patching area
2022-01-24 17:11:38 +01:00
├── lib.config User: framework common config/override file
2020-06-30 22:59:24 +02:00
├── 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
2020-02-06 22:57:41 +01:00
```
2023-03-15 23:23:54 +08:00
< / details >
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
## Contribution
2021-06-24 20:50:00 +08:00
2023-03-15 23:23:54 +08:00
### You don't need to be a programmer to help!
2022-04-07 07:10:58 +08:00
- The easiest way to help is by "Starring" our repository - it helps more people find our code.
2022-09-09 11:37:05 -04:00
- [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?
2023-05-29 20:52:56 +01:00
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.
2022-09-09 11:37:05 -04:00
### Want to become a developer?
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
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:
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
- [pull requests that need a review ](https://github.com/armbian/build/pulls?q=is%3Apr+is%3Aopen+review%3Arequired )
2022-09-09 11:37:05 -04:00
- 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/ )
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
## Support
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
For commercial or prioritized assistance:
- Book an hour of [professional consultation ](https://calendly.com/armbian/consultation )
- Consider becoming a project partner. Reach us at < https: // armbian . com / contact > . 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.
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
## Contact
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
- [Forums ](https://forum.armbian.com ) for Participate in Armbian
- IRC: `#armbian` on Libera.chat
2023-03-15 23:23:54 +08:00
- Discord: [https://discord.gg/armbian ](https://discord.gg/armbian )
2023-01-23 11:18:21 +01:00
- Follow [@armbian ](https://twitter.com/armbian ) on Twitter, [Fosstodon ](https://fosstodon.org/@armbian ) or [LinkedIn ](https://www.linkedin.com/company/armbian ).
2022-04-07 07:10:58 +08:00
- Bugs: [issues ](https://github.com/armbian/build/issues ) / [JIRA ](https://armbian.atlassian.net/jira/dashboards/10000 )
2022-10-06 12:52:11 +02:00
- Office hours: [Wednesday, 12 midday, 18 afternoon, CET ](https://calendly.com/armbian/office-hours )
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
## Contributors
2020-02-06 22:57:41 +01:00
2023-05-29 20:52:56 +01:00
Thank you to all the people who already contributed to Armbian!
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
< a href = "https://github.com/armbian/build/graphs/contributors" >
< img src = "https://contrib.rocks/image?repo=armbian/build" / >
< / a >
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
### Also
2020-02-06 22:57:41 +01:00
2022-04-07 07:10:58 +08:00
- [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.
2022-11-17 09:46:53 -05:00
- [Friends and individuals ](https://armbian.com/authors ) who support us with resources and their time.
2023-05-29 20:52:56 +01:00
- [The Armbian Community ](https://forum.armbian.com/ ) helps with their ideas, reports and [donations ](https://www.armbian.com/donate ).
2020-02-06 22:57:41 +01:00
2022-11-17 09:46:53 -05:00
## Armbian Partners
2020-02-06 22:57:41 +01:00
2022-11-19 02:08:38 -05:00
Armbian's partnership program helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with our Partners:
2023-03-15 23:23:54 +08:00
2022-11-19 02:08:38 -05:00
- [Click here to visit our Partners page! ](https://armbian.com/partners )
2022-11-17 09:46:53 -05:00
- [How can I become a Partner? ](https://forum.armbian.com/subscriptions )
2022-04-07 07:10:58 +08:00
2023-03-15 23:23:54 +08:00
## Star History
[](https://star-history.com/#armbian/build & Date)
2022-04-07 07:10:58 +08:00
## License
This software is published under the GPL-2.0 License license.