Vdelana programska oprema - Yocto zgradite Raspberry Pi 4, posnetek zaslona računalnika

Yocto graditi Malina Pi 4

v docker okolju

Odprtokodni vodnik po projektu Yocto

nasveti za nastavitev Linux po meri na Raspberry Pi z Dockerjem

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

#### Najprej dodaj meta-malino v bblayers.conf datoteko
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.