Bitbake ile Intel Edison için Yocto İmajı Hazırlamak

Intel Edison Yocto Linux yüklü gelmektedir. Edison için Yocto imajını Intel’in sitesinden indirmek mümkün olduğu gibi kendimiz de yeni imaj hazırlayabiliriz. Bunun için Bitbake kullanılır.

İmajımıza paketler eklemek/çıkarmak mümkün. Ayrıca, Bitbake ile başka donanımlar için başka Linux dağıtımlarının imajıın hazırlamak da mümkündür.

Ben Ubuntu 16.04 kullanıyorum. Öncelikle gerekli paketleri yükleyelim:

sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib

Yocto ortamını ve Edison’a özgü Yocto tariflerini (recipes) içeren BSP dosyasını http://iotdk.intel.com/ sitesinden indirelim. Şu an için son versiyon şu: http://iotdk.intel.com/src/3.5/edison/iot-devkit-yp-poky-edison-20160606.zip

Bu zip dosyasını açıp, klasöre girelim:

unzip iot-devkit-yp-poky-edison-20160606.zip
cd iot-devkit-yp-poky-edison-20160606/poky

İşlemi başlatmak için şu kodları çalıştıralım:

source oe-init-build-env ../build_edison/
bitbake edison-image u-boot

Bitbake başlarken “WARNING: Host distribution “Ubuntu-16.04″ has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.” şeklinde bir uyarı veriyor ama önemli değil, yine de çalışıyor.

Derleme işleminin bilgisayarınızın özelliklerine göre birkaç saate kadar zaman alması normal. Benim dizüstü bilgisayarımda 3:40 başlattım, ….

İşletim Sistemini Özelleştirmek

Standart Yocto Paketlerini Eklemek /Çıkarmak

Yocto Linux işletim sistemi pek çok paketi tarif olarak sunar. Yocto’nun sunduğu tariflere http://packages.yoctoproject.org/ adresinden erişebilirsiniz. Bir paketi imajınıza eklemek için tarif adını IMAGE_INSTALL değişkenine eklemek gerek. Örneğin video/ses işlemeye yarayan ffmpeg programını da imajımıza dahil etmek için poky/meta-intel-edison/meta-intel-edison-distro/recipes-core/images/edison-image.bb dosyasına şu satırı eklemek ve erleme işlemini tekrar başlatmak gerek:

IMAGE_INSTALL += "ffmpeg"

Benzer bir şekilde imajdan bir paketi çıkarmak için de build_edison/conf/local.conf dosyasına PACKAGE_EXCLUDE değişkeni eklemek gerek.

Başka Paketler Eklemek

Standart Yocto kütüphanesinde olmayan paketleri 3. taraflara ait kütüphanelerde bulabiliriz. Mesela OpenEmbedded veya OIC katmanları (layer) BSP dosyasının indirdiğimiz versiyonunda zaten eklenmiş durumda ve buradan da pek çok paket derlemeye katılıyor.

OpenEmbedded katmanı hazır gelmeseydi, https://github.com/openembedded/meta-openembedded adresinden klonlamak ve indirdiğimiz klasörün konumunu edison-src/build/conf/bblayers.conf dosyasında BBLAYERS değişkenine eklemek gerekecekti.

BBLAYERS ?= " \
  ${TOPDIR}/../poky/meta \
  ${TOPDIR}/../poky/meta-intel-edison/meta-intel-arduino \
  ${TOPDIR}/../poky/meta-intel-edison/meta-intel-edison-bsp \
  ${TOPDIR}/../poky/meta-intel-edison/meta-intel-edison-distro \
  ${TOPDIR}/../poky/meta-intel-iot-devkit \
  ${TOPDIR}/../poky/meta-intel-iot-middleware \
  ${TOPDIR}/../poky/meta-java \
  ${TOPDIR}/../poky/meta-oic \
  ${TOPDIR}/../poky/meta-openembedded/meta-filesystems \
  ${TOPDIR}/../poky/meta-openembedded/meta-networking \
  ${TOPDIR}/../poky/meta-openembedded/meta-oe \
  ${TOPDIR}/../poky/meta-openembedded/meta-python \
  ${TOPDIR}/../poky/meta-openembedded/meta-ruby \
  ${TOPDIR}/../poky/meta-openembedded/meta-webserver \
  ${TOPDIR}/../poky/meta-yocto \
  ${TOPDIR}/../poky/meta-yocto-bsp \
  "

Bu değişken sayesinde bu katmanların sunduğu paketler de derlemeye katılabilir. Örnek olarak, görüntü işlemek için kullanılan opencv paketinin tarifi meta-oe katmanında sunuluyor. Bunu derlemeye katmak için edison-src /meta-intel-edison/meta-intel-edison-distro/recipes-core/images/edison-image.bb dosyasına şunu eklemek gerek (OpenCV’ye özel olarak hangi modüllerinin kullanılacağı ikinci satırda belirtilmiş):

IMAGE_INSTALL += "opencv"
PACKAGECONFIG_pn-opencv="eigen jpeg libav png tiff v4l"

Şimdi tekrar derleme başlatırsak bu paket de derlenecektir

source poky/oe-init-build-env
bitbake edison-image

Sıfırdan Yocto Tarifi Yazmak

Eğer imajınıza eklemek istediğiniz paket için Yocto tarifi bulamazsanız veya kendi programlarınızı da Bitbake ile derlemek isterseniz tarifini sıfırdan kendiniz de yazabilirsiniz. Örneğin kaynak kodlarını http://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz adresinde bulabileceğiniz GNU hello_world projesi için bir tarif yazalım.

Bitbake’e kodu nereden bulabileceğini ve nasıl derleyeceğini bildiren bir tarif dosyası oluşturmak gerek. edison-src/meta-intel-edison/meta-intel-edison-distro/recipes-support/hello klasöründe hello_2.7.bb adında bir dosya yaratalım:

DESCRIPTION = "GNU Helloworld application"
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
SRC_URI[md5sum] = "fc01b05c7f943d3c42124942a2a9bb3a"
inherit autotools gettext

Tarif yazım kurallarına Yocto dökümantasyonundan erişilebilir: https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles

Bu yeni oluşturduğumuz tarifin derlemeye eklenmesi için edison-src /meta-intel-edison/meta-intel-edison-distro/recipes-core/images/edison-image.bb dosyasında bildirmek gerekir:

IMAGE_INSTALL += "hello"

Artık derleme başlatılabilir:

bitbake edison-image

Kaynak: https://software.intel.com/en-us/node/593589

Tagged , , , ,