Odprtokodni vodnik po projektu Yocto
Odprtokodni vodnik za projekt Yocto za Linux po meri na Raspberry Pi z nasveti za nastavitev Dockerja
Potopite se v projekt Yocto za sisteme Linux po meri na kateri koli strojni opremi. Kot nalašč za razvijalce in navdušence nad vgrajenimi sistemi . Začnite graditi zdaj!
Raziščite projekt Yocto, odprtokodno pobudo za ustvarjanje sistemov Linux po meri za katero koli arhitekturo strojne opreme. Naučite se uporabljati CROPS za razvoj na več platformah, nastavite vsebnike Docker in ustvarite prilagojene posnetke Linuxa za vdelane naprave in naprave IoT. Naš vodnik zajema nastavitev v macOS-u, konfiguriranje gradbenih okolij in optimizacijo za Raspberry Pi. Ne glede na to, ali ste začetnik ali strokovnjak, poiščite najboljše prakse, orodja in podporo skupnosti za potrebe svojega projekta Linux.
Yocto tek v docker kontejner
V yocto docs obstaja poglavje (2.2.2) za nastavitev CROss PlatformS (CROPS) kot alternativo za nastavitev domorodnega linux računalnika. Ta alternativa uporablja docker posodo za izgradnjo prilagojene slike sistema, npr. za Raspberry Pi.
Na žalost je nekaj majhnih napak v dokumentaciji za vzpostavitev tega okolja za mene na Mac OS X (Monterey).
Setup docker kontejner za Mac OS X
Za uporabo crops docker na Linux, Windows in Mac OS X, obstajajo nekatere posebne nastavitve, ki so potrebna. Preden nastavite posodo za Yocto, morate ustvariti nosilec dockerja, da shranite rezultate. Prav tako docker samba posoda se uporablja za zagotavljanje datotek v Mac OS X.
Ustvari nosilec dockerja
V terminalsko okno vnesite te ukaze:
docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir
Ustvari in zaženi zabojnik sambe
OSX vam ne bo dovolil vzpostaviti povezave z lokalno tekočim deležem sambe. Zato morate najprej ustvariti vzdevk za 127.0.0.1 z dne 127.0.0.2.
sudo ifconfig lo0 127.0.0.2 alias up
Nato ustvarite vsebnik samba, ki vam omogoča, da vidite datoteke v nosilcu docker:
docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba
Ker boste vedno morali imeti vzdevek za povezavo z zabojnikom samba, lahko združite začetek sambe in vzdevek, kot je to:
docker start samba && sudo ifconfig lo0 127.0.0.2 alias up
Zdaj lahko odprete delovnidir v datotečni brskalnik. V finder hit "Command-K" in v naslovu strežnika vnesite "smb://127.0.0.2/workdir" in kliknite "Poveži". Zdaj bi morali videti vsebino nosilca dockerja v najdilniku.
Ustvarite in zaženite yocto posodo
Če želite ustvariti in/ali zagnati vrsto posode Yocto v terminalnem oknu:
docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir
Okolje namestitvene gradnje v posodi
Ko je kontejner za docker zagnan, imate terminalski poziv, ki izgleda tako: "pokyuser@d4ddfe042587:/workdir".
Zdaj lahko nastavite okolje za gradnjo.
Klon poky različica
V mojem primeru uporabljam Yocto različico 3.4 z imenom "Honister", ker meta-malina plasti niso na voljo za novejših poky različic v tem trenutku. Prvič morate klonirate poky repozitorij:
git clone -b honister git://git.yoctoproject.org/poky poky-honister
Če želite posodobiti poky na najnovejšo različico:
cd poky-honister
git pull --all --prune
Dodatne meta plasti za Malina Pi
Spremeni v "poky-honister" in kloniraš naslednje repositorije: meta-malina, meta-openembededed in po potrebi 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
Konfiguracija namestitvene gradnje
Zapustite poky-honister imenik, tako da ste v /workdir. Zdaj vir gradbeno okolje s skriptom oe-init-build-env.
cd ..
source poky-honister/oe-init-build-env rpi-build
Nov imenik "rpi-build" - lahko ga poimenujte, kot želite - in ustvari se konf direktorij z datotekami bblayers.conf, local.conf in templateconf.cfg.
Ker v posodi ni nameščenega urejevalnika besedila, morate bodisi urediti config datoteke v nameščenem samba nosilcu v Mac OS X ali pa morate namestiti urejevalnik besedila v posodo. Če želite to narediti, morate odpreti drugo terminalsko okno - medtem ko je yocto posoda teče - in začeti bash lupina v posodi z koreninskih privilegijev:
docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Potem lahko uredite config datoteke v yocto kontejner kot pokyuser.Opomba
Urejevalnik ni nameščen trajno. Ko zapustite posodo in znova vnesete, jo morate znova namestiti
nano conf/bblayers.conf
Dodajte "/workdir/poky-honister/meta-raspberrypi " tako da izgleda kot
BBLAYERS ?= " \
/workdir/poky-honister/meta \
/workdir/poky-honister/meta-poky \
/workdir/poky-honister/meta-yocto-bsp \
/workdir/poky-honister/meta-raspberrypi \
"
in ga shranite.
Druga urejanje lokalne.conf
Uredite datoteko local.conf:
nano conf/local.conf
Spremenite te vrstice:
-STROJ?? = "qemux86-64" -> STROJ ?? = "malina 4-64"
Odvisno od tega, katero malino želite uporabljati (malina 0, malina 0w, malina 3, malina 3-64, malina 4, malina 4-64, itd)
Razkomodiranje naslednjih vrstic:
- DL_DIR ?= "${TOPDIR}/downloads"
- SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
- TMPDIR = "${TOPDIR}/tmp"
Na koncu dodajte naslednje vrstice, če želite, da sdimg utripa v sd-kartico:
- IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
- SDIMG_ROOTFS_TYPE = "ext4.xz"
Shranite datoteko local.conf.
Bitbake prva slika
Zdaj imate minimalne nastavitve za izgradnjo prve slike:
bitbake -k core-image-minimal
V dokumentaciji Yocto najdete kratek opis razpoložljivih opisov slik.
Na primer:
- core-image-minimal: majhna slika, ki je sposobna omogočiti zagon naprave.
- core-image-base: slika samo za konzolo, ki v celoti podpira strojno opremo ciljne naprave.
- core-image-full-cmdline: konzolno samo sliko z nameščeno več funkcionalnostjo linux sistema.
Čez nekaj časa - ki bi lahko bili strežniške ure prvič - bitbake konča in boste našli sdimg datoteko v naslednjem imeniku:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64
Dodatne konfiguracije
Extra Malina konfiguracije strojne opreme
Če želite nastaviti določene nastavitve strojne opreme, lahko poiščite extra-apps.md in extra-build-config.md.Te datoteke najdete tudi v imeniku meta-malina/docs.
Meta plast zagotavlja tudi konfiguracijo slike "rpi-test-image" za uporabo z bitbake. Slika temelji na "core-image-base", ki vključuje večino paketov v meta-malinah in nekaj medijskih vzorcev.
bitbake -k rpi-test-image
Dodatne konfiguracije programske opreme
Odvisno od konfiguracije gradnje slike, ki jo uporabljate, boste morda morali namestiti dodatne programske pakete.
To lahko storite tako, da dodate nekaj nastavitev v datoteko local.conf.
Na primer dodajte te vrstice, da nastavite SSH-strežnik, pi-user in sistemsko:
## 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"
Ali pa dodajte python:
IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"
Opomba
Pomemben je začet prostor v " python3 python3-pip rpi-gpio raspi-gpio", saj je besedilo pripisano obstoječi konfiguraciji in ga je treba ločiti s tem prostorom.
Licenca za avtorske pravice
Copyright © 2022 Interelectronix e.K.
Izvorna koda projekta je licencirana pod licenco GPL-3.0.
Priznanja
Viri, uporabljeni za ustvarjanje teh navodil:
Hvala vsem.