Ingeboude sagteware - Yocto bou Raspberry Pi 4 'n skermkiekie van 'n rekenaar

Yocto bou Raspberry Pi 4

In 'n Docker-omgewing

Open source Yocto-projekgids

opstelwenke pasgemaakte Linux op Raspberry Pi met Docker

Open source Yocto Project gids vir persoonlike Linux op Raspberry Pi met Docker-opstelwenke

Duik in die Yocto-projek vir pasgemaakte Linux-stelsels op enige hardeware. Ideaal vir ontwikkelaars en ingebedde stelselentoesiaste . Begin nou bou!

Verken die Yocto-projek, 'n open source-inisiatief om persoonlike Linux-stelsels vir enige hardeware-argitektuur te skep. Leer om CROPS te gebruik vir kruisplatformontwikkeling, stel Docker-houers op en bou pasgemaakte Linux-beelde vir ingebedde en IoT-toestelle. Ons gids dek opstelling op macOS, die opstel van bouomgewings en optimalisering vir Raspberry Pi. Of u nou 'n beginner of 'n kundige is, vind beste praktyke, gereedskap en gemeenskapsondersteuning vir u Linux-projekbehoeftes.

Yocto hardloop in docker houer

In die yocto-dokumente is daar 'n hoofstuk (2.2.2) vir die opstel van CROVS-platforms (CROPS) as alternatief vir die opstel van 'n inheemse Linux-rekenaar. Hierdie alternatief gebruik docker-houer om 'n pasgemaakte stelselbeeld te bou, byvoorbeeld vir die Raspberry Pi.

Ongelukkig is daar 'n paar klein foute in die dokumentasie vir die opstel van hierdie omgewing vir my op Mac OS X (Monterey).

Stel docker-houer op vir Mac OS X

Vir die gebruik van die CROPS-docker op Linux, Windows en Mac OS X, is daar 'n paar spesiale instellings nodig. Voordat u die houer vir Yocto opstel, moet u 'n dockervolume skep om die resultate op te slaan. Ook 'n docker samba-houer word gebruik om die lêers in Mac OS X te verskaf.

Skep docker volume

Tik die volgende opdragte in 'n terminale venster in:

docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir

Skep en bestuur 'n samba-houer

OSX laat jou nie toe om aan te sluit by 'n plaaslike samba-aandeel nie. Daarom moet u eers 'n alias skep vir 127.0.0.1 van 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Skep dan die samba-houer waarmee u die lêers in die docker-volume kan sien:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

Aangesien u altyd die alias moet hê om aan die samba-houer te koppel, kan u die begin van samba en alias soos volg kombineer:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Nou kan u die workdir in die lêerblaaier oopmaak. Klik in die vinder op "Command-K" en tik in die adreskassie van die bediener "smb://127.0.0.2/workdir" en klik op "Verbind". Nou moet u die inhoud van die docker-volume in die vinder sien.

Skep en begin die Yocto-houer

Om die Yocto-houertipe in 'n terminale venster te skep en / of te begin:

docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir

Stel bou-omgewing in die houer op

As die docker-houer begin word, het u 'n terminale opdrag wat so lyk: "pokyuser@d4ddfe042587:/workdir".

Nou kan jy die bou-omgewing opstel.

Kloon poky weergawe

In my geval gebruik ek die Yocto weergawe 3.4 met die naam "Honister", want die meta-frambooslae is tans nie beskikbaar vir nuwer poky-weergawes nie. Vir die eerste keer moet u die poky-bewaarplek kloon:

git clone -b honister git://git.yoctoproject.org/poky poky-honister

As u poky na die nuutste weergawe wil opdateer:

cd poky-honister
git pull --all --prune

Bykomende metalae vir Raspberry Pi

Verander na "poky-honister" en kloon die volgende bewaarplekke: meta-framboos, meta-openembedded en indien nodig 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

Opstel bou konfigurasie

Los die poky-honister-gids, sodat u in die / workdir is. Verkry nou die bou-omgewing met die skrif oe-init-build-env.

cd ..
source poky-honister/oe-init-build-env rpi-build

'N Nuwe gids "rpi-build" - u kan dit noem soos u wil - en 'n konfederasiegids met die lêers bblayers.conf, local.conf en templateconf.cfg word geskep.

Aangesien daar geen teksredakteur in die houer geïnstalleer is nie, moet u die config-lêers in die gemonteerde samba-volume in Mac OS X wysig, of 'n teksredakteur in die houer moet installeer. Om dit te kan doen, moet u 'n tweede terminale venster oopmaak - terwyl die yocto-houer loop - en 'n bash-dop in die houer begin met wortelvoorregte:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Dan kan u die konfigurasielêers in die yocto-houer as pokyuser wysig.

Nota

Die redakteur word nie permanent geïnstalleer nie. Nadat u die houer verlaat het en weer ingegaan het, moet u dit weer installeer

#### Voeg eers die meta-framboos in die bblayers.conf-lêer by
nano conf/bblayers.conf

Voeg "/workdir/poky-honister/meta-raspberrypi " by sodat dit lyk soos

BBLAYERS ?= " \
  /workdir/poky-honister/meta \
  /workdir/poky-honister/meta-poky \
  /workdir/poky-honister/meta-yocto-bsp \
  /workdir/poky-honister/meta-raspberrypi \
  "

en stoor dit.

Tweede wysig die local.conf

Wysig die lêer local.conf:

nano conf/local.conf

Verander die volgende reëls:

-MASJIEN?? = "qemux86-64" -> MASJIEN ?? = "framboospi4-64"

Afhangende van watter Framboos jy wil gebruik (framboospi0, framboospi0w, framboospi3, framboospi3-64, framboospi4, framboospi4-64, ens.)

Ontkom die volgende reëls uit:

  • DL_DIR ?= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

Voeg die volgende reëls aan die einde by om 'n sdimg na 'n SD-kaart te laat flits:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

Stoor die local.conf-lêer.

Bitbake die eerste prent

Nou het u minimale instellings om die eerste beeld te bou:

bitbake -k core-image-minimal

In die Yocto -dokumentasie vind u 'n kort beskrywing van die beskikbare beeldbeskrywings.

Byvoorbeeld:

  • kern-beeld-minimaal: 'n Klein beeld wat net 'n toestel kan toelaat om te begin.
  • kern-beeldbasis: 'n Konsole-alleen-beeld wat die hardeware van die teikenapparaat ten volle ondersteun.
  • core-image-full-cmdline: 'n Konsole-enigste beeld met meer volledige Linux-stelselfunksionaliteit geïnstalleer.

Na 'n rukkie - wat vir die eerste keer bedienerure kan wees - is die bitbake klaar en vind u die sdimg-lêer in die volgende gids:

/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

Ekstra konfigurasies

Ekstra framboos hardeware konfigurasies

Om spesifieke hardeware-instellings in te stel, kan u na extra-apps.md kyk en extra-build-config.md. U vind hierdie lêers ook in die meta-raspberrypi/docs-gids.

Die metalaag bied ook 'n beeldkonfigurasie "rpi-test-image" om saam met bitbake te gebruik. Die beeld is gebaseer op 'kernbeeldbasis' wat die meeste pakkette in meta-raspberrypi en sommige mediamonsters insluit.

bitbake -k rpi-test-image

 

Ekstra sagtewarekonfigurasies

Afhangende van watter beeldboukonfigurasie jy gebruik, moet jy dalk addisionele sagtewarepakkette installeer.

U kan dit doen deur 'n paar instellings by die local.conf-lêer te voeg.

Voeg byvoorbeeld die volgende reëls by om ssh-server, pi-user en systemd in te stel:

## 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"

Of voeg luislang by:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

Nota

Die beginruimte in " python3 python3-pip rpi-gpio raspi-gpio" is belangrik, omdat die teks by die bestaande konfigurasie gevoeg word en met hierdie ruimte geskei moet word.

Kopiereg lisensie

Kopiereg © 2022 Interelectronix e.K.
Hierdie projekbronkode is gelisensieer onder die GPL-3.0 lisensie.

Erkennings

Bronne wat gebruik word om hierdie instruksies te skep:

Dankie aan almal.