Skip to main content

Modifying & Building the Tachyon Kernel

The Linux kernel is responsible for all low-level hardware enablement on Tachyon.
If you need to enable drivers, adjust kernel configuration, or apply patches, you will work in the following repository:

https://github.com/particle-iot/tachyon-ubuntu-24.04-kernel

This repository follows Ubuntu’s Debian kernel packaging model and produces installable .deb artifacts.
The workflow mirrors the Tachyon U-Boot flow: a single build tool and a single install tool.


Overview of the Flow

  1. Modify kernel source or configuration
  2. Build using ./build.sh
    • On-device or
    • Inside Docker (recommended)
  3. Install using ./install.sh
    • Over ADB or SSH
    • From URLs or local .deb files
  4. Reboot and verify

1. Get the Source

git clone https://github.com/particle-iot/tachyon-ubuntu-24.04-kernel.git
cd tachyon-ubuntu-24.04-kernel

2. Modify Kernel Configuration

Kernel configuration is managed using Ubuntu’s annotations system under:

debian.particle/config/

Option A: Edit Annotations Directly (Preferred)

Edit:

debian.particle/config/annotations

Adjust any CONFIG_* entries as needed, then regenerate the config fragments:

debian/rules updateconfigs

Option B: Interactive Menuconfig

To use menuconfig:

debian/rules editconfigs

This launches an interactive configuration editor. When you save and exit, the configuration fragments under debian.qcom/config/ are updated automatically.


3. Build the Kernel (build.sh)

All kernel builds are driven through ./build.sh, which automatically selects the appropriate environment.

Build Modes

• On-device (native build on Tachyon) • Docker-based (recommended for speed and consistency)

You do not need to invoke fakeroot or debian/rules directly.

Example: Standard Build

./build.sh

The script will:

• Set up the build environment • Run the Debian kernel build • Produce installable .deb packages


4. Build Outputs

On successful completion, the build outputs Debian packages: • linux-image--particle_.deb • linux-modules--particle_.deb • linux-headers--particle_.deb (optional)

These artifacts can be: • Installed locally • Copied to another machine • Hosted and installed via URL


5. Install the Kernel (install.sh)

Kernel installation is handled by ./install.sh, following the same conventions as U-Boot installation.

Installation Methods • ADB • SSH • Local!

Package Sources • Remote URLs (downloaded automatically) • Local .deb files


Example: Install via ADB Using URLs

./install.sh --adb -s ea411e98c34eef2444aadac9fe22b467b7c0378e7d99464480646301125dba5f install \
https://linux-dist.particle.io/kernel/prerelease/build-245-def60032b/linux-image-6.8.0-1057-particle_6.8.0-1057.58+particle1_arm64.deb \
https://linux-dist.particle.io/kernel/prerelease/build-245-def60032b/linux-modules-6.8.0-1057-particle_6.8.0-1057.58+particle1_arm64.deb

The installer will:

• Download the packages (if needed) • Transfer them to the device (if needed) • Install via dpkg


Example: Install Local Build Artifacts

If you built the kernel locally:

./install.sh --adb install \
./linux-image-*-particle_XXX.deb \
./linux-modules-*-particle_XXX.deb

SSH Installation

The SSH flow mirrors the U-Boot SSH install format:

./install.sh --ssh user@device-ip install \
linux-image-*.deb \
linux-modules-*.deb

  1. Reboot and Verify

After installation:

sudo reboot

Verify the running kernel:

uname -a