Bu bölümde Gemstone geliştirme kartlarında bulunan imajların derlenmesi için kullanılan Debos isimli aracın konfigürasyon dosya yapısı ele alınacaktır. Bölüme başlamadan önce Bileşenler kısmını okumuş olmanız gerekmektedir.

Devam etmeden önce aşağıdaki dosyaları incelemiş olduğunuza emin olunuz.

Gemstone geliştirme kartlarında, dokümanın yazıldığı tarih itibariyle , ve bulunmaktadır. Her bir İmaj, Makine ve Dağıtımın kendine özgü farklılıkları, özelleştirme ayarları mevcuttur.

Dağıtım oluşturulurken sıra ile devbox shell —> task box —> task distro:build komutları çağrıldığında Debos; Docker içerisinden başlatılarak parametre olarak verilen değişkenlere göre özelleştirmeler yapılır, gerekli dosyalar kopyalanır ve kurulum scriptleri çalıştırılır.

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

1. Parametreler

Özet olarak bir kaç parametre açıklanmış olup geri kalanlar için sdk/Taskfile.yml dosyasındaki vars bölümü incelenmelidir.

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"

Derleme sonucu oluşan .img uzantılı imaj dosyasının boyutudur.

2. Dağıtımlar

Gemstone Imager uygulaması ile yeni bir karta imaj yükleme sürecinde, yukarıdaki dağıtımlar seçilebilmektedir. Varsayılan olarak Gemstone geliştirme kartında Ubuntu 22.04 dağıtımı tercih edilmekle birlikte farklı projelerdeki ihtiyaçlar göz önüne alınarak Debian 11 ve 12 imajları da desteklenmiştir.

Debian dağıtımlarında (kabaca ifade edilecek olursa) temel ilke; güvenlik ve kararlılık iken Ubuntu dağıtımlarında; aynı ilke birlikte daha sık güncelleme ve işletim sistemininde bulunan paketlerin yeni versiyonlarını son kullanıcıya ulaştırma denilebilir. Kullanıcıların tercih sebebi ise tamamen sistemleri tanımları ve ihtiyaçları ile ilgilidir.

Ubuntu 22
DISTRO_BASE=ubuntu DISTRO_SUITE=jammy

Ubuntu’nun en güncel LTS (Long-term support) sürümü 24.04’tür fakat özellikle ROS, Yocto gibi projelerde çeşitli problemler yaşanabildiği için 22.04 tercih edilmektedir.

Ubuntu 24
DISTRO_BASE=ubuntu DISTRO_SUITE=noble

En güncel kütüphaneler ve uygulamalar için tercih edilmektedir.

Debian 11
DISTRO_BASE=debian DISTRO_SUITE=bullseye

Mevcut kodları Debian 11 için stabil olan projelerde tercih edilmektedir.

Debian 12
DISTRO_BASE=debian DISTRO_SUITE=bookworm

Debian’ın en güncel sürümüdür.

3. İmajlar

Minimal
DISTRO_TYPE=minimal

IoT, Gerçek Zamanlı Sistemler, Network Uygulamaları, Gömülü Yazılım, İnsanlı ve İnsansız Araçlar, Akıllı ev uygulamaları, Otopilot vb. alanlarda kullanılabilir.

Desktop
DISTRO_TYPE=desktop

Test, Prototip, Geliştirme, Eğitim vb. amaçlarla veya küçük bir bilgisayar olarak kullanılabilir.

Kiosk
DISTRO_TYPE=kiosk

Üzerine dokunmatik ekran bulunan Kiosk, Otonom Araç Paneli, Komuta Kontrol Paneli gibi projelerde kullanılabilir.

4. Makineler

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

T3 Gemstone Obsidyen geliştirme kartına ait makine türüdür.

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

QEMU ile sanal olarak kullanmak için tercih edilmektedir.

BeagleY AI
MACHINE=beagley-ai DISTRO_ARCH=arm64

Oluşturulan imajlar aynı zamanda BeagleY-AI geliştirme kartında kullanılabilmektedir.

Qemu ARM64
MACHINE=qemuarm64 DISTRO_ARCH=arm64

QEMU ile sanal olarak kullanmak için tercih edilmektedir.

5. Konfigürasyon Dosyası

Debos isimli araç sdk/distro/distro.yaml isimli dosyayı okuyarak 4 aşamalı bir işlem gerçekleştirerek .img dosyasını/dağıtımı oluşturur.

1

Debootstrap/Apt

Parametre olarak verilen Dağıtım türüne göre (Ubuntu veya Debian) debootstrap aracıyla ilgili dağıtımların APT paket sunucularından .deb uzantılı bütün paketleri indirir.

2

Paketlerin Kurulumu

İndirilen .deb uzantılı paketlerin kurulumu için rootfs ismi verilen bir klasör yapısı oluşturarak GNU/Linux işletim sistemi gereksinimlerini ayarlayarak paketlerin kurulumunu rootfs içerisine chroot yöntemi ile yapar.

3

Özelleştirme İşlemleri

Deb paketlerinin kurulumu tamamlandıktan sonra yaml dosyasında bulunan overlay ve run türündeki tanımlamalarla imajın içerisine yüklenecek dosyalar kopyalanır ve kurulum scriptleri çalıştırılır.

4

İmaj Dosyası Oluşturma

Yukarıdaki bütün işlemler başarılı bir biçimde tamamlandıktan sonra image-partition türündeki tanımlamaya göre boot, rootfs disk bölümlendirmeleri yapılır, .img uzantılı dosya oluşturulur ve bütün dosyalar içerisine taşınır.