Downloading a vendor image by hand works for one board. For a fleet you want a reproducible build: same kernel, same packages, your own changes, every time. That's what orangepi-build (github.com/orangepi-xunlong/orangepi-build) is for. Its scripts are derived from the Armbian build system (many files carry Armbian copyright headers).
What it supports
The README lists these SoCs and boards:
| SoC | Boards |
|---|---|
| Allwinner H6 | Orange Pi 3 / 3 LTS |
| Allwinner H616 | Orange Pi Zero2 / Zero2w / Zero3 |
| Allwinner T527 / A733 | Orange Pi 4A / 4 Pro |
| Rockchip RK3399 | Orange Pi 4 / 4B / 4 LTS / 800 |
| Rockchip RK3566 | Orange Pi 3B / CM4 |
| Rockchip RK3588S | Orange Pi 5 / 5B / 5 Pro / CM5 |
| Rockchip RK3588 | Orange Pi 5 Plus / 5 Max / 5 Ultra |
| Cix P1 | Orange Pi 6 Plus |
| StarFive JH7110 / Ky X1 | Orange Pi RV / RV2 / R2S |
Host system: Ubuntu 22.04.
Build targets
BUILD_OPT |
Result |
|---|---|
u-boot |
U-Boot package |
kernel |
kernel package |
rootfs |
root filesystem and all .deb packages |
image |
full OS image for flashing |
Non-interactive builds
Run without arguments and build.sh asks for everything in menus. Every choice can also be passed as KEY=value; the menus only appear for values you left out:
git clone --depth 1 https://github.com/orangepi-xunlong/orangepi-build.git
cd orangepi-build
sudo ./build.sh BOARD=orangepi5 BRANCH=current BUILD_OPT=image \
RELEASE=bookworm BUILD_MINIMAL=yes BUILD_DESKTOP=no KERNEL_CONFIGURE=no
BOARDis the board config name (files likeorangepi5.confinexternal/config/boards/).BRANCHpicks the kernel line; each board config lists which branches (legacy,current,next) and which releases per branch it supports (theKERNEL_TARGETandDISTRIB_TYPE_*lines).KERNEL_CONFIGURE=nokeeps the kernel configuration;yesopens the kernel menu first.BUILD_MINIMAL=yesimplies no desktop.
Images end up under output/ in the build directory. Your own configuration and patches go in the userpatches/ directory, which the build creates with example configs on first run.
Tips
- Check the board config for your board before choosing
BRANCHandRELEASE: not every combination is available for every board. - Pin the orangepi-build commit you used, so you can rebuild the same image later.
- The build downloads toolchains and sources and needs plenty of disk space; the repository checkout alone is large.