2024-10-16 17:07:49 +02:00
# Armbian Build Framework Quick Start Guide
2020-11-18 15:41:52 -05:00
2024-10-16 17:07:49 +02:00
## Requirements
2016-07-02 14:20:49 -04:00
2024-11-14 09:31:58 +01:00
- x86_64 / aarch64 / riscv64 machine
2025-04-26 13:40:55 +00:00
- at least 8GB (less for non-[BTF ](https://docs.kernel.org/bpf/btf.html ) builds) of memory and ~50GB of disk space for VM, container, or bare-metal installation
2025-05-13 17:21:15 +02:00
- **Armbian / Ubuntu Noble 24.04.x** for native building or any Docker capable Linux for containerised
- **Windows 10/11 with WSL2 subsystem** running Armbian / Ubuntu Noble 24.04.x
2024-10-16 17:07:49 +02:00
- Superuser rights (configured sudo or root access).
- Make sure your system is up-to-date! Outdated Docker binaries, for example, can cause trouble
2016-07-02 14:20:49 -04:00
2020-10-13 19:35:57 +02:00
2024-11-14 09:31:58 +01:00
## Clone repository
2016-07-02 14:20:49 -04:00
2020-08-02 10:17:41 +02:00
```bash
2024-11-14 09:31:58 +01:00
git clone https://github.com/armbian/build
2020-07-29 20:14:44 +02:00
cd build
2020-07-29 20:08:18 +02:00
```
2024-11-14 09:31:58 +01:00
!!! note
- Make sure that full path to the build script **does not contain spaces **
2024-11-26 08:05:04 +01:00
- For stable branch use last point release `--branch=v24.11`
``` mermaid
gitGraph
commit
commit
checkout main
commit id: "v24.08" tag: "v24.08"
branch v24.08
commit
commit
commit
commit
checkout main
commit id: "v24.11" tag: "v24.11"
branch v24.11
commit
commit
commit
commit
checkout main
commit
commit
commit
commit
commit
commit
commit id: "main" type: REVERSE tag: "Trunk"
```
2024-11-14 09:31:58 +01:00
2024-10-16 17:07:49 +02:00
## Interactive
2016-07-02 14:20:49 -04:00
2024-10-16 17:07:49 +02:00
Run framework:
2016-07-02 14:20:49 -04:00
2024-10-16 17:07:49 +02:00
```bash
./compile.sh
```
2017-10-09 15:43:41 +03:00
2024-11-14 09:31:58 +01:00
??? info "Video"
<iframe width="939" height="529" src="https://www.youtube.com/embed/kQcEFsXEJEE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2021-10-21 17:28:05 +02:00
2024-10-16 17:07:49 +02:00
## CLI
2016-07-02 14:20:49 -04:00
2025-03-30 10:04:16 +13:00
```bash
./compile.sh [command] [switch...] [config...]
```
2025-09-11 16:53:51 +02:00
!!! tip "Troubleshooting: 'unknown terminal type' error"
2025-09-11 17:29:55 +02:00
When running the script, especially from modern terminal emulators (like Ghostty, Kitty, WezTerm), you might encounter an error like
2025-09-11 16:53:51 +02:00
2025-09-11 17:29:55 +02:00
'xterm-ghostty': unknown terminal type
**Quick workaround: ** you can force a more common terminal type before running the script:
```bash
env TERM=xterm-256color ./compile.sh
```
2025-09-11 16:53:51 +02:00
2025-03-30 10:04:16 +13:00
Only one command can be specified.
Switches are parameter settings that are used by the build framework itself
(e.g. `DEBUG=yes` ) or the specific command.
Config files are bash shell scripts that are sourced in the order
specified. They are primarily used to set switches but might also set hook
functions. They must be located in the `userpatches` directory and must
be named `config-${arg}.conf` or `config-${arg}.conf.sh` (where `${arg}` is
the argument from the command line): one or the other, but not both.
Switches set on the commandline override settings from the config files,
regardless of the order they appear on the comandline.
2017-08-01 12:37:25 +03:00
2025-01-23 11:44:32 +01:00
Comprehensive list of build [Commands ](Developer-Guide_Build-Commands.md ) and [Switches ](Developer-Guide_Build-Switches.md )
2017-08-01 12:37:25 +03:00
2016-07-02 14:20:49 -04:00
Example:
2024-10-16 17:07:49 +02:00
```bash
./compile.sh build \
BOARD=uefi-x86 \
BRANCH=current \
BUILD_DESKTOP=yes \
BUILD_MINIMAL=no \
DESKTOP_APPGROUPS_SELECTED='browsers chat desktop_tools' \
DESKTOP_ENVIRONMENT=gnome \
DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base \
KERNEL_CONFIGURE=no \
RELEASE=noble
2020-07-29 20:08:18 +02:00
```
2019-07-07 17:01:29 +02:00
2025-03-30 10:04:16 +13:00
Or, using config file `userpatches/config-myboard.conf`
that sets all these switches:
```bash
./compile.sh build \
myboard
```
2024-10-16 17:07:49 +02:00
!!! question "Interpretation?"
2019-11-27 15:26:26 +08:00
2024-10-16 17:07:49 +02:00
This command will generate **Ubuntu 24.04 Noble ** based **Gnome desktop ** environment image for Intel based hardware (**uefi-x86**). Besides bare desktop, it will contain packages from **browsers ** and **desktop_tool ** sections and it will use unchanged kernel from **current kernel ** branch.
2019-11-27 15:26:26 +08:00
2025-02-24 07:21:40 +13:00
## Logging
Logs are written to **output/logs ** . Old logs (all but the current build)
are compressed and moved to **output/logs/archive ** .
Log formats are:
- ANSI - text with ANSI escapes for color coding - \*.log.ans
- ASCII (if ansi2txt is available) - text without color coding escapes - \*.log
- Markdown summary - \*.md
- Raw (if RAW_LOG=yes) - tar file containg all the raw logs - \*.raw.tar
For much more verbose logs set switch 'DEBUG=yes'.
2025-04-26 13:40:55 +00:00
## GitHub Actions
2019-11-27 15:26:26 +08:00
2025-04-26 13:40:55 +00:00
If you do not have the proper equipment to build images on your own, you can use our [GitHub Action ](https://github.com/marketplace/actions/rebuild-armbian ).