armbian-build/README.md

237 lines
13 KiB
Markdown
Raw Normal View History

<p align="center">
<a href="#build-framework">
<img src=".github/armbian-logo.png" alt="Armbian logo" width="144">
</a><br>
<strong>Armbian Linux Build Framework</strong><br>
<br>
<a href=https://github.com/armbian/build/actions/workflows/build-train.yml><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/armbian/build/build-train.yml?logo=githubactions&label=Kernel%20compile&logoColor=white&style=for-the-badge&branch=master"></a>
<a href=https://github.com/armbian/build/actions/workflows/build-all-desktops.yml><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/armbian/build/build-all-desktops.yml?logo=githubactions&logoColor=white&label=Images%20assembly&style=for-the-badge&branch=master"></a>
<a href=https://github.com/armbian/build/actions/workflows/smoke-tests.yml><img alt="Smoke test success ratio" src="https://img.shields.io/badge/dynamic/json?logo=speedtest&label=Smoke%20tests%20success&query=SMOKE&color=44cc11&cacheSeconds=600&style=for-the-badge&url=https%3A%2F%2Fgithub.com%2Farmbian%2Fscripts%2Freleases%2Fdownload%2Fstatus%2Frunners_capacity.json"></a>
<br>
<br>
<a href=https://fosstodon.org/@armbian><img alt="Mastodon Follow" src="https://img.shields.io/mastodon/follow/109365956768424870?domain=https%3A%2F%2Ffosstodon.org&logo=mastodon&style=flat-square"></a>
<a href=http://discord.armbian.com/><img alt="Discord" src="https://img.shields.io/discord/854735915313659944?label=Discord&logo=discord&style=flat-square"></a>
<a href=https://liberapay.com/armbian><img alt="Liberapay patrons" src="https://img.shields.io/liberapay/patrons/armbian?logo=liberapay&style=flat-square"></a>
</p>
2020-02-08 20:55:06 -05:00
2020-02-06 22:57:41 +01:00
## Table of contents
2020-02-06 22:57:41 +01:00
- [What this project does?](#what-this-project-does)
- [Getting started](#getting-started)
2020-02-06 22:57:41 +01:00
- [Compare with industry standards](#compare-with-industry-standards)
- [Download prebuilt images](#download-prebuilt-images)
- [Project structure](#project-structure)
- [Contribution](#contribution)
2020-02-06 22:57:41 +01:00
- [Support](#support)
- [Contact](#contact)
- [Contributors](#contributors)
2020-02-06 22:57:41 +01:00
- [Sponsors](#sponsors)
- [License](#license)
2020-02-06 22:57:41 +01:00
## What this project does?
- Builds custom kernel, image or a distribution optimized for low resource HW such as single board computers,
- 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
2021-06-24 20:50:00 +08:00
- x86_64 or aarch64 machine with at least 2GB of memory and ~35GB of disk space for a virtual machine, container or bare metal installation
- Ubuntu Jammy 22.04.x amd64 or aarch64 for native building or any [Docker](https://docs.armbian.com/Developer-Guide_Building-with-Docker/) capable amd64 / aarch64 Linux for containerised
- Superuser rights (configured sudo or root access).
### Simply start with the build script
```bash
apt-get -y install git
git clone --depth=1 --branch=master https://github.com/armbian/build
2020-02-06 22:57:41 +01:00
cd build
./compile.sh
```
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>
- Interactive graphical interface.
- The workspace will be prepared by installing the necessary dependencies and sources.
- It guides the entire process until a kernel package or ready-to-use image of the SD card is created.
2020-02-06 22:57:41 +01:00
### Build parameter examples
2020-02-06 22:57:41 +01:00
Show work in progress areas in interactive mode:
```bash
2020-02-06 22:57:41 +01:00
./compile.sh EXPERT="yes"
```
Run build framework inside Docker container:
2020-02-06 22:57:41 +01:00
```bash
2020-02-06 22:57:41 +01:00
./compile.sh docker
```
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
```bash
./compile.sh \
BOARD=orangepizero \
BRANCH=current \
RELEASE=focal \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_ONLY=no \
KERNEL_CONFIGURE=no \
CARD_DEVICE="/dev/sdX"
2020-02-06 22:57:41 +01: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;
- [Building with Docker](https://docs.armbian.com/Developer-Guide_Building-with-Docker/) — how to build inside container;
- [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
## 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>
2020-02-06 22:57:41 +01:00
## Compare with industry standards
Check similarity, advantages and disadvantages compared with leading industry standard build software.
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 &nbsp; | 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
## Project structure
2020-02-06 22:57:41 +01:00
```text
├── cache Work / cache directory
│   ├── rootfs Compressed userspace packages cache
│   ├── sources Kernel, u-boot and various drivers sources.
│   ├── toolchains External cross compilers from Linaro™ or ARM™
├── 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
├── 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
2020-02-06 22:57:41 +01:00
```
## 🙌 Contribution
2021-06-24 20:50:00 +08:00
### 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 as well as find a board on the [Board Maintainers](https://docs.armbian.com/Release_Board-Maintainers/) list which has less than 2 maintainers, then please apply using the linked form.
### Want to become a developer?
2020-02-06 22:57:41 +01:00
If you want 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/) and 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
- [pull requests that needs 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/)
2020-02-06 22:57:41 +01:00
## Support
2020-02-06 22:57:41 +01:00
Support is provided in one of two ways:
- For commercial or prioritized assistance:
- book a an hour of [professional consultation](https://calendly.com/armbian/consultation),
- consider becoming a project partner. Reach us out at https://armbian.com/contact,
2022-10-22 08:36:11 +02:00
- Alternatively free support is provided 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/). Keep in mind this is mostly provided by our awesome community members in a **best effort** manner and therefore there are no guaranteed solutions.
2020-02-06 22:57:41 +01:00
## Contact
2020-02-06 22:57:41 +01:00
- [Forums](https://forum.armbian.com) for Participate in Armbian
- IRC: `#armbian` on Libera.chat
2022-07-15 10:44:25 +02:00
- Discord: [http://discord.armbian.com](http://discord.armbian.com)
- 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)
2020-02-06 22:57:41 +01:00
## Contributors
2020-02-06 22:57:41 +01:00
2022-07-15 10:44:25 +02:00
Thank you to all the people who already contributed Armbian!
2020-02-06 22:57:41 +01: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
### Also
2020-02-06 22:57:41 +01: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.
- [Friends and individuals](https://armbian.com/authors) who support us with resources and their time.
- [The Armbian Community](https://forum.armbian.com/) that helps with their ideas, reports and [donations](https://www.armbian.com/donate).
2020-02-06 22:57:41 +01:00
## Armbian Partners
2020-02-06 22:57:41 +01:00
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)
## License
This software is published under the GPL-2.0 License license.