How to Build the Ubuntu 24.04 Image
This page is only about assembling full system images for Tachyon.
If your goal is to modify U-Boot or the kernel on a running device, you can do that directly on-device like a standard Linux system.
See the separate pages on U-Boot and building the kernel for those workflows.
This page contains instructions for how to build Tachyon on a host device (such as x86 PC, Mac etc...). Building Tachyon on a device is not tested specifically because the build system can eat up a lot of resources and the build system was not constrained to make sure this was handled correctly.
This page provides step-by-step instructions for building the Tachyon Ubuntu 24.04 system image from source.
By following these steps, you can generate your own image, apply custom changes, or contribute improvements.
The build process uses open-source repositories maintained by Particle.
We recommend performing the build on a macOS/Linux host.
Prerequisites
- Git – to fetch the source code repositories
- Make – ensure
makeis installed on your host machine - Docker – required for build containers
Cloning the Build Repositories
Start by cloning the primary build orchestrator repository, tachyon-composer, which contains the main Makefile that drives the build.
git clone https://github.com/particle-iot/tachyon-composer.git
cd tachyon-composer
The composer automatically uses other repositories, either by downloading releases or locating them locally. It can fetch prebuilt components for specified version numbers.
For most users, cloning other repositories is optional. If you want to inspect or modify components, clone them alongside tachyon-composer:
git clone https://github.com/particle-iot/tachyon-ubuntu-24.04.git
git clone https://github.com/particle-iot/tachyon-ubuntu-24.04-kernel.git
git clone https://github.com/particle-iot/tachyon-u-boot.git
git clone https://github.com/particle-iot/tachyon-overlays.git
git clone https://github.com/particle-iot/tachyon-overlay-tool.git
Running the Build
All build steps are handled by the make command provided by tachyon-composer.
🧩 Simple Build (Recommended First)
Run this first to confirm your environment is working:
make build_24.04 \
VERSIONS_FILE=./versions.json \
INPUT_REGION=RoW \
INPUT_VARIANT=desktop
Parameters:
- VERSIONS_FILE=./versions.json — Uses the default versions file to select the latest component releases from upstream repositories
- INPUT_REGION=RoW — Region for the build. Use NA for North America or RoW (Rest of World)
- INPUT_VARIANT=desktop — Variant to build. Only desktop is supported at this time
This builds using the most up-to-date versions without manually specifying component versions.
Full Build with Explicit Versions
For more control, you can specify all inputs directly:
make build_24.04 \
INPUT_BASE_20_04_VERSION=1.0.170 \
INPUT_REGION=NA \
INPUT_UBOOT_VERSION=1.0.4 \
INPUT_BASE_24_04_VERSION=14-276cd6b \
INPUT_OVERLAY_STACK=ubuntu-desktop-24.04 \
INPUT_ENV_VARS="PKG_particle_linux=0.20.1-1,PKG_particle_tachyon_desktop_setup=2.7.0,PKG_particle_tachyon_ril=0.4.5-1,PKG_particle_tachyon_syscon=1.0.19-1,PIN_PRIORITY=900"
If all parameters are specified, the VERSIONS_FILE is not required. The build will fetch and assemble the specified components exactly as defined.
Using a Local U-Boot Directory
If you’re modifying U-Boot (for example, editing DTS files), you can use a local build by specifying a directory:
make build_24.04 \
VERSIONS_FILE=./versions.json \
INPUT_REGION=RoW \
INPUT_VARIANT=desktop \
INPUT_UBOOT_DIR=../tachyon-u-boot
- INPUT_UBOOT_DIR points to a local directory on your disk
- This is useful for rapid iteration — clone, modify, build, and test locally
What the Build Does:
- Fetches base images – Downloads the base 20.04 image and 24.04 rootfs if missing
- Merges components – Injects Tachyon-specific kernel, firmware, and U-Boot
- Applies overlays – Uses tachyon-overlay-tool to apply configuration and package overlays
- Assembles final image – Produces a complete disk image and zipped bundle with metadata
Build time: The full process can take around 1 hour depending on system and network speed
Build Output
The output is stored under:
./.tmp/output/tachyon-ubuntu-24.04-RoW-desktop-formfactor_dvt-9.9.999.zip
This file contains the final disk image and metadata needed for flashing.
Flashing the Image to Tachyon
Installing a custom-built image is currently a manual process and carries risk. Tachyon’s bootloader and partition structure are complex (A/B slots, modem firmware, etc.). Proceed only if you are comfortable wiping the device.
Use the Particle CLI to install:
Recommended (with setup):
particle tachyon setup --version=<output_bundle_file.zip>
Direct flash:
particle flash --tachyon <output_bundle_file.zip>
Troubleshooting:
- Run make clean to remove intermediate artifacts
- Check logs carefully for missing dependencies or network errors
- Ensure sufficient disk space (8–10 GB recommended)
- Cached artifacts are stored in .tmp/; reuse them to speed up builds
Next Steps
With a successful build, you now have a working Ubuntu 24.04 image for Tachyon. Continue by reviewing the pages on Tachyon boot flow, U-Boot, and Kernel development to understand how each layer integrates.