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 Yocto çalışması ele alınacaktır.
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ığı
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.
Örnek
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 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 ü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ı

meta-gemstone
|-- conf
|   |-- distro
|   |-- machine
|   |-- templates
|-- recipes-connectivity
|-- recipes-core
|   |-- images
|-- recipes-devtools
|-- recipes-graphics
|-- recipes-kernel
|-- ...
conf/
Dağıtım konfigürasyonu, ve makinelere özel konfigürasyon şablonları bu klasörde yer alır.
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.
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.

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.
Üretilen paketlere <sdk-dizini>/build/yocto/tmp-musl/deploy/deb/<makine-adi> klasöründen ulaşabilirsiniz.
Yocto’nun ürettiği DEB paketleri Gemstone dağıtımında iki alanda kullanılmaktadır:

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.

Gemstone APT Sunucusu

Kernel modülleri, initrd, bootloader ve firmware gibi makineye özel olan DEB paketleri Yocto ile üretilmekte ve Gemstone APT sunucusuna yüklenmektedir.