Apa itu OpenEmbedded dan bagaimana ia mengubah pengembangan Linux tertanam

  • OpenEmbedded memungkinkan Anda membuat sistem Linux yang sepenuhnya disesuaikan dan dapat direproduksi untuk perangkat keras tertanam.
  • Proyek Yocto menggunakan OpenEmbedded sebagai inti sistem pembangunannya, memfasilitasi kolaborasi dan pemeliharaan.
  • Model resep dan berlapis OpenEmbedded menyediakan fleksibilitas dan skalabilitas unik dalam pengembangan tertanam.
  • Komunitas aktif dan dukungan perusahaan memastikan pembaruan, dokumentasi, dan kompatibilitas jangka panjang.

Terbuka Tertanam

Pernahkah Anda bertanya-tanya bagaimana sistem Linux yang kita temukan di banyak perangkat sehari-hari dibuat? Dari router, televisi, dan ponsel pintar hingga sistem industri dan mobil pintar: semuanya biasanya berjalan pada distribusi Linux tertanam yang dirancang khusus untuk kebutuhan mereka. Di balik proses adaptasi ini terdapat proyek-proyek seperti Terbuka Tertanam dan Proyek Yocto, bagian penting yang autentik di dunia perangkat lunak tertanam.

Dalam artikel ini, Anda akan mempelajari secara mendalam apa itu OpenEmbedded, bagaimana kaitannya dengan Proyek Yocto, dan mengapa hal itu sangat penting dalam pengembangan perangkat elektronik pintar. Kami juga akan memandu Anda melalui komponen inti, kelebihan, konsep utama, dan bagaimana ia merevolusi pengembangan sistem Linux khusus untuk perangkat keras tertentu.

Apa itu OpenEmbedded?

OpenEmbedded adalah kerangka kerja otomatisasi pembuatan dan lingkungan kompilasi silang yang digunakan untuk membuat distribusi Linux untuk perangkat tertanam. Secara resmi dibuat pada tahun 2003 oleh komunitas OpenEmbedded. Misi utama lingkungan ini adalah menyederhanakan seluruh tugas membangun citra sistem operasi Linux yang disesuaikan dengan kebutuhan spesifik perangkat keras yang akan digunakan.

Sistem kompilasi ini bergantung pada file yang disebut resep (resep), dikelola melalui alat BitBakeResep-resep ini menentukan Bagaimana setiap paket perangkat lunak dikompilasi, dependensinya, kode apa yang akan diunduh, dan cara mengintegrasikannya pada gambar akhir.

OpenEmbedded memungkinkan Anda menghasilkan biner untuk banyak arsitektur dan mengemas perangkat lunak yang dihasilkan dalam format yang paling dikenal (ipk, deb, rpm), serta menghasilkan citra boot yang siap digunakan pada papan target. Hal ini menjadikannya sistem pembangunan yang direkomendasikan untuk Proyek Yocto, yang bekerja sama sangat erat dengannya.

Apa hubungan OpenEmbedded dan Proyek Yocto?

Proyek Yocto adalah inisiatif kolaboratif sumber terbuka yang digerakkan oleh Linux Foundation sejak 2010, yang tujuannya adalah untuk memfasilitasi pembuatan sistem operasi Linux yang disesuaikan dan dioptimalkan untuk perangkat tertanam dan IoT. Meskipun banyak orang menganggap Yocto sebagai distribusi Linux, sebenarnya ia merupakan seperangkat alat yang memungkinkan Anda membangun distribusi ini dari awal, yang sepenuhnya disesuaikan.

Kolaborasi antara kedua proyek ini tercermin dalam hal itu Proyek Yocto menggunakan OpenEmbedded sebagai mesin pembangunBagian inti dari sistem build OpenEmbedded (BitBake dan OpenEmbedded-Core) dikelola bersama oleh kedua proyek. Selain itu, Yocto menyediakan implementasi referensi yang disebut Poky, yang menyertakan sistem pembangunan OpenEmbedded beserta serangkaian resep dan lapisan yang siap disesuaikan.

Jadi, ketika sebuah perusahaan atau pengembang ingin membuat distribusi Linux tertentu untuk produk mereka, Yocto dan OpenEmbedded menyediakan alat, alur kerja, dan fleksibilitas yang dibutuhkan untuk menciptakan sesuatu yang unik, dapat direproduksi, dan dipelihara..

Komponen utama: BitBake, Poky, lapisan dan resep

Untuk memahami cara kerja OpenEmbedded (dan, lebih jauh lagi, Yocto), penting untuk mengetahui elemen-elemen utamanya:

  • BitBake: Ini adalah mesin build yang menginterpretasikan resep, menyelesaikan dependensi, dan menjalankan tugas untuk menghasilkan citra akhir. Cara kerjanya mirip dengan alat otomatisasi lain seperti Make, tetapi ditujukan untuk dunia sistem tertanam dan menawarkan fleksibilitas yang luar biasa.
  • Mencolek: Ini adalah distribusi referensi yang disediakan oleh Yocto. Ini bukan sistem produksi final, melainkan titik awal (contoh kerja) yang dapat disesuaikan dan diperluas dengan menambahkan lapisan dan resep baru.
  • OpenEmbedded-Core (OE-Core): Ini mewakili inti metadata dan resep tervalidasi yang umum digunakan di berbagai sistem dan distribusi turunan. Ini menyediakan kumpulan fundamental definisi, kelas, dan konfigurasi bersama.
  • Resep: Setiap resep menjelaskan cara membuat paket atau komponen: di mana mengunduhnya, cara mengompilasinya, patch apa yang harus diterapkan, dan cara menginstalnya.
  • Lapisan: Ini adalah kumpulan resep atau metadata yang terkait. Terima kasih kepada model lapisan, dimungkinkan untuk mengisolasi informasi (misalnya, satu lapisan untuk GUI, lapisan lain untuk driver, lapisan lain untuk aplikasi, dll.), memfasilitasi penggunaan kembali dan penyesuaian.

Model berlapis: kolaborasi dan kustomisasi pada tingkat tertinggi

Salah satu pencapaian besar OpenEmbedded dan Yocto adalah model pengembangan berbasis lapisanSistem ini memungkinkan:

  • Berkolaborasi dengan mudah, karena beberapa tim dapat bekerja pada lapisan independen (driver, middleware, aplikasi, dll.) dan menggabungkannya sesuai kebutuhan proyek.
  • Sesuaikan seluruh sistem dengan mengisolasi logika setiap subsistem. Misalnya, kita sering menemukan lapisan khusus untuk konfigurasi distribusi (lapisan distro), lapisan lain untuk dukungan papan tertentu (lapisan BSP), dan lapisan tambahan untuk aplikasi, antarmuka grafis, middleware, dll.
  • Hindari konflik dan sederhanakan pemeliharaan: Lapisan dapat menimpa atau melengkapi instruksi dari lapisan di bawahnya, sehingga menghasilkan manajemen yang jauh lebih efisien.

Berkat pendekatan ini, pengembang dapat menggunakan kembali lapisan yang dibuat komunitas atau menyesuaikannya agar sesuai dengan kebutuhan setiap produk.

Apa kegunaan OpenEmbedded/Yocto? Penggunaan di dunia nyata

Baik OpenEmbedded maupun Yocto Project digunakan dalam berbagai bidang dan produk., seperti:

  • Robotika industri
  • Otomotif (infotainment, unit kontrol, sistem ADAS, dll.)
  • Alat kesehatan
  • Peralatan pintar
  • Gerbang IoT
  • Barang elektronik konsumen (televisi, router, dekoder, dll.)
  • Peralatan telekomunikasi
  • Sistem kontrol akses dan otomatisasi rumah tingkat lanjut

Perusahaan seperti Intel, ARM, NXP, Seeed Studio, iWave Systems dan masih banyak lagi secara aktif berkolaborasi dalam pengembangan dan pemeliharaan OpenEmbedded dan Yocto. Ekosistemnya sangat luas dan terdokumentasi dengan baik sehingga saat ini ada puluhan juta perangkat yang menjalankan distribusi yang dihasilkan dengan alat ini.

Apa keuntungan utama OpenEmbedded?

OpenEmbedded dan integrasinya dengan Proyek Yocto menawarkan sejumlah keuntungan hebat untuk pengembangan tertanam:

  • Kustomisasi ekstrim: Dimungkinkan untuk menghasilkan distribusi Linux yang disesuaikan secara sempurna dengan perangkat keras dan fungsionalitas yang diinginkan, menghilangkan komponen yang tidak diperlukan dan mengoptimalkan sumber daya.
  • Fleksibilitas lintas platform: Mereka mendukung beberapa arsitektur CPU (ARM, x86/x64, PowerPC, MIPS…) dan memungkinkan alur kerja yang sama untuk diadaptasi ke perangkat yang berbeda.
  • Reproduktifitas dan kontrol versi: Seluruh proses pembangunan dapat diversikan dan direproduksi. Hal ini memastikan bahwa seluruh tim pengembangan membangun citra yang sama, memberikan keamanan dan memfasilitasi integrasi berkelanjutan (CI/CD).
  • Dukungan komunitas dan bisnis yang aktif: Perangkat ini memiliki komunitas global yang sangat aktif, serta dukungan dari perusahaan-perusahaan besar. Terdapat cabang-cabang LTS dengan dukungan jangka panjang, pembaruan berkala, dan evolusi yang konstan.
  • Manajemen lisensi khusus: Sistem ini memfasilitasi pengelolaan, audit, dan dokumentasi lisensi yang digunakan dalam setiap gambar atau paket, yang memungkinkan pembuatan manifes khusus.

Pada akhirnya, OpenEmbedded adalah salah satu solusi terkuat dan berskala untuk proyek tertanam dalam ukuran apa pun.

Komponen tambahan dan alat pendukung

Selain elemen inti yang disebutkan di atas, Yocto dan OpenEmbedded mengintegrasikan atau memungkinkan penambahan:

  • Pemanggang roti: Antarmuka web untuk BitBake dan OpenEmbedded, ideal untuk mengonfigurasi, meluncurkan build, dan melihat statistik.
  • TANAMAN: Kerangka kerja berbasis kontainer Docker, yang memfasilitasi pengembangan silang pada berbagai sistem operasi (Windows, Linux, Mac OS).
  • SDK yang Dapat Diperluas (eSDK): Memungkinkan Anda mengembangkan aplikasi khusus dan mengujinya pada perangkat keras target itu sendiri, memfasilitasi integrasi dengan citra yang dihasilkan.
  • Dukungan QEMU: Berkat QEMU, arsitektur target dapat ditiru tanpa memerlukan perangkat keras fisik.
  • Alat validasi dan pengujian: Integrasi pengujian otomatis, regresi, dan pemeriksaan integritas untuk setiap versi.
eos 2024
Artikel terkait:
Embedded Open Source Summit 2024 (EOSS 2024): Apa yang bisa dilihat di acara edisi baru ini?

Alur kerja dasar menggunakan OpenEmbedded dan Yocto

Proses umum untuk membuat citra Linux khusus menggunakan alat-alat ini dapat diringkas sebagai berikut:

  1. Tentukan arsitektur, kebijakan, dan konfigurasi dalam berkas proyek.
  2. Unduh kode sumber dan sumber daya yang diperlukan (tarball, repositori git, dll.).
  3. Terapkan patch dan proses sumber dalam lingkungan yang terisolasi.
  4. Kompilasi perangkat lunak dan paketkan binernya dalam format yang dipilih (deb, rpm, ipk).
  5. Jalankan kontrol kualitas (uji kewarasan/regresi) dan membuat laporan.
  6. Buat sistem berkas root dan gambar boot untuk dimuat pada perangkat target.

Berkat fleksibilitas sistem yang luar biasa dan organisasi berdasarkan lapisan, Anda dapat menggunakan kembali bagian besar pekerjaan Anda untuk proyek lain, memperbarui gambar dengan mudah, atau menggabungkan fitur baru tanpa harus membangun kembali seluruh sistem dari awal..

Glosarium konsep umum

  • Resep: Mereka menentukan bagaimana suatu perangkat lunak dikompilasi dan dikemas. Mereka disimpan berlapis-lapis dan dapat mewarisi atau menimpa informasi dari resep sebelumnya.
  • Lapisan: Mereka mengelompokkan resep, kelas, dan konfigurasi yang terkait. Mereka bersifat hierarkis dan memfasilitasi modularitas.
  • Metadata: Berkas yang menjelaskan resep, konfigurasi, dan semua informasi yang dibutuhkan untuk membangun citra. Berkas ini mencakup instruksi tentang versi yang akan digunakan, patch yang akan diterapkan, dependensi, dan sebagainya.
  • Mencolek: Distribusi referensi disertakan dalam Yocto, ideal untuk memiliki titik awal fungsional.
  • BitBake: Alat pembangun utama. Memproses resep dan menjalankan seluruh alur kerja.
  • BSP (Paket Dukungan Papan): Seperangkat perangkat lunak dan resep yang khusus untuk papan atau arsitektur tertentu.

Bagaimana cara memulai dengan OpenEmbedded dan Yocto?

Langkah pertama adalah memiliki PC Linux, kapasitas penyimpanan yang memadai (lebih dari 80 GB kosong) dan beberapa inti CPU. Ubuntu atau Debian direkomendasikan untuk kompatibilitas, meskipun distribusi lain juga didukung. Anda juga dapat menjalankannya di mesin virtual atau dengan WSL di Windows, meskipun kinerjanya akan lebih rendah.

Hal yang biasa dilakukan adalah mengunduh referensi Sempit, kloning lapisan yang diperlukan (misalnya, meta-raspberry jika Anda ingin bekerja dengan Raspberry Pi), tambahkan atau modifikasi resep yang sesuai, dan jalankan kompilasi dengan BitBake. Setelah citra dihasilkan, citra tersebut dibakar ke penyimpanan atau kartu perangkat target, dan setelah komputer dinyalakan, distribusi kustom kita siap.

Beberapa tantangan dan pertimbangan

Meskipun manfaatnya sangat banyak, perlu diperhatikan bahwa kurva pembelajarannya bisa sangat curam Jika Anda tidak memiliki pengetahuan sebelumnya tentang Linux, skrip, Bash, atau kompilasi silang. Selain itu, proses pembangunannya membutuhkan banyak sumber daya (RAM, CPU, disk) dan bisa memakan waktu lama.

Namun, setelah dasar-dasarnya dipahami, Kemungkinan untuk penyesuaian dan pengoptimalan sangat besar, Anda dapat mengotomatiskan integrasi dan pembaruan gambar, mengaudit penggunaan lisensi, membuat umpan paket biner, dan memastikan skalabilitas sebenarnya di seluruh tim pengembangan.

Saat ini, OpenEmbedded dan Proyek Yocto merupakan fondasi bagi sebagian besar sistem Linux tertanam modern. Keduanya memungkinkan serangkaian persyaratan perangkat keras dan perangkat lunak diubah menjadi sistem operasi yang sepenuhnya disesuaikan, dioptimalkan, dan siap pakai untuk perangkat elektronik apa pun, mulai dari sensor kecil hingga pembangkit listrik industri atau kendaraan yang terhubung.