Yocto Projesi, gömülü sistemler için özelleştirilebilir Linux dağıtımları oluşturmayı kolaylaştırmak amacıyla 2010 yılında Linux Foundation öncülüğünde başlatılan bir açık kaynak kodlu projedir.
Dünya genelinde birçok şirket ve geliştirici tarafından desteklenen proje, ARM, MIPS, PowerPC, RISC-V ve x86 gibi pek çok donanım mimarisi için hızlı, tekrarlanabilir ve modüler Linux dağıtımları oluşturmaya imkan vermektedir. Texas Instruments, NXP ve STMicroelectronics gibi birçok donanım üreticisi, Yocto'nun genişletilebilir yapısı sayesinde, kendi platformları için cihaz sürücüleri ve önyükleyiciler (bootloader) gibi bileşenleri BSP (Board Support Package) adı verilen paketler aracılığıyla projeye dahil edebilmektedirler.
Kullanım Alanları
Yocto Projesi, gömülü sistemlerin yaygın olduğu pek çok sektörde kullanılmaktadır. Savunma ve havacılık, endüstriyel otomasyon, tıbbi cihazlar, otomotiv ve telekomünikasyon gibi alanlarda özelleştirilmiş ve güvenilir Linux tabanlı cihazlar geliştirmek için Yocto projesi tercih edilmektedir.
Projeyi Kullanan Organizasyonlar
- ARM
- Intel
- Qualcomm
- Wind River
- BMW
- LG
- Siemens
Çalışma Şekli
Yocto Projesi'nin hızlı, modüler ve tekrarlanabilir dağıtımlar oluşturmasında etkisi büyük olan iki bileşen tarifler (recipes) ve katmanlardır (layers). Tarifler, yazılımlar için indirme, derleme ve paketleme gibi görevleri (task) tanımlayan .bb uzantılı dosyalardır. Aynı zamanda yazılımın derleme/çalışma zamanı gereksinimleri ve derleme işlemi sonucu oluşacak dosyaların nasıl paketleneceği gibi verileri de barındırırlar.
BitBake adı verilen görev yürütme aracı (task execution engine) ise dağıtımı oluşturacak olan yazılımların tariflerini okur ve gereksinimleri tespit eder. Ardından tariflerde tanımlanan görevleri paralel bir şekilde çalıştırarak dağıtımı oluşturur. Görevlerin çıktıları önbelleğe alınır ve bu sayede dağıtıma yapılan ekleme/çıkarma işlemlerinde görevlerin tekrardan çalıştırılması gerekmez.
Katmanlar ise bahsi geçen tarifleri ve çeşitli konfigürasyon dosyalarını gruplayan yapılardır. Katman isimleri meta- ön eki ile başlar (istisnalar hariç). Donanım desteği, sistem yapılandırması ve uygulama tarifleri genellikle birbirlerinden ayrı katmanlarda tutulur. Örnek olarak Texas Instruments'ın (TI) SoC ve geliştirme kartları için oluşturduğu meta-ti isimli BSP katmanı ve Qt uygulamaları geliştirmeyi ve çalıştırmayı sağlayan meta-qt3/4/5/6 isimli yazılım katmanları verilebilir. Dağıtım oluşturmak istendiğinde bu katmanlar üzerinde direkt olarak değişiklik yapılmaz; bunun yerine yeni bir katman oluşturulup BitBake'in append (.bbappend uzantılı) dosyaları kullanılır. Bu sayede TI veya Qt grubu katmanlarında bir değişiklik yaptığı zaman bu değişiklikleri almak ve varolan dağıtıma entegre etmek kolaylaşır.
Yocto Projesi Akış Diyagramı - Yocto Dokümantasyonu
En Yakın Alternatifi (Buildroot)
Buildroot, gömülü Linux dağıtımları oluşturmayı sağlayan, Makefile tabanlı, basitliği ve kullanım kolaylığını hedefleyen bir araçtır. Basitliğin korunabilmesi amacıyla özelleştirme imkanı Yocto projesindeki kadar geniş tutulmamıştır. Örneğin Yocto projesinde olduğu gibi her görev çıktısı önbelleğe alınmamaktadır. Dolayısıyla bazı durumlarda tüm paketlerin yeniden derlenmesini beklemek zorunda kalınabilmektedir.