Yocto Projesi Nedir: Eksiksiz Gömülü Kılavuz

  • Yocto Project, katmanlara, tariflere ve BitBake'e dayalı, yeniden üretilebilir, özel gömülü Linux dağıtımları oluşturmanıza olanak tanır.
  • Yapıları ve bakımı hızlandırmak için OpenEmbedded, Poky ve güçlü bir ekosistemi (Toaster, eSDK, CROPS) birleştirir.
  • Esnek güncelleme stratejileri, güvenlik seçenekleri (SELinux, IMA, Güvenli Önyükleme) ve güçlü yönetişim sunar.

Gömülü Sistemler için Yocto Projesi

Eğer gömülü sistemler veya IoT ile ilgileniyorsanız, er ya da geç Yocto Projesi ile karşılaşacaksınız. Binlerce ekibin kendi Linux dağıtımını oluşturduğu temeldir.Donanımınıza ve ihtiyaçlarınıza göre uyarlanmış. Sıradan bir dağıtım değil, özelleştirme ve yeniden üretilebilirliği bir üst seviyeye taşıyan bir dizi araç, meta veri ve işlemden oluşuyor.

Bu rehberde, fazla uzatmadan, Yocto'nun ne olduğunu ve ne olmadığını, neden bu kadar yaygın olduğunu, nasıl oluşturulduğunu (OpenEmbedded, BitBake ve Poky), Katman Modelinin nelerden oluştuğunu, etrafında dönen araçların (Toaster, CROPS, eSDK...) neler olduğunu anlayacaksınız. Bir görüntünün nasıl oluşturulduğu, hangi güncelleme seçeneklerinin mevcut olduğu, güvenlik açısından neler sunduğu ve projenin nasıl yönetildiği ve sürümlendirildiği.Ayrıca günlük hayatınızda uygulayabilmenize yardımcı olacak kavramları ve pratik örnekleri (reTerminal/Raspberry Pi) göreceksiniz.

Yocto Projesi Nedir?

Yocto Projesi, gömülü ve IoT cihazları için özel Linux dağıtımları oluşturmak için yapı taşlarını sağlayan Linux Vakfı tarafından desteklenen bir iş birliği girişimidir. donanım mimarisinden bağımsız olarak2010 yılında kurulmuş ve ilk sürümü 2011 yılında yayınlanmıştır. Yaklaşık iki düzine kuruluş tarafından desteklenmekte ve OpenEmbedded ile yakın iş birliği içinde çalışılmaktadır.

Amacı gömülü yazılım yaşam döngüsünü iyileştirmektir: hızlı, tekrarlanabilir ve tamamen özelleştirilebilir bir sistem oluşturmak için birlikte çalışabilir araçlar, meta veriler ve iş akışları sunar. Yocto + OpenEmbedded + BitBake kombinasyonu sisteminizi nasıl elde edeceğinizi, yapılandıracağınızı, derleyeceğinizi, paketleyeceğinizi ve birleştireceğinizi açıklar. cerrahi bir hassasiyetle.

2018 yılında ARM ve Intel, gömülü sistemlerde kod paylaşımını kolaylaştırmak için Yocto bünyesinde güçlerini birleştirdi. platform tarafsızlığını ve çoklu mimari desteğini güçlendirmekGünümüzde proje, mütevazı panolardan karmaşık endüstriyel ürünlere kadar uzanan cihazlarda kullanılıyor.

Yocto sizi bir yere kilitlemez: satıcıdan ve paket formatından bağımsızdır, bu sayede deb, rpm veya ipk arasında seçim yapabilir ve kesin bir yapı modelini takip edebilirsiniz. Cihaz görüntülerine ek olarak, özel araç zincirleri ve SDK'lar da oluşturabilirsiniz. uygulama geliştirme ve hata ayıklama için.

Yocto Proje Mimarisi

Gömülü sistemlerde Yocto neden kullanılır?

En büyük avantajı kişiselleştirme imkanıdır. Yocto ile tam doğru miktarda bileşen içeren bir işletim sistemi yaratırsınız: ihtiyaç duymadıklarınızı ortadan kaldırır, saldırı yüzeyini ve ağırlığı azaltırsınızve performansı ve tüketimi ayarlarsınız. Genel amaçlı bir dağıtımın kararlarına bağlı kalmazsınız.

Bir diğer önemli sebep ise yeniden üretilebilirliktir. Her şey (katmanlar, tarifler, yapılandırmalar) depolarda sürümlenebilir. aynı görüntünün farklı ortamlarda ve zamanlarda oluşturulmasına olanak tanırBu, CI/CD ile uyumludur ve QA ve uyumluluk için izlenebilirlik sağlar.

Esnekliğiyle de öne çıkıyor: Arm, x86/x86-64, MIPS veya PowerPC gibi mimarileri destekliyor ve Ürün aileleri arasında dağıtımınızı geri dönüştürmeyi kolaylaştırır veya kartları veya SoC'leri değiştirirken pivot yapın.

Topluluk ve endüstri desteği, sürekli güvenlik güncellemeleri ve yamalarının sağlanmasını garanti altına alır. Ürün ömrünü basitleştiren genişletilmiş destek (LTS) sunan şubeler mevcuttur ve saha bakımı.

Bedeli ne mi? Güçlü bir makine ve zorlu bir öğrenme süreci gerektiriyor. Çok küçük projeler veya çok kısa teslim tarihleri ​​olan projeler için, hafif alternatiflere kıyasla aşırı olabilir, ancak orta vadede evrim ve bakımın önemli olduğu durumlarda karşılığını verir.

Temel bileşenler: OpenEmbedded, BitBake ve Poky

yokto diyagramı

Yapının kalbi BitBake'tir: tarifleri ve yapılandırma değişkenlerini yorumlayan, bağımlılıkları çözen ve görevleri sırayla yürüten bir motor (indirme, paketten çıkarma, yapılandırma, derleme, yükleme, paketleme, görüntüleri birleştirme). BitBake'i gömülü dünya için tasarlanmış bir "make" tarzı düzenleyici olarak düşünün..

OpenEmbedded (OE), meta verileri ve sınıf tabanını (OpenEmbedded-Core veya oe-core) sağlar, sürekli test edilen, özenle seçilmiş bir tarif ve yardımcı program seti yüzlerce katman ve projenin temelini oluşturan.

Poky, Yocto'nun referans dağıtımıdır: OE derleme sistemini, geniş bir tarif setini ve başlamak için geçerli bir "kitaba uygun" yapılandırmayı entegre eder. Bu bir ürün dağıtımı değil, öğretici ve işlevsel bir başlangıç ​​noktasıdır. ekosistemi doğrulayan.

Katmanlı Model: Aynı Anda İşbirliği ve Kişiselleştirme

Katman Modeli temel taştır. Katman, tariflerin, yapılandırmaların ve ilgili sınıfların bir deposudur. Katmanlar istiflenir ve hiyerarşik olarak geçersiz kılınabilir, ortak olanı devralmanıza ve tabanı bozmadan değişiklikleri uygulamanıza olanak tanır.

Bu yaklaşım yaptığınız şeylerin mantıksal olarak ayrılmasını sağlar: üreticiden bir BSP katmanı, bir GUI katmanı, bir ara yazılım katmanı, uygulamanız için bir katman, dağıtım için bir katman… "Her şeyi tek bir katmana koymaktan" kaçınmak, güncelleme, bakım ve yeniden kullanma söz konusu olduğunda hayatınızı kolaylaştırır Projeler arası bileşenler.

BSP katmanları kritik öneme sahiptir: belirli hedefler (örneğin, Raspberry Pi aileleri) için aygıt ağaçlarını, çekirdek yapılandırmalarını, sürücüleri ve makine ayarlarını içerirler. Onlar sayesinde donanım eklemek veya değiştirmek her şeyi yeniden yazmak anlamına gelmiyor., sadece uygun katmanı ekleyin veya uyarlayın.

İnşaat İş Akışı

Tipik süreç oldukça açık, ancak yoğundur. İlk olarak mimariyi, politikaları, yamaları ve parametreleri tanımlarsınız (örneğin, local.conf y bblayers.conf). BitBake kaynakları (tarball'lar, git…), yamaları getirir, yapılandırır ve derler sınıflara bağlı olarak (autotools, cmake, vb.)

Ara sonuç geçici bir sahneye kurulur ve seçilen formatta (deb, rpm, ipk) paketlenir. Bu paketler ile rootfs oluşturulur ve son görseller oluşturulur. cihaza flaş edecek veya dağıtacaksınız.

Sağlamlık kontrolleri, regresyonlar ve QA testleri derleme süreci boyunca gerçekleştirilir; ayrıca görüntüleri QEMU'da başlatabilir ve doğrulayabilirsiniz. Bu, gerçek donanımda deneme-yanılma döngüsünü azaltır., özellikle erken aşamalarda.

Yocto çevresindeki araçlar ve alt projeler

yocto dosyaları

Ekosistem, hayatınızı kolaylaştıran yardımcı programlar sunar. CROPS, Linux, Windows ve macOS'ta tutarlı derleme ortamları sağlayan bir kapsayıcı çerçevesidir; karma ekipler veya bağımlılıkları kapsüllemek için idealdirToaster, yapıları yapılandırmak ve başlatmak ve ölçümleri ve eserleri görüntülemek için kullanılan bir web arayüzüdür.

eSDK (Genişletilebilir SDK), uygulama geliştiricilerinin kütüphaneleri ve değişiklikleri ekleyin ve bunları görüntüye geri besleyin Ayrıca, tek bir komutla birden fazla mimari oluşturmak için Multi-Config desteği ve kaynaklar mevcut olmadığında ikili dosyaları dahil etmek için "ikili derlemeler" de mevcuttur.

Sistem, bir lisans bildirimi ve kullanılan koda ait referanslar oluşturabilir, uyumluluğun anahtarı düzenlenmiş ortamlarda veya copyleft yükümlülükleri olan yerlerde.

Şemsiye altındaki diğer projeler arasında pseudo, cross-prelink, hafif grafik ortamlar için Matchbox paketi ve daha fazlası gibi yardımcı programlar yer alıyor. Daha önce Eclipse ile bir entegrasyon vardı ancak 2.7 sürümünden itibaren kaldırıldı. yeni araçlar karşısında eskimeye başlıyor.

Paket yönetimi ve güncelleme stratejileri

Saha cihazlarının güncellenmesi hayati önem taşır ve Yocto çeşitli seçenekler sunar. Tüm görüntüyü (tam sistem tutarlılığı) güncellemeyi seçebilirsiniz. bant genişliğinden tasarruf etmek için değişiklikleri paket düzeyinde dağıtın, geri dönüşümlü atomik modeller kullanın (OSTree gibi) veya transferleri en aza indirmek için deltalara başvurun.

Tek bir çözüm yok: "Büyük sıçramalar" için tam görüntü, ayrıntılı değişiklikler için paketler, geri alma içeren kritik ortamlar için atomik görüntü ve dar ağlar için deltalar iyidir. Avantajı, ürününüze uygun stratejiyi seçebilmenizdir. ve operasyonunuz.

Test etme, emülasyon ve dokümantasyon

Yocto kaliteyle ilgilenir. Sağlamlık ve regresyon testleri, QEMU'da önyükleme ve test desteği ve test paketlerini entegre etme olanağı içerir. Bu, doğrulama döngüsünü daraltır ve donanım sürprizlerini azaltır..

Dokümantasyon, projenin temel taşlarından biridir. Her sürümde güncellenmiş kılavuzlar ve Güncel ve arşivlenmiş versiyonların belgeleri saklanır, davranışın sürümler arasında değişebilmesi nedeniyle çok gerekli bir şey.

Yönetim ve lansmanlar

Teknik yönlendirme proje mimarına (Richard Purdie) ve bileşen başına bir bakımcı hiyerarşisine düşer, Linux çekirdeğine benzer bir modeldeİdari tarafta, üyelerden (silikon üreticileri, Yocto tabanlı ticari satıcılar, kurumsal kullanıcılar ve danışmanlar) temsilcilerin yer aldığı bir Danışma Kurulu ve finans, altyapı, tanıtım ve topluluk için çalışma grupları bulunmaktadır.

Sürüm takvimi altı ayda bir (Nisan ve Ekim) olup, son üç dal için özel sürümler yayınlanmaktadır. Bu, şirketlerin plan yapabileceği öngörülebilir bir hız belirler. katmanları ve ürünleri güncellemek için.

Sürümler ve kod adları

Yocto, tarihsel olarak numara ve takma adla tanımlanan sürümler yayınladı. Aşağıda temsili bir sürüm ve tarih seçkisi bulunmaktadır:

Versiyon Kod adı tarih
3.3 Sert Düğüm 04/2021
3.2 Gatesgarth 11/2020
3.1 Dunfell 04/2020
3.0 Zeus 10/2019
2.7 Guerrero 04/2019
2.6 güm 11/2018
2.5 Sumo 04/2018
2.4 Rocko 10/2017
2.3 Pyro 04/2017
2.2 Morty 10/2016
2.1 Krogoth 04/2016
2.0 Jethro 10/2015
1.8 Fido 04/2015
1.7 Şaşkın 10/2014
1.6 Papatya 04/2014
1.5 Dora 10/2013
1.4 Dylan 04/2013
1.3 Dylan 10/2012
1.2 Denzil 04/2012
1.1 Edison 10/2011
1.0 Bernard 2011
0.9 Laverne 2010

Genel görsellere ek olarak, proje, OE yapı sistemini ve katmanlara ayrılmış kapsamlı bir tarif kümesini entegre eden Poky adlı bir referans uygulamasını da sürdürüyor. gömülü bir sistem için işlevsel bir şablon olarak kullanışlıdır.

Marka Programı: Katılımcılar ve Uyumluluk

yocto linux

Yocto Marka Programı, kuruluşların ve ürünlerin çalışmalarını projeyle iki mühürle ilişkilendirmelerine olanak tanır: Yocto'yu kamuya açık olarak kullanan ve destekleyen kuruluşlar için "Yocto Proje Katılımcısı"ve üye kuruluşlardan OE uyumlu ürünler, BSP'ler ve katmanlar için “Yocto Project Compatible”.

Temel Sözlük

  • Yapılandırma dosyaları (conf): küresel değişkenleri, kullanıcı seçeneklerini ve donanım ayarlarını tanımlar; belirli bir platform için neyin derleneceğini ve görüntüye neyin gireceğini yönlendirirler.
  • Tarifler (.bb): Paketleri oluşturmak için kodun kaynağını, yamaları, bağımlılıkları ve derleme seçeneklerini ve bunlarla birlikte son görüntüyü açıklayın.
  • Katmanlar: Tariflerin ve ilgili meta verilerin koleksiyonları; özelleştirmelerin izole edilmesine ve çoklu mimarilerin temiz bir şekilde desteklenmesine olanak tanır.
  • meta: Bunlara tarifler, yapılandırmalar, sınıflar ve sürüm ve yama referansları dahil olmak üzere neyin ve nasıl oluşturulacağını kontrol eden veriler dahildir.
  • BitBake: tarifleri analiz eden ve görevlerin sırasını yapılandıran yürütme motoru; "make"e benzer, ancak paketlere ve görsellere yöneliktir.
  • paketler: rootfs ve sistem görüntülerini bağlamak için kullanılan oluşturulmuş eserler (deb, rpm, ipk).
  • eSDK:Uygulama geliştiricilerinin değişiklikleri ve kütüphaneleri entegre edip hedef donanımda test etmelerine olanak sağlayan genişletilebilir bir SDK.
  • Görüntü: hedef cihaza yüklenecek veya dağıtılacak Linux işletim sisteminin ikili biçimi.

Kullanım durumları, IoT ve sistem seçimi

Gömülü pazar sürekli bir büyüme yaşıyor: daha fazla özelleştirilmiş cihaz, daha fazla çeşitlilikte kart ve SoC ve dolayısıyla özel işletim sistemi sistemlerine daha fazla ihtiyaç varLinux kendini fiili standart olarak kabul ettirdi ve Yocto onu "kendi isteğinize göre" inşa etmek için mükemmel bir seçim.

Debian/Ubuntu gibi genel amaçlı bir ikili dağıtımla karşılaştırıldığında Yocto, sürümler ve yamalar dahil olmak üzere neyin yüklendiği üzerinde yeniden üretilebilirlik ve izlenebilirlik ile tam kontrol sağlar. Sınırlı alan, güvenlik ve uzun vadeli bakım gerektiren ürünler içinpragmatik bir karardır.

Şirketler Yocto'yu modern saha operasyon mimarileriyle (OTA, güvenli bölümler, geri alma) birleştiriyor, CI/CD hatlarını, otomatik testleri ve kademeli dağıtımları entegre etmeHatta Yocto'yu uç yeteneklerini genişletmek için kullanan çözümler bile var (örneğin, Yocto tarafından desteklenen analitik, yapay zeka ve bulut bağlantısına odaklanan platformlar).

Güvenlik ve iyi uygulamalar

Güvenlik önceliklidir. Proje, CII En İyi Uygulamaları ile uyumludur ve yeniden üretilebilir yapıları teşvik eder (testler, çekirdek-görüntü-minimal'de yaklaşık %99,8 başarı elde etmiştir). Bağımlılıkları, ortamları ve araç zincirlerini kontrol etmek derleme kirliliğini azaltır..

Çalışma zamanı düzeyinde, ayrıntılı erişim denetimi için SELinux'u, çalışma zamanı bütünlüğü ölçümü için IMA'yı ve önyükleyiciyi, çekirdeği ve initramfs'yi doğrulayan güvenli önyükleme zincirlerini etkinleştirebilirsiniz. Dosya sistemi şifrelemesi ve anahtar yönetimi, dinlenme sırasında tam koruma sağlar.

Teoriden pratiğe: Bir imaj inşa etmek

En temel yol Poky'i klonlamak, ortamı başlatmak, makineyi seçmektir (örneğin bir QEMU hedefi veya bir Raspberry Pi), Gerekli BSP katmanlarını ekleyin ve BitBake'i bir referans görüntüye karşı çalıştırınİlk yapı biraz zaman alıyor, ancak daha sonra kademeli yapılar hızla ilerliyor.

Donanım gibi şeyler için Raspberry Pi/reTerminalTipik akış, meta-raspberrypi, meta-oe, meta-python gibi katmanların klonlanmasını veya cihaz satıcısından bir katmanı içerir, Çekirdeği ayarlayın, katmanları ve değişkenleri içe aktarın ve belirli bir görüntü oluşturun (örneğin, bir “rpi-test-image”).

Toaster, GUI aracılığıyla aynısını yapmanıza olanak tanır: bir proje oluşturun, sürümü seçin, makineyi (raspberrypi4-64, raspberrypi5…), Katmanları içe aktarın, değişkenleri ayarlayın (örneğin, grafiksel arka uçlar) ve yapıyı tarayıcıdan başlatın.. İşiniz bittiğinde, eserleri indirin (örneğin .wic.bz2) ve flaşlayın.

BitBake, katmanları ve tarifleri listelemek, bağımlılıkları keşfetmek, bir paket için devshell açmak için kullanışlı komutlar sunar. Görevleri denetlemek veya çevreyi yeniden inşa etmek için temizlemekBu, bir şeyler ters gittiğinde teşhisin hızlandırılmasını sağlar.

Ayrıntılı iş akışı (operasyonel özet)

  1. Mimariyi, politikaları, yamaları ve yapılandırmayı tanımlar.
  2. Yazı tiplerini belirtilen kaynaklardan indirin.
  3. Paketi açın, yamaları uygulayın ve configure/compile komutunu çalıştırın uygun.
  4. Sahneleme ve paketleme.
  5. QA ve kontrolleri çalıştırın.
  6. Paket beslemelerini yayınlar.
  7. Son görüntüyü oluşturur.

Bu şema, bileşenlerinize göre sınıflara ve katmanlara uyum sağlar: belirli bir grafiksel arka uç, kendi çekirdek modülleriniz veya farklı bir init isteyebilirsiniz. Yocto'nun güzelliği, tüm bunların sürümlenebilir meta veri olarak ifade edilmesidir..

Takım Benimseme İpuçları

Windows ortamlarından gelen profiller için Unix/Linux temellerine yatırım yapmak çok faydalı oluyor. İş istasyonunuzda bir Linux dağıtımıyla çalışın, Bash ve Python'ı anlayın ve çapraz araç zincirlerine aşina olun. eğriyi hızlandırır.

Projeye yeniyseniz, uçtan uca iş akışını doğrulamak için Poky ve QEMU ile başlayın. Daha sonra gerçek donanım BSP katmanını ve kendi uygulama katmanınızı ekleyin.. Konteyner yapılarını (CROPS) ve CI/CD'yi baştan itibaren otomatikleştirin.

Saha yükseltme ve operasyon yetenekleri

Ürün fabrikadan çıktığında bir güncelleme stratejisine ihtiyacınız vardır. Yocto ile paket depoları, imzalı tam imajlar ve geri alma veya delta içeren atomik şemalar arasından seçim yapabilirsiniz. Güncelleme boyutuna, bant genişliğine ve riske göre seçim yapın Üstlenmek istediğin şey.

Lisans envanterinin ve ilgili kaynak kodunun entegre edilmesi bir diğer uyumluluk gerekliliğidir. Yocto lisans bildirimleri üretir ve bileşen koduna bağlanabilir.denetimleri ve yeniden dağıtım yükümlülüklerini kolaylaştırmaktadır.

OpenEmbedded nedir?
İlgili makale:
OpenEmbedded nedir ve gömülü Linux geliştirmeyi nasıl dönüştürür?

Google'da tercih edilen kaynak olarak ekleyin.