## What it does? - Builds custom **kernel**, **image** or a Debian based Linux **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. ``` mermaid graph LR A[./compile.sh] --> B{Change
kernel
config}; B ---> |yes| C["HW"]; B ---> |no| C["HW"]; C ---> |branch| D["legacy
vendor
current
edge"]; D --> |base| E["Debian
Ubuntu"]; E ---> |type| F["CLI"]; F ---> |type| G["Server"]; F ---> |type| H["Minimal"]; E ---> I["Desktop"]; I ---> K["XFCE"]; I ---> L["Gnome"]; I ---> M["Cinammon"]; I ---> N["KDE Neon"]; ``` ## Key Advantages - Simplicity with interactive graphical interface. - Generates widely recognized and well maintained userspace - Fast learning curve for complex operations Check other 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 | ## Framework Structure ```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 ├── config-example.conf User: example user config file ├── customize-image.sh User: script will execute just before closing the image    ├── atf User: ARM trusted firmware    ├── extensions User: Extend build system with specific functionality    ├── kernel User: Linux kernel per kernel family    ├── misc User: various    └── u-boot User: universal boot loader patches ```