Proyek Yocto adalah pembuat distribusi Linux tertanam yang menggunakan beberapa proyek sumber terbuka lainnya. Distribusi Linux adalah kumpulan paket dan kebijakan perangkat lunak, dan ada ratusan distribusi Linux yang tersedia. Sebagian besar tidak dirancang untuk sistem tertanam dan tidak memiliki fleksibilitas yang diperlukan untuk mencapai ukuran tapak target dan penyesuaian fungsionalitas, serta tidak melayani dengan baik untuk sistem yang dibatasi sumber daya.
Proyek Yocto, sebaliknya, bukanlah distribusi semata; ini memungkinkan Anda untuk membuat distribusi Linux yang dirancang untuk sistem tertanam khusus Anda. Proyek Yocto menyediakan distribusi referensi untuk Linux tertanam, yang disebut Poky.
Proyek Yocto memiliki proyek BitBake dan OpenEmbedded-Core (OE-Core) sebagai dasarnya. Bersama-sama mereka membentuk sistem pembangunan Yocto yang membangun komponen-komponen yang diperlukan untuk produk Linux tertanam, yaitu:
- Gambar bootloader
- Gambar kernel Linux
- Gambar sistem file root
- Rantai alat dan kit pengembangan perangkat lunak (SDK) untuk pengembangan aplikasi
Dengan ini, Proyek Yocto memenuhi kebutuhan pengembang sistem dan aplikasi. Ketika Proyek Yocto digunakan sebagai lingkungan integrasi untuk bootloader, kernel Linux, dan aplikasi ruang pengguna, kami menyebutnya sebagai pengembangan sistem.
1. Untuk membuka menuconfig kernel linux ( Disini saya menggunakan meta-intel layer ), jalankan perintah berikut.
bitbake -c menuconfig linux-intel
Jika Anda menggunakan kernel yocto, ini akan menjadi:
bitbake -c menuconfig linux-yocto
2. Untuk memeriksa apakah resep bbappend Anda telah diurai oleh bitbake, jalankan perintah berikut:
bitbake-layers show-appends
3. Untuk menambahkan paket tertentu di sistem file root Anda.
Buka file local.conf Anda dan tambahkan nama resep di bawah ini:
IMAGE_INSTALL += "recipe-name"
Misalnya:
IMAGE_INSTALL += "libusb"
atau
IMAGE_INSTALL_append = "libusb"
Jika Anda ingin paket ini hanya disertakan dalam gambar tertentu,
IMAGE_INSTALL_append_pn-[image-name] = "recipe-name"
Misalnya:
IMAGE_INSTALL_append_pn-core-image-sato = "libusb"
4. Untuk menyertakan modul kernel di sistem file root Anda:
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-module-cp210x"
5. Untuk memuat modul secara otomatis saat boot:
KERNEL_MODULE_AUTOLOAD += "cp210x"
6. Perintah untuk memeriksa daftar gambar yang tersedia.
Jalankan perintah berikut di direktori sumber Anda:
$ ls meta*/recipes*/images/*.bb
7. Perintah untuk menjalankan gambar yang dihasilkan di QEMU:
$ runqemu [machine] [zImage] [filesystem]
Misalnya:
$ runqemu qemux86 core-image-minimal
8. Perintah untuk membuat daftar mesin yang tersedia:
$ ls meta*/conf/machine/*.conf
9. Perintah untuk membuat SDK untuk gambar tertentu:
$ bitbake [imagename] -c populate_sdk
Misalnya:
$ bitbake core-image-full-cmdline -c populate_sdk
10. Urutan di mana semua tugas yang dieksekusi disimpan di:
[build directory]/tmp/work/[machine toolchain]/[package name]/[package version]/temp/log.task_order
Misalnya:
build/tmp/work/corei7-64-poky-linux/grep/3.1-r0/temp/log.task_order
11. Buat informasi pohon dependensi dalam sintaks titik:
$ bitbake -g core-image-minimal
Perintah di atas menghasilkan grafik ketergantungan. Bitbake membuat file pn-buildlist, resep-depends.dot dan task-depends.dot.
- pn-buildlist :Daftar paket sederhana yang akan dibuat
- tergantung resep.dot :Menampilkan ketergantungan antar resep
- tugas-tergantung.dot :Menampilkan ketergantungan antar tugas.
12. Menampilkan variabel lingkungan:
$ bitbake -e [recipe/target name]
Misalnya:
$ bitbake -e core-image-minimal | grep ^SDKMACHINE
13. Aktifkan keluaran verbose dari tugas shell:
$ bitbake -v [recipe/target name]
Misalnya:
$ bitbake -v core-image-minimal
14. Lanjutkan bitbake bahkan setelah kesalahan. Ini akan berguna saat Anda memulai pembuatan dan pergi makan siang dan tidak ingin bitbake berhenti jika tidak dapat mengambil file melalui Internet.
$ bitbake -k [target]
Misalnya:
$ bitbake -k core-image-minimal
15. Memaksa target untuk berjalan meskipun ada sstate-cache yang tersedia untuknya.
$ bitbake -f [target/recipe name]
Misalnya:
$ bitbake -f busybox