Commit Graph

261 Commits

Author SHA1 Message Date
Igor Pecovnik
1b38e53689 add Vulkan support and expand 3D package descriptions
- Add vulkan-tools: Vulkan utilities (vulkaninfo) for testing and debugging
- Add mesa-vulkan-drivers: Vulkan drivers for Mesa GPUs (Panfrost, Lima, Radeon, Intel)
- Expand package definitions with individual inline comments describing each package:
  - libglx-mesa0: Mesa OpenGL extension library for X11
  - mesa-utils: Mesa utilities for OpenGL information and testing
  - mesa-utils-extra: Additional Mesa demonstration programs
  - glmark2 variants: OpenGL 2.0/3.0 and ES 2.0 benchmark suite with Wayland/X11 backends
- Improves code documentation and makes package purposes clear for maintainers

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-03-06 07:45:51 +01:00
Igor Velkov
8cb897856f (#9400 P1a) extensions/gxlimg.sh: convert [ ] to [[ ]]
Replace POSIX `[ ]` with bash `[[ ]]` on two file existence checks.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 13:36:20 +01:00
Igor Velkov
1839857f8d (#9400 P1a) extensions/lowmem.sh: convert [ ] to [[ ]]
Replace POSIX `[ ]` with bash `[[ ]]` on two file existence checks.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 13:36:20 +01:00
Christian Wang
60002ddb6b Updated odin2-preset-firstrun.sh to include odin2-scripts installer 2026-03-04 19:57:23 +01:00
Christian Wang
234d650748 Added odin2-preset-firstrun.sh extension to set user accounts and also download helper script folder from github 2026-03-04 19:57:23 +01:00
Nikita Maslo
9c10f33525 unset QEMU_CPU for aml_image_packer 2026-03-02 13:12:07 +03:00
Igor Velkov
1b74748622
Extension: ccache-remote — shared compilation cache via Redis/HTTP (#9369)
* add hook to allow customizing before kernel make env creation
* Hook runs in docker_cli_prepare_launch() just before DOCKER_EXTRA_ARGS
is processed, allowing extensions to add Docker arguments with a more
descriptive hook name than add_host_dependencies.
* Extension: ccache-remote

Enables ccache with remote Redis storage for sharing compilation cache across build hosts.

Features:
- Auto-discovery via Avahi/mDNS (ccache.local hostname)
- Explicit Redis server configuration via CCACHE_REMOTE_STORAGE
- Build statistics display at end of build (hit/miss/error rates)
- Support for both Docker and native builds
- Hooks for kernel and u-boot compilation environments

Documentation includes server setup instructions with security warnings,
client mDNS configuration, and cache sharing requirements.


* uboot: fix ccache environment and add extension hook

U-Boot build uses `env -i` which clears all environment variables.
CCACHE_DIR and CCACHE_TEMPDIR were not explicitly passed to make,
unlike kernel build (kernel-make.sh). This caused ccache to use
default directory instead of configured Armbian one, breaking
cache statistics and shared cache functionality.

Changes:
- Add CCACHE_DIR and CCACHE_TEMPDIR to uboot_make_envs
- Add uboot_make_config hook for extensions (similar to kernel_make_config),
  allowing modification of environment variables before compilation

* add long list of allowed ccache-related env vars
* set permissions to ccache files RW for everyone if cache not private
* ccache: add ccache_post_compilation hook for extensions
* ccache-remote: use ccache_post_compilation hook instead of cleanup handler

Show remote ccache stats after each compilation (kernel, uboot) via hook,
instead of once at the end via cleanup handler. Stats now shown even on
build failure.

* ccache: show stats with safe arithmetic
* ccache/uboot: improve code comments per review feedback

- uboot.sh: clarify ARMBIAN=foe workaround for dual-compiler scenario
- ccache-remote.sh: document that CCACHE_REDIS_CONNECT_TIMEOUT must be
  set before extension loads

* ccache-remote: mask storage URLs in logs

Mask CCACHE_REMOTE_STORAGE when emitting Docker env debug logs.

* ccache-remote: extract ccache_inject_envs() helper to deduplicate passthrough loops

Extract ccache_inject_envs() helper to deduplicate identical passthrough
loops in kernel and uboot make config hooks.

ccache-remote: rename functions to follow project naming conventions

Rename get_redis_stats and mask_storage_url to ccache_get_redis_stats
and ccache_mask_storage_url to follow project naming conventions.

ccache-remote: mask credentials in debug log output for passthrough loops

Mask CCACHE_REMOTE_STORAGE value through ccache_mask_storage_url() before
logging in both Docker env and make env passthrough loops to avoid leaking
credentials into build logs.

* ccache-remote: add HTTP/WebDAV backend and DNS discovery
* ccache-remote: move extension script into directory layout
* ccache-remote: add server setup docs and config files
* ccache-remote: validate Redis credentials in URLs
* ccache-remote: document Redis auth options and safe passwords

Add separate insecure config example for trusted networks.

Recommend URL-safe hex passwords and update setup docs.

* ccache-remote: improve Docker loopback handling and IPv6 host parsing
2026-03-01 01:18:35 +01:00
Igor Velkov
4222417736 extensions: add kernel-rust extension for Rust support in kernel builds
Add extension that enables CONFIG_RUST in kernel menuconfig and
configures the build environment (rustc, rustfmt, bindgen, rust-src)
using versioned APT packages from noble-security/noble-updates.

Handles env -i in run_kernel_make_internal by passing tool paths
via RUSTC, RUSTFMT, BINDGEN make params and RUST_LIB_SRC env var.

Includes optional RUST_KERNEL_SAMPLES=yes for building sample
Rust modules (rust_minimal, rust_print, rust_driver_faux) as a
toolchain smoke test.

Tested: kernel 6.19 build for rockchip64 on aarch64, both with
and without Docker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 22:30:37 +01:00
Sven-Ola Tuecke
b9350e0133 OrangePi-RV2: wlan driver for edge
Added with new extension named bcmdhd-spacemit (hosted on Codeberg.org)

Signed-off-by: Sven-Ola Tuecke <sven-ola@gmx.de>
2026-02-19 22:10:34 -05:00
Tong
47db6e853e
extensions: radxa-aic8800: allow 6.19; skip DKMS only on >= 6.20 (#9397) 2026-02-14 06:30:00 +01:00
Igor Pecovnik
208187f807 Race conditions: installing packages before adding a repo 2026-02-12 22:06:22 +01:00
Igor Velkov
9e251e885f extension: kernel-version-toolchain for compiler in artifact version
Add opt-in extension that includes gcc/clang major.minor version in the
kernel artifact version string for cache invalidation when the toolchain
changes. Enable with ENABLE_EXTENSIONS="kernel-version-toolchain".

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 14:21:28 -05:00
Jiali Chen
e6d22be90d feat: add extraargs from armbianEnv for mkbootimg
Signed-off-by: CodeChenL <2540735020@qq.com>
2026-02-05 01:04:38 +01:00
Andrei Aldea
8ba25ce903
Fix K3 issues - APT Caching, PB2, Missing KConfig (#9349)
* Fix K3 issues - APT Caching, PB2, Missing KConfig

Fixes Apt catching by post_repo_customize_image__install_ti_packages

Fix PB2 DTB name change

Add missing KConfig required for PCIe
2026-02-04 16:53:06 -06:00
Igor Pecovnik
5abb97453f Refactor mesa-vpu extension: simplify and add arch-specific browser selection
- Remove legacy panfork/kisak PPAs and image suffix logic
- Restrict Rockchip multimedia to noble+vendor only
- Simplify chromium installation (remove distribution checks)
- Add new post_armbian_repo_customize_image__browser() function for
  architecture-dependent browser selection:
  - amd64: google-chrome-stable
  - arm64/armhf: chromium
  - other: firefox

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-02-03 18:14:41 +01:00
Igor Pecovnik
6f02217474 Extension: Bump Nvidia propriatery driver
- drop settings
- don't install on minimal images

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-02-02 15:23:04 +01:00
Igor Pecovnik
4128ef0a83 apt: bypass apt-helper wait-online on multi-NIC systems
apt-daily-upgrade.service uses `apt-helper wait-online` as an ExecStartPre
step. On multi-NIC systems with systemd-networkd this helper directly calls
systemd-networkd-wait-online in strict mode, waiting for all managed links
to become online.

On boards with multiple Ethernet ports where some interfaces are commonly
unplugged, this results in repeated timeouts and causes
apt-daily-upgrade / unattended-upgrades to abort, even when at least one
interface is already fully routable.

Replace the ExecStartPre step with a direct invocation of
systemd-networkd-wait-online using `--any`, allowing the service to proceed
as soon as one interface is online.

This preserves the intent of waiting for network availability while making
the behavior robust on multi-NIC and router-style systems.
2026-02-01 00:41:50 +01:00
Igor
f12ac15a65 Update extensions/network/net-systemd-networkd.sh 2026-02-01 00:41:50 +01:00
Igor Pecovnik
071f421c3e networking: relax networkd-wait-online to avoid multi-NIC timeouts
Multi-port boards (e.g. NanoPi R6S) frequently have unused interfaces with
no-carrier. With the default systemd-networkd-wait-online behavior this can
result in "Online state: partial" and a timeout while waiting for all managed
links to become online.

That failure breaks units that depend on network-online.target such as
apt-daily-upgrade / unattended-upgrades.

Install a systemd drop-in overriding ExecStart to use:
  systemd-networkd-wait-online --any --timeout=20

This keeps the intended "wait for networking" semantics while preventing
unplugged/unused ports from blocking boot and timers.
2026-02-01 00:41:50 +01:00
Igor Velkov
b3624e40df extension: add arm64-compat-vdso for 32-bit vDSO support
Add extension that enables 32-bit compat vDSO for arm64 kernels.

Without vDSO, 32-bit applications using gettimeofday() syscall heavily
suffer significant performance penalty on arm64 systems.

The extension:
- Adds gcc-arm-linux-gnueabi as build dependency
- Sets CROSS_COMPILE_COMPAT for kernel make
- Enables CONFIG_COMPAT_VDSO in kernel config

Enable with: ENABLE_EXTENSIONS=arm64-compat-vdso

Refs: https://github.com/armbian/build/issues/9216

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 11:36:20 +01:00
Jianfeng Liu
e159691349 extension: grub: deploy qemu binary when doing cross build 2026-01-22 13:19:24 +01:00
schwar3kat
968464532c Add board-level extension to mask Wayland desktop sessions 2026-01-21 19:25:26 +01:00
Nikita Maslo
731763297d jethub-burn: add cleanup handlers and partition validation 2026-01-15 18:11:52 +03:00
Nikita Maslo
e1cab845df jethub-burn:
- Add license and copyright header
 - Refactor code and fix trap losetup
2026-01-15 18:11:52 +03:00
Nikita Maslo
0ee6cf8638 Add post-build Armbian extension for burnable JetHub boards
Signed-off-by: Nikita Maslo <nikitamalco203@gmail.com>
2026-01-15 18:11:52 +03:00
Ricardo Pardini
1d64ede95c grub: remove invalid hack for hvc0
- hvc0 (virtio console) used to be a challenge, but no longer, for a long time already
2026-01-08 19:28:55 +01:00
Ricardo Pardini
5baaad4e8d extensions/mtkflash: mtk-flash --no-erase-mmc1 landed upstream as --preserve-boot1
- of course, avoid a negation. example of how upstream is always best
2026-01-08 18:55:09 +01:00
Ricardo Pardini
230f937d4b extensions/mtkflash: Mediatek mtk-flash direct flashing after build
- similar to `rkdevflash`, but for Mediatek devices
- also simpler; lk.bin & fip.img are produced by image build and directly used
- requires Rust+Cargo, so add those to hostdeps
  - since this is a core extension, those will be included in all Docker images too
  - which was bound to happen anyway since Rust in Linux Kernel is no longer an experiment
- extensions/mtkflash: sha1-based bin path, use fork & add `--no-erase-boot1`
- example invocation:
  - `BOARD=radxa-nio-12l BRANCH=collabora RELEASE=trixie EXT=ufs,mtkflash MTKFLASH_TTYACM_DEVICE=1`
2026-01-08 12:30:24 +01:00
tabris
8d0f889bf2 documentation extensions - fix link for documenting opt-out functionality 2026-01-08 12:07:56 +01:00
Ricardo Pardini
ee2f374f7b extensions/ufs: don't check sfdisk version also when BUILDING_IMAGE!=yes
- fixes download-artifact issue
  - matrix-prep was solved by CONFIG_DEFS_ONLY previously
2026-01-06 23:19:08 +01:00
cantalupo555
504ccc45d2 fix: replace comm with grep to support uutils coreutils
Ubuntu 25.04+ replaced GNU coreutils with uutils coreutils, a Rust-based
reimplementation of Unix core utilities. These are different projects
with the same package name:

- GNU coreutils 9.x (C) - Ubuntu ≤24.04
- uutils coreutils 0.x (Rust) - Ubuntu ≥25.04

The uutils comm doesn't recognize sort output as sorted, causing
"comm: file is not in sorted order" errors.

Replace comm patterns with:
- grep -vxFf for set difference (lines in B but not in A)
- sort | uniq -d for finding duplicates

These alternatives don't depend on comm, ensuring compatibility
with both GNU and uutils coreutils.
2026-01-02 21:52:32 +01:00
Ricardo Pardini
f2dd38e622 extensions/gen-sample-extension-docs: fix to output non-garbage
- bash variable scoping is a b...
2025-12-15 20:59:37 +01:00
Ricardo Pardini
fcd990bc0b extensions/gen-sample-extension-docs: output Markdown to userpatches/extensions
- otherwise it is lost in a temp dir that is cleaned before the end of run
- same place as the `sample-extension.sh`
- keep in mind original limitations of this still apply:
  - only extension methods _actually used_ by the specific run are included
    - thus, it will _never_ be complete
2025-12-15 20:59:37 +01:00
Igor Velkov
5de9913cec Extension adds watchdog package and enable watchdog device (/dev/wachdog)
support in config
2025-12-11 04:06:24 +08:00
Rolf Leggewie
42851ab469 extensions: add uboot-btrfs extension to add btrfs support in u-boot 2025-12-01 04:37:20 +08:00
retro98boy
dbc7b23b6d extensions: gxlimg: Update repo URL 2025-11-16 20:29:04 +01:00
tabris
28b459d8a7 Related to armbian/documentation#842, update
extensions/gen-sample-extension-docs.sh to reference the opt-out docs
for hooks
2025-11-15 20:44:21 +01:00
Mecid
ebc129fa52
UFS: Fix CI behavior (#8924)
Commented out the declaration of DOCKER_ARMBIAN_BASE_IMAGE as it needs to be set manually outside.
2025-11-12 23:23:46 +01:00
Mecid
2e4e238f62
UFS: Fix ci config generation (#8923) 2025-11-12 21:47:34 +01:00
Austin Lane
4c68c97ce7 LowMem: Slim down initramfs and set /run size 2025-11-10 11:47:40 +01:00
Jonas Wood
9cc6e3ab15 ti: extensions: ti-debpkgs: Switch pkg install from rootfs to image
This switches TI deb pkgs to be added to the image package list,
instead of being cached in the rootfs.

Signed-off-by: Jonas Wood <jw@ti.com>
2025-11-06 08:16:59 +01:00
Austin Lane
896afe2f91 LowMem extension (for boards with < 256MB RAM) 2025-11-04 22:38:39 +01:00
Ricardo Pardini
1d9338a951
extensions/image-output-utm: fix serial console ttyAMA0 for arm64 (#8851)
* extensions/image-output-utm: fix serial console ttyAMA0 for arm64
2025-11-03 18:14:00 +01:00
Alex Simkin
1653fdacec apply cryptroot fixes to grub-riscv64 too re. #6280 2025-11-02 20:15:19 +01:00
Alex Simkin
b47445c990 add CRYPTROOT_AUTOUNLOCK option and fix CRYPTROOT for uefi builds
fixes #6280
2025-11-02 20:15:19 +01:00
Ricardo Pardini
a8f10eee53 grub: don't set CLOUD_INIT_CONFIG_LOCATION
- that was for my never-upstreamed cloud-init extension
- "/boot/efi" can't be used for cloud seed anymore since trixe
  - as it's not going to be mounted by the time cloud-init runs
2025-11-02 18:12:08 +01:00
retro98boy
6fcbc04929 extensions: gxlimg: Add new function to repack FIP with u-boot.bin 2025-10-23 22:31:23 +02:00
EvilOlaf
3db41e086b get rid of vendor uboot, adjust aic8800 2025-10-22 11:08:20 +02:00
HackingGate
33f04bcd57 extensions: radxa-aic8800: allow 6.17; skip DKMS only on >= 6.18
The upstream driver in radxa-pkg/aic8800 builds successfully against Linux 6.17. Relax the version guard so we only skip installing the aic8800 DKMS package on kernels >= 6.18.
2025-10-08 22:43:49 +02:00
Mecid Urganci
5ddf398fbb UFS Extension: Add DOCKER_ARMBIAN_BASE_IMAGE 2025-09-25 10:18:34 +08:00