Prerequisites

  • Linux build host (x86_64 or aarch64)
  • Docker (recommended) or a native toolchain for RISC-V cross-compilation
  • git
  • ~10GB free disk space

Build Process

Clone the Milk-V SDK, clone the Ageless overlay into it, and run the build script.

# Clone the SDK
git clone https://github.com/milkv-duo/duo-buildroot-sdk
cd duo-buildroot-sdk

# Clone the Ageless overlay
git clone https://github.com/agelesslinux/agelesslinux ageless-overlay

# Apply overlay and build
./ageless-overlay/build-ageless.sh duo-s-wifi

# Output: output/ageless-duos-wifi.img

Flashing

MicroSD

# Flash to MicroSD
sudo dd if=output/ageless-duos-wifi.img of=/dev/sdX bs=4M status=progress

eMMC via USB

For Duo S boards with onboard eMMC, flash over USB while the board is in burn mode.

# Flash to eMMC via USB (Duo S with eMMC)
./usb-burn.sh output/ageless-duos-wifi.img

Overlay Structure

The overlay is a directory tree that maps directly onto the target root filesystem. The build script copies these files into the Buildroot output and configures the first-boot service.

ageless-overlay/
├── etc/
│   ├── os-release
│   ├── ageless/
│   │   ├── REFUSAL
│   │   └── ab1043-compliance.txt
│   └── systemd/system/
│       └── ageless-firstboot.service
├── opt/ageless/
│   ├── firstboot.py
│   ├── store/
│   └── apps/
└── build-ageless.sh

Under Development

The build system and overlay are under active development. This page will be updated with tested instructions when the image pipeline is working. The structure and commands above reflect the planned approach and may change.

Back to Device Overview