Yocto-prosjektveiledning med åpen kildekode
Yocto Project-veiledning med åpen kildekode for tilpasset Linux på Raspberry Pi med Docker-oppsetttips
Dykk inn i Yocto-prosjektet for tilpassede Linux-systemer på hvilken som helst maskinvare. Perfekt for utviklere og innebygde systementusiaster . Begynn å bygge nå!
Utforsk Yocto Project, et åpen kildekode-initiativ for å lage tilpassede Linux-systemer for enhver maskinvarearkitektur. Lær å bruke CROPS til utvikling på tvers av plattformer, konfigurer Docker-beholdere og bygg skreddersydde Linux-avbildninger for innebygde enheter og IoT-enheter. Vår guide dekker oppsett på macOS, konfigurering av byggemiljøer og optimalisering for Raspberry Pi. Enten du er nybegynner eller ekspert, finn anbefalte fremgangsmåter, verktøy og fellesskapsstøtte for Linux-prosjektbehovene dine.
Yocto kjører i dokkercontainer
I yocto docs er det et kapittel (2.2.2) for å sette opp CROss PlatformS (CROPS) som alternativ til å sette opp en native linux pc. Dette alternativet bruker dokercontaineren til å bygge et tilpasset systembilde, f.eks. for Raspberry Pi.
Dessverre er det noen små feil i dokumentasjonen for å sette opp dette miljøet for meg på Mac OS X (Monterey).### Sett opp dokkercontainer for Mac OS X
For å kunne bruke CROPS-dokkeren på Linux, Windows og Mac OS X, trengs det noen spesielle innstillinger. Før du konfigurerer containeren for Yocto, må du opprette et dokkervolum for å lagre resultatene. En dokker samba container brukes også til å levere filene i Mac OS X.
Opprett dokkervolum
I et terminalvindu skriver du inn følgende kommandoer:
docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir
Opprett og kjør en samba-container
OSX lar deg ikke koble til en lokalt kjørende samba- ressurs. Derfor må du først opprette et alias for 127.0.0.1 av 127.0.0.2.
sudo ifconfig lo0 127.0.0.2 alias up
Opprett deretter samba-containeren, som lar deg se filene i dokkervolumet:
docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba
Siden du alltid må ha aliaset for å koble til samba-containeren, kan du kombinere starten på samba og alias slik:
docker start samba && sudo ifconfig lo0 127.0.0.2 alias up
Nå kan du åpne arbeidsmappen i filnettleseren. I søkeren trykker du på "Command-K" og i serveradresseboksen skriver du "smb://127.0.0.2/workdir" og klikker "Connect". Nå bør du se innholdet i dokkervolumet i søkeren.
Opprett og start Yocto-containeren
For å opprette og/eller starte Yocto-containertypen i et terminalvindu:
docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir
Sett opp byggemiljø i containeren
Når dockercontaineren startes, har du en terminalprompt som ser slik ut: "pokyuser@d4ddfe042587:/workdir".
Nå kan du sette opp byggemiljøet.
Klone poky-versjon
I mitt tilfelle bruker jeg Yocto-versjon 3.4 med navnet "Honister", fordi meta-raspberry-lagene ikke er tilgjengelige for nyere Poky-versjoner på dette tidspunktet. For den første gangen må du klone poky-arkivet:
git clone -b honister git://git.yoctoproject.org/poky poky-honister
Hvis du vil oppdatere poky til den nyeste versjonen:
cd poky-honister
git pull --all --prune
# Ekstra metalag for Raspberry Pi
Bytt til «poky-honister» og klon følgende lagre: meta-raspberry, meta-openembedded og om nødvendig 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
# Konfigurer byggekonfigurasjon
Forlat poky-honister-katalogen, slik at du er i /workdir. Nå kan du bygge opp kildemiljøet med skriptet oe-init-build-env.
cd ..
source poky-honister/oe-init-build-env rpi-build
En ny katalog "rpi-build" som du kan navngi som du vil, og en konf mappe med filene bblayers.conf, local.conf og templateconf.cfg opprettes.
Siden det ikke er installert noe tekstredigeringsprogram i containeren, må du enten redigere oppsettsfilene i det monterte samba-volumet i Mac OS X eller installere et tekstredigeringsprogram i containeren. For å gjøre dette, må du åpne et andre terminalvindu, mens yocto-containeren kjører, og starte et bash-skall i containeren med root-rettigheter:
docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Da kan du redigere konfigurasjonsfilene i yocto-containeren som pokyuser.
Merknad
Redigeringsprogrammet er ikke permanent installert. Etter at du har forlatt containeren og gått inn igjen, må du installere den på nytt
# Legg først til meta-raspberry i bblayers.conf-filen
nano conf/bblayers.conf
Legg til "/workdir/poky-honister/meta-raspberrypi " slik at det ser ut som
BBLAYERS ?= " \
/workdir/poky-honister/meta \
/workdir/poky-honister/meta-poky \
/workdir/poky-honister/meta-yocto-bsp \
/workdir/poky-honister/meta-raspberrypi \
"
og lagre den.
Andre redigering av local.conf
Rediger filen local.conf:
nano conf/local.conf
Endre følgende linjer:
- MASKIN??= "qemux86-64" -> MASKIN ??= "raspberrypi4-64"
Avhengig av hvilket raspberry du vil bruke (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, etc)
Fjern kommentar på følgende linjer:
- DL_DIR?= "${TOPDIR}/downloads"
- SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
- TMPDIR = "${TOPDIR}/tmp"
Legg til følgende linjer på slutten, for å få en sdimg til å blinke til et SD-kort:
- IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
- SDIMG_ROOTFS_TYPE = "ext4.xz"
Lagre filen local.conf.
Bitbake the first image
Nå har du minimale innstillinger for å bygge det første bildet:
bitbake -k core-image-minimal
I Yocto-dokumentasjonen finner du en kort beskrivelse av de tilgjengelige bildebeskrivelsene. For eksempel:
- core-image-minimal: Et lite bilde som bare er i stand til å tillate en enhet å starte opp.
- core-image-base: Et konsoll-bilde som støtter målenhetens maskinvare fullt ut.
- core-image-full-cmdline: Et konsollbilde med mer fullverdig Linux-systemfunksjonalitet installert.
Etter en stund, som kan være servertimer for første gang, er bitbake ferdig og du finner sdimg-filen i følgende katalog:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64
Ekstra konfigurasjoner
Ekstra Raspberry-maskinvarekonfigurasjoner
Hvis du vil angi spesifikke maskinvareinnstillinger, kan du se på extra-apps.md og extra-build-config.md.Du finner også disse filene i katalogen meta-raspberrypi/docs.
Metalaget gir også en bildekonfigurasjon "rpi-test-image" som kan brukes med bitbake. Bildet er basert på "core-image-base" som inkluderer de fleste pakkene i meta-raspberrypi og noen medieprøver.
bitbake -k rpi-test-image
Ekstra programvarekonfigurasjoner
Avhengig av hvilken bildebyggingskonfigurasjon du bruker, må du kanskje installere flere programvarepakker.
Du kan gjøre dette ved å legge til noen innstillinger i filen local.conf.
For eksempel legg til følgende linjer, for å angi ssh-server, pi-bruker og systemd:
## 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"
Eller legg til python:
IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"
Merknad
Begynnelsesrommet i« python3 python3-pip rpi-gpio raspi-gpio» er viktig, fordi teksten legges til eksisterende konfigurasjon og må skilles med dette rommet.
Opphavsrettslisens
Copyright © 2022 Interelectronix e.K.
Denne Project-kildekoden er lisensiert under GPL-3.0 -lisensen.
Anerkjennelser
Kilder som brukes til å opprette denne instruksjonen:
Takk til alle.