Açık kaynak Yocto Proje kılavuzu
Docker kurulum ipuçları ile Raspberry Pi'de özel Linux için açık kaynaklı Yocto Proje kılavuzu
Herhangi bir donanımda özel Linux sistemleri için Yocto Projesi'ne dalın. Geliştiriciler ve gömülü sistem meraklıları için mükemmeldir. Hemen inşa etmeye başlayın!
Herhangi bir donanım mimarisi için özel Linux sistemleri oluşturmaya yönelik açık kaynaklı bir girişim olan Yocto Projesi'ni keşfedin. Platformlar arası geliştirme için CROPS'u kullanmayı, Docker kapsayıcıları ayarlamayı ve gömülü ve IoT cihazları için özel Linux görüntüleri oluşturmayı öğrenin. Kılavuzumuz, macOS'ta kurulum, derleme ortamlarının yapılandırılması ve Raspberry Pi için optimize edilmeyi kapsar. İster yeni başlayan ister uzman olun, Linux proje ihtiyaçlarınız için en iyi uygulamaları, araçları ve topluluk desteğini bulun.
Yocto Docker konteynerinde çalışıyor
Yocto dokümanlarında, yerel bir linux pc kurmaya alternatif olarak Çapraz Platform yazılımı (MAHSULLER) kurmaya ilişkin bir bölüm (2.2.2) yer almaktadır. Bu alternatif, örneğin Raspberry Pi için özelleştirilmiş bir sistem imgesi oluşturmak için docker konteynerini kullanır.
Ne yazık ki, bu ortamı Mac OS X'te (Monterey) kurmak için belgelerde bazı küçük hatalar bulunmaktadır.
Mac OS X için docker konteyner kurulumu
CROPS dockerını Linux, Windows ve Mac OS X'te kullanmak için bazı özel ayarlar gereklidir. Yocto için konteyneri kurmadan önce, sonuçları saklamak için bir docker birimi oluşturmanız gerekir. Ayrıca, Mac OS X'te dosyaları sağlamak için bir docker samba konteyneri kullanılır.
Bağlantı birimi oluştur
Bir terminal penceresinde aşağıdaki komutları yazın:
docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir
###Bir samba konteyneri oluştur ve çalıştır
OSX, yerel olarak çalışan bir samba paylaşımına bağlanmanıza izin vermez. Bu nedenle, öncelikle 127.0.0.2 'nin 127.0.0.1' i için bir diğer ad oluşturmanız gerekir.
sudo ifconfig lo0 127.0.0.2 alias up
Ardından, docker konteynerindeki dosyaları görmenizi sağlayan samba konteynerini oluşturun:
docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba
Samba konteynerine bağlanmak için her zaman diğer ada sahip olmanız gerekeceğinden, samba ve diğer adın başlangıcını şu şekilde birleştirebilirsiniz:
docker start samba && sudo ifconfig lo0 127.0.0.2 alias up
Artık WORKDIR'i dosya tarayıcısında açabilirsiniz. Finderda "Komut-K"ya basın ve sunucu adresi kutusuna "smb://127.0.0.2/workdir" yazın ve "Bağlan"a tıklayın. Şimdi docker konteynerinin içeriğini finderda görebilirsiniz.
###Yocto konteynerini oluşturun ve başlatın
Yocto konteynerini oluşturmak ve/veya başlatmak için bir terminal penceresine şunları girin:
docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir
Konteynerde oluşturma ortamını kurun
Docker konteyneri başlatıldığında, "pokyuser@d4ddfe042587:/workdir" şeklinde görünen bir terminal isteminiz olacaktır.
Artık oluşturma ortamını ayarlayabilirsiniz.
Klon poky versiyonu
Ben kendi sistemimde "Honister" adıyla Yocto sürüm 3.4'ü kullanıyorum, çünkü meta-raspberry katmanları şu anda daha yeni poky sürümleri için mevcut değil. İlk olarak, Poky deposunu klonlamak zorundasınız:
git clone -b honister git://git.yoctoproject.org/poky poky-honister
POKY'yi en son sürüme güncellemek istiyorsanız:
cd poky-honister
git pull --all --prune
Raspberry Pi için ek meta katmanları
"Poky-honister" olarak değiştirin ve aşağıdaki depoları klonlayın: meta-raspberry, meta-openembedded ve gerekirse meta-qt5
cd poky-honister
git clone -b honister git://git.yoctoproject.org/meta-raspberrypi
git clone -b honister git://git.openembedded.org/meta-openembedded
git clone -b honister https://github.com/meta-qt5/meta-qt5.git
Kurulum yapılandırması
/workdir içine girmek için poky-honister dizinini bırakın. Şimdi oe-init-build-env komut dosyasıyla yapı ortamını kaynaklayın.
cd ..
source poky-honister/oe-init-build-env rpi-build
"rpi-build" adlı yeni bir dizin - istediğiniz şekilde adlandırabilirsiniz - ve bblayers.conf, local.conf ve templateconf.cfg dosyalarının bulunduğu bir conf dizini oluşturulur.
Konteynerde yüklü bir metin düzenleyicisi olmadığından, yapılandırma dosyalarını Mac OS X'te yüklü samba hacminde düzenlemeniz veya konteynere bir metin düzenleyicisi kurmanız gerekir. Bunu yapmak için de yocto konteyneri çalışırken ikinci bir terminal penceresi açmalı ve konteyner içinde kök ayrıcalıkları olan bir bash kabuğu başlatmalısınız:
docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Ardından yocto konteynerinde yapılandırma dosyalarını pokyuser olarak düzenleyebilirsiniz.
Not
Düzenleyici kalıcı olarak yüklenmez. Konteynerden ayrılıp tekrar girdikten sonra tekrar yüklemeniz gerekir
İlk olarak, bblayers.conf dosyasına meta-raspberry'yi ekleyin
nano conf/bblayers.conf
"/workdir/poky-honister/meta-raspberrypi " ekleyin, böylece
BBLAYERS ?= " \
/workdir/poky-honister/meta \
/workdir/poky-honister/meta-poky \
/workdir/poky-honister/meta-yocto-bsp \
/workdir/poky-honister/meta-raspberrypi \
"
ve kaydedin.
İkincisi local.conf dosyasını düzenleyin
Local.conf dosyasını düzenle:
nano conf/local.conf
Aşağıdaki satırları değiştirin:
- MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"
Hangi Raspberry'yi kullanmak istediğinize bağlı olarak (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 vb.)
Aşağıdaki satırları yorumdan çıkarın:
- DL_DIR ?= "${TOPDIR}/downloads"
- SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
- TMPDIR = "${TOPDIR}/tmp"
Bir sdimg'nin SD karta flaş yapması için aşağıdaki satırları sona ekleyin:
- IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
- SDIMG_ROOTFS_TYPE = "ext4.xz"
local.conf dosyasını kaydedin.
İlk imgeyi bitbake edin
Artık ilk imgeyi oluşturmak için minimum ayarlara sahipsiniz:
bitbake -k core-image-minimal
Yocto belgelerinde, mevcut imge açıklamalarına ilişkin kısa bir tanım bulabilirsiniz.Örneğin:
- core-image-minimal: Bir cihazın önyüklenmesine izin verebilen küçük bir imge.
- core-image-base: Hedef cihaz donanımını tam olarak destekleyen yalnızca konsol imgesi.
- core-image-full-cmdline: Daha fazla tam özellikli Linux sistem işlevselliği yüklü yalnızca konsol imgesi.
Bir süre sonra, ki bu ilk seferinde birkaç saat sürebiliyor, bitbake biter ve aşağıdaki dizinde sdimg dosyasını bulabilirsiniz:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64
Ekstra konfigürasyonlar
Ekstra Raspberry donanım konfigürasyonları
Belirli donanım ayarlarını yapmak için, extra-apps.md ve extra-build-config.md seçeneklerine bakabilirsiniz. Bu dosyaları meta-raspberrypi/docs dizininde de bulabilirsiniz.
Meta katman ayrıca bitbake ile kullanmak için bir imge yapılandırması "rpi-test-image" sağlamaktadır. İmge, meta-raspberrypi ve bazı medya örneklerindeki paketlerin çoğunu kapsayan "core-image-base"e dayanmaktadır.
bitbake -k rpi-test-image
Ekstra yazılım konfigürasyonları
Hangi imge oluşturma konfigürasyonunu kullandığınıza bağlı olarak, ek yazılım paketlerini yüklemeniz gerekebilir.
Bunu, local.conf dosyasına bazı ayarlar ekleyerek yapabilirsiniz.
Örneğin, ssh-server, pi-user ve systemd'yi ayarlamak için aşağıdaki satırları ekleyin:
## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"
## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"
Veya python ekleyin:
IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"
Not
"python3 python3-pip rpi-gpio raspi-gpio"daki başlangıç boşluğu önemlidir, çünkü metin mevcut konfigürasyona eklenir ve bu boşlukla ayrılması gerekir.
Telif Hakkı Lisansı
Telif Hakkı © 2022Interelectronix e.K.
Bu Proje kaynak kodu ** GPL-3.0**lisansı altında lisanslanmıştır.
Teşekkür
Bu Komutları oluşturmak için kullanılan kaynaklar aşağıda verilmiştir:
Hepsine teşekkürler.