> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Yocto

> Gemstone Development Kit

<Note>
  Bu bölümde Gemstone geliştirme kartlarının Kernel, Bootloader, Firmware, BSP (Board Support Packages),
  Initrd (Init Ramdisk) bileşenlerinin derlenmesi için kullanılan
  [meta-gemstone](https://github.com/t3gemstone/meta-gemstone) Yocto çalışması ele alınacaktır.
</Note>

<Tip>
  Bölüm bitiminde aşağıdaki konularda bilgi sahibi olacaksınız.

  * Gemstone'a ait yocto çalışmalarının yapısı
  * Yocto derleme işlemlerinin nasıl yapıldığı
</Tip>

Yocto buildi almak için sırasıyla `devbox shell` --> `task box` --> `task yocto:build`
komutları çağrılır. Taskfile, yocto buildleri için sizlerden sadece `MACHINE` değişkenini
bekler. Atama yapmazsanız varsayılan olarak `intel-corei7-64` seçilir.

```bash Örnek theme={"system"}
task yocto:build MACHINE=t3-gem-o1
```

Yukarıdaki komut çağrıldığında Yocto, seçtiğiniz makine için initrd imajı, kernel, bootloader ve firmware'ları
oluşturabilmek için çeşitli indirme, derleme ve paketleme işlemleri yapacaktır. İşlem ilk kez başlatıldığında; internet hızınıza, işlemci gücünüze ve
RAM miktarınıza bağlı olarak 1 saate yakın sürmektedir. Yocto, ara işlemleri diske önbelleklediğinden (cache)
sonraki buildler çok daha hızlı tamamlanacaktır.

### 1. meta-gemstone

Gemstone için Yocto özelinde yapılan tüm geliştirmeler [meta-gemstone](https://github.com/t3gemstone/meta-gemstone)
adlı katmanda toplanmıştır. Yocto'nun modüler yapısını korumak ve sistemi katman güncellemelerine hızlıca adapte
edebilmek amacıyla <Tooltip tip="meta-ti, meta-oe, ...">diğer katmanlar</Tooltip> üzerinde hiçbir değişiklik yapılmamalıdır.
Bunun yerine istenen tarifler Yocto'nun `.bbappend` dosyaları kullanılarak meta-gemstone katmanı üzerinde özelleştirilmelidir.

#### 1.1. Klasör yapısı

```bash theme={"system"}
meta-gemstone
|-- conf
|   |-- distro
|   |-- machine
|   |-- templates
|-- recipes-connectivity
|-- recipes-core
|   |-- images
|-- recipes-devtools
|-- recipes-graphics
|-- recipes-kernel
|-- ...
```

<ResponseField name="conf/">
  Dağıtım konfigürasyonu, <Tooltip tip="T3-GEM-O1, T3-GEM-S1, ...">makine tanımları</Tooltip> ve makinelere özel konfigürasyon şablonları bu klasörde yer alır.
</ResponseField>

<ResponseField name="recipes-core/images/">
  Initrd ve diğer imajların hangi paketleri barındıracağı, gereksinimleri ve özellikleri gibi tanımlamalar bu klasör
  altında bulunan `.bb` uzantılı tarif dosyalarında yapılır.
</ResponseField>

<ResponseField name="recipes-*/">
  `recipes-` şeklinde başlayan diğer tüm klasörler, tarifleri kategorize etmek için kullanılmaktadır. Diğer
  katmanlarda yazılan tarifleri özelleştirmeyi sağlayan `.bbappend` uzantılı dosyalar genellikle bu klasörler altında
  tutulur.
</ResponseField>

### 2. Yocto Çıktıları

Yocto, build işlemi esnasında neredeyse tüm projeleri DEB, IPK ya da RPM biçiminde paketleyebilmektedir.
Gemstone, debian tabanlı olduğundan Gemstone dağıtımı için derlenen projelerin DEB biçiminde paketlenmesi
uygun görülmüştür.

<Note>
  Üretilen paketlere `<sdk-dizini>/build/yocto/tmp-musl/deploy/deb/<makine-adi>` klasöründen ulaşabilirsiniz.
</Note>

Yocto'nun ürettiği DEB paketleri Gemstone dağıtımında iki alanda kullanılmaktadır:

<Columns cols={2}>
  <Card title="Debos">
    Debos, Gemstone imajını oluştururken /boot dizinine konulacak olan kernel, bootloader, firmware,
    device-tree ve initrd gibi dosyaları Yocto'nun oluşturduğu DEB paketlerinden almaktadır.
  </Card>

  <Card title="Gemstone APT Sunucusu">
    Kernel modülleri, initrd, bootloader ve firmware gibi makineye özel olan DEB paketleri Yocto ile
    üretilmekte ve ***[Gemstone APT sunucusuna](https://packages.t3gemstone.org/apt)*** yüklenmektedir.
  </Card>
</Columns>
