This section covers the configuration file structure of the tool called Debos, which is used to compile images for Gemstone development boards. Before starting this section, you should have read the Components section.

Before proceeding, make sure you have reviewed the following files:

As of the date this document was written, Gemstone development boards support , , and . Each Image, Machine, and Distribution has its own unique differences and customization settings.

When creating a distribution, the commands devbox shell —> task box —> task distro:build are called sequentially. Debos is then launched inside Docker, where customizations are made based on the provided variables, necessary files are copied, and installation scripts are executed.

Example
task distro:build MACHINE=intel-corei7-64 DISTRO_TYPE=desktop DISTRO_BASE=ubuntu DISTRO_SUITE=jammy IMG_SIZE=16G

1. Parameters

A few parameters are summarized here. For the rest, refer to the vars section in the sdk/Taskfile.yml file.

MACHINE
default:"t3-gem-o1"
required

beagley-ai intel-corei7-64 t3-gem-o1 qemuarm64

DISTRO_TYPE
default:"desktop"
required

minimal desktop kiosk

DISTRO_BASE
default:"ubuntu"
required

ubuntu debian

DISTRO_SUITE
default:"jammy"
required

jammy noble bullseye bookworm

DISTRO_ARCH
default:"amd64"
required

amd64 arm64

IMG_SIZE
default:"4GB"

The size of the resulting .img file after building.

2. Distributions

During the process of uploading an image to a new board using the Gemstone Imager application, the above distributions can be selected. By default, Ubuntu 22.04 is preferred on Gemstone development boards, but Debian 11 and 12 images are also supported to meet the needs of different projects.

In Debian distributions (roughly speaking), the core principle is security and stability, while Ubuntu distributions prioritize the same principles along with more frequent updates and delivering newer versions of packages to end-users. Users’ preferences depend entirely on their system definitions and needs.

Ubuntu 22
DISTRO_BASE=ubuntu DISTRO_SUITE=jammy

Ubuntu’s latest LTS (Long-term support) version is 24.04, but 22.04 is preferred due to various issues encountered in projects like ROS and Yocto.

Ubuntu 24
DISTRO_BASE=ubuntu DISTRO_SUITE=noble

Preferred for the latest libraries and applications.

Debian 11
DISTRO_BASE=debian DISTRO_SUITE=bullseye

Used in projects where the current code is stable for Debian 11.

Debian 12
DISTRO_BASE=debian DISTRO_SUITE=bookworm

The latest version of Debian.

3. Images

Minimal
DISTRO_TYPE=minimal

Can be used in IoT, Real-Time Systems, Network Applications, Embedded Software, Manned and Unmanned Vehicles, Smart Home Applications, Autopilot, etc.

Desktop
DISTRO_TYPE=desktop

Can be used for testing, prototyping, development, education, or as a small computer.

Kiosk
DISTRO_TYPE=kiosk

Can be used in projects like touchscreen Kiosks, Autonomous Vehicle Panels, Command Control Panels, etc.

4. Machines

Gemstone Obsidian
MACHINE=t3-gem-o1 DISTRO_ARCH=arm64

The machine type for the T3 Gemstone Obsidian development board.

Intel Core-i7
MACHINE=intel-corei7-64 DISTRO_ARCH=amd64

Preferred for virtual use with QEMU.

BeagleY AI
MACHINE=beagley-ai DISTRO_ARCH=arm64

The created images can also be used on the BeagleY-AI development board.

Qemu ARM64
MACHINE=qemuarm64 DISTRO_ARCH=arm64

Preferred for virtual use with QEMU.

5. Configuration File

The Debos tool reads the sdk/distro/distro.yaml file and performs a 4-step process to create the .img file/distribution.

1

Debootstrap/Apt

Based on the specified Distribution (Ubuntu or Debian), it downloads all .deb packages from the respective distribution’s APT servers using the debootstrap tool.

2

Package Installation

Creates a folder structure called rootfs to meet GNU/Linux operating system requirements and installs the downloaded .deb packages into rootfs using the chroot method.

3

Customization Processes

After the installation of deb packages is complete, files to be included in the image are copied, and installation scripts are executed based on the overlay and run definitions in the yaml file.

4

Image File Creation

After all the above steps are successfully completed, the boot and rootfs disk partitions are created according to the image-partition definition, the .img file is generated, and all files are moved into it.