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
- Modify kernel source or configuration
- Build using
./build.sh- On-device or
- Inside Docker (recommended)
- Install using
./install.sh- Over ADB or SSH
- From URLs or local
.debfiles
- 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
- Reboot and Verify
After installation:
sudo reboot
Verify the running kernel:
uname -a