Yocto Project, kendi gömülü donanımınıza önyükleme yapacak şekilde sıfırdan kendi Linux sisteminizi oluşturmanıza olanak tanıyan harika bir açık kaynak topluluk projesidir. Bu, gömülü Linux’u basit ve erişilebilir hale getirir. Geliştiricilerin, Linux çekirdeğine dayalı özelleştirilmiş sistemler oluşturmalarına yardımcı olmak için yararlı şablonlar, araçlar ve yöntemler sunar ve ARM, PPC, MIPS, x86 (32 & 64 bit) gibi geniş donanım mimarileri desteği sağlar.
Bu makalede şunlar hakkında konuşulacaktır:
- Yocto Project’in temelleri, yapısı ve temel terminolojisi.
- Yocto Project’in sıfırdan özelleştirilmiş gömülü donanım sistemlerine nasıl yardımcı olduğu.
- reTerminal‘da, Raspberry Pi Compute Module 4 tabanlı genişletilebilir HMI cihazında Linux imajınızı nasıl geliştireceğinizi tanıtma.

reTerminal, kutudan çıkar çıkmaz önceden yüklenmiş Raspberry Pi OS ile birlikte gelir. Ayrıca, reTerminal üzerindeki CM4’ün eMMC depolama alanına 64-bit Ubuntu OS veya Fedora, OpenSUSE, Debian, Ubuntu veya CentOS gibi diğer işletim sistemlerini de yükleyebiliriz. Ancak, reTerminal Yocto SDK‘sını wiki sayfamızdan takip ederek, Yocto kullanarak kendi reTerminal sistem imajınızı bile oluşturabilirsiniz. Ayrıca, reTerminal için başlangıç kılavuzu olarak buradan kontrol edebilirsiniz.
Yocto Project Nedir?
Yocto Project, geliştiricilerin kaynak kodundan özelleştirilmiş Linux dağıtımları hızlı bir şekilde oluşturmalarını sağlamak için çapraz platform araçları ve meta verilerle yapılandırılmıştır, bu da geliştirme sürecini basitleştirir. Tam bir Linux dağıtımına kıyasla, özelleştirilmiş sistem, sistemi uygulamanıza daha özgü hale getirmek için gereken yazılımları saklayacaktır. Yocto Project, sistem ve uygulama geliştirme, arşivleme ve yönetim konularında avantajlar sunar. Geliştiriciler, sistemlerini hız, bellek ayak izi ve hatta bellek kullanımı açısından özelleştirebilirler. Yocto Project, birden fazla donanım platformu için yazılım özelleştirmesi ve inşaat değişimi sağlar ve ayrıca yazılım yığınını ölçekli olarak korur. (Referans: Yocto Project Genel Bakış ve Kavramlar Kılavuzu)
Yocto Project, geniş bir esneklik sunar. Kurumsal işletmeler için, gömülü geliştiriciler, mevcut olağanüstü Linux sistemlerine dayalı iç Linux Dağıtımlarını özelleştirip bunları birden fazla nihai ürüne dağıtabilirler.
Yocto’nun işletim sistemi geliştirme sürecinde yardımıyla, çapraz Linux Dağıtım güncellemeleri yükünü azaltacak ve çapraz mimari geçiş için gereken çalışmayı azaltmaya yardımcı olacaktır.
Yocto Project bileşenleri, araçları ve bir inşa iş akışı nelerdir?
Yocto Project, açık kaynak projeleri ve meta verilerin bir kombinasyonudur ve donanım mimarisinden bağımsız olarak gömülü ürünler için özelleştirilmiş Linux sistemleri geliştirmelerine yardımcı olmayı amaçlar. Yocto Project, gömülü cihazlar için (özelleştirilmiş) Linux sistemleri oluşturmak için bir dizi araç ve bol kaynak sağlar (devam etme, yazılım, yapılandırma, şablonlar dahil) topluluk tarafından desteklenmektedir.
Bileşenler ve araçlar, referans dağıtımından (Poky) ve OpenEmbedded inşa sisteminden ayrıdır. Çoğu bileşen ve araç ayrı ayrı indirilir. Yocto Project, aşağıdaki ana bileşenleri birleştirir, korur ve doğrular:

1. BitBake: OpenEmbedded inşa sisteminin temel aracı.
BitBake, inşa sistemi motoru rolünü üstlenir ve meta verileri ayrıştırmaktan, bunlardan görev listeleri oluşturmaktan ve ardından bu görevleri yerine getirmekten sorumludur.
2. OpenEmbedded inşa sistemi, OpenEmbedded Projesi ile birlikte korunmaktadır.
OpenEmbedded-Core (OE-Core), temel tarifler, sınıflar ve ilgili dosyalardan oluşan meta verilerdir. Bu meta veriler, birçok farklı OpenEmbedded türetilmiş sistemde (Yocto projeleri dahil) ortak olacak şekilde tasarlanmıştır.
3. Poky: bir referans dağıtımı.
Poky, Yocto projesinin referans dağıtımı veya referans işletim sistemi adıdır. Poky, OpenEmbedded İnşa Sistemi’ni (BitBake ve OpenEmbedded-Core) ve kendi dağıtımınızı oluşturmaya başlamanıza yardımcı olacak bir dizi meta veri içerir. Poky, küçük bir gömülü işletim sistemi oluşturmak için OpenEmbedded İnşa Sistemini kullanır. Poky, OE-Core’un üstünde bir entegrasyon katmanıdır. Poky, aşağıdakileri sağlar:
- Dağıtımı özelleştirmenin nasıl yapılacağını göstermek için temel bir dağıtım altyapısı düzeyi.
- Yocto Project bileşenlerini doğrulamak için bir araç.

OpenEmbedded İnşa Sistemi İş Akışı
İnşa sistemini indirirken, Poky inşa ‘dosyası’ bir tarif ve bir katman olarak adlandırılır. Kendi özelleştirilmiş gömülü Linux’unuzu oluşturmak için istediğiniz şekilde değiştirebilir, atayabilir veya herhangi bir şekilde kullanabilirsiniz.
Aşağıdaki diyagram, bir inşanın yüksek seviyeli iş akışını temsil eder. Bu bölüm, iş akışını oluşturan temel girdi, çıktı, süreç ve meta veri mantıksal bloklarını genişletir.

Yocto sistem imajını reTerminal’a yükledikten sonra, reTerminal’ı açın. Burada, reTerminal LCD’sinde çekirdek günlüğünün belirdiğini göreceksiniz ve en sonunda Qt kullanılarak yapılmış bir demo uygulaması açılacaktır.

Varsayılan sistem imajının önyükleme süresi yaklaşık 17 saniyedir.

Ayrıca, oluşturduğumuz Yocto İmajı için donanım ve arayüz kullanımını test ettik. Farklı imajlarla donanım kullanılabilirliğini doğrulamak isterseniz, lütfen buraya tıklayın.
Yocto Project, sınırlı kaynaklara sahip gömülü ve IoT cihazları için uygundur: Tam bir Linux dağıtımına kıyasla, gömülü geliştiriciler, gömülü cihazlar için yoğunlaştırılmış bir versiyon oluşturmak için Yocto Project’i kullanabilirler. Sadece Linux Sisteminizde gerekli işlevsel araçları ve yazılım paketlerini eklemeniz yeterlidir. Cihazın bir ekranı varsa, daha iyi bir UI deneyimi oluşturmak için X11, GTK+, Qt, Clutter ve SDL gibi sistem bileşenlerini kullanabilirsiniz.
reTerminal ayrıca 1280 x 720 çözünürlüğe ve 293 PPI piksel yoğunluğuna sahip 5 inç IPS kapasitif çoklu dokunmatik ekran ile donatılmıştır ve yüksek tanım ve zengin renkler sunar. Bu çözünürlük, 5 inç ekranlar için en yaygın çözünürlük olan 800 x 480’den 1.6 kat daha yüksektir. Ayrıca, TN ekranlarla karşılaştırıldığında, reTerminal üzerindeki IPS ekran daha iyi görüntüleme açıları sunar! reTerminal’da Yocto Project kullanarak sisteminiz için farklı GUI etkileşimleri oluşturabilirsiniz.

Yocto Project Terminolojisi
Yocto Project ile gerçek anlamda başlamadan önce, Yocto Project’in yapısını ve tüm bileşenlerini daha iyi anlamanıza yardımcı olacak aşağıdaki terminolojiye bir göz atalım ve gözden geçirelim.
- Yocto Project: Kendi Linux sisteminizi oluşturmanıza olanak tanıyan açık kaynaklı bir topluluk projesi.
- OpenEmbedded: Yocto Projesi’ne özgü yapı sistemi.
- OpenEmbedded-Core: Temel tarifler, sınıflar ve ilgili dosyalardan oluşan meta veriler. Bu meta veriler, birçok farklı OpenEmbedded türetilmiş sistemde (Yocto projeleri dahil) ortak olacak şekilde tasarlanmıştır.
- BitBake: OpenEmbedded yapı sisteminin temel aracı, meta verileri okumaktan, bunlardan görev listeleri oluşturmaktan ve ardından bu görevleri yerine getirmekten sorumludur.
- Poky: OpenEmbedded Yapı Sistemi’ni (BitBake ve OpenEmbedded-Core) ve kendi dağıtımınızı oluşturmaya başlamanıza yardımcı olacak bir dizi meta veriyi içerir. Poky, küçük bir gömülü işletim sistemi oluşturmak için OpenEmbedded Yapı Sistemini kullanır. Poky, OE-Core’un üstünde bir entegrasyon katmanıdır.
- Recipe: Meta verilerin en yaygın biçimi. Recipe, bir ikili görüntü dosyası oluşturmak için kullanılan ayarların ve görevlerin bir listesini içerir. Recipe, kodu nereden alacağınızı ve hangi (kod) yamanızı uygulamanız gerektiğini açıklar. Aynı zamanda, Recipe diğer tarifler veya kütüphaneler üzerindeki bağımlılıkları, yapılandırma ve derleme seçeneklerini de tanımlar. Recipe, Layer içinde saklanır.
- Layer: İlgili tariflerin bir koleksiyonu. A Layer is a hedefi nasıl inşa edeceğini OpenEmbedded yapı sistemine bildiren ilgili meta verileri içeren bir depodur. Yocto Projesi’nin katman modeli, Yocto Projesi geliştirme ortamında işbirliği, paylaşım, özelleştirme ve yeniden kullanımını teşvik eder. Katmanlar, projenizin bilgilerini mantıksal olarak ayırır.
- Metadata: Layer, tarif dosyalarını, yamaları ve kullanıcı tarafından sağlanan ek dosyaları, yapı talimatlarına atıfta bulunan diğer bilgileri ve neyin ve nasıl inşa edileceğini kontrol eden verileri içerir. Yazılım katmanı için iyi bir örnek, OpenEmbedded Layer Index’ten meta-Qt5 Layer olabilir.
reTerminal üzerinde sisteminizi oluşturmanızı dört gözle bekliyoruz, geliştirme sırasında herhangi bir sorunuz olursa bize ulaşmaktan çekinmeyin! Canlı destek almak için lütfen Seeed Discord Topluluğu‘na katılın!
Kaynak:
- Yocto Projesi Genel Bakış ve Kavramlar Kılavuzu Yocto Projesi’nin 2.5 sürümü için geçerlidir.
- Seeed’in wiki’si: reTerminal Yocto Projesi SDK
- reTerminal ürün sayfası: reTerminal – Raspberry Pi CM4 ile Gömülü Linux ve 5 İnç Kapasitif Çoklu Dokunmatik Ekran
