Sulautetut ohjelmistot - Yocto rakentaa Raspberry Pi 4: n kuvakaappauksen tietokoneesta

Yoctolla ohjelmoitava Raspberry Pi 4

Docker-ympäristössä

Avoimen lähdekoodin Yocto-projektiopas

asennusvinkkejä mukautettu Linux Raspberry Pi: ssä Dockerin kanssa

Avoimen lähdekoodin Yocto Project -opas mukautetulle Linuxille Raspberry Pi: ssä Dockerin asennusvinkkien avulla

Sukella Yocto-projektiin mukautetuille Linux-järjestelmille millä tahansa laitteistolla. Täydellinen kehittäjille ja sulautettujen järjestelmien harrastajille. Aloita rakentaminen nyt!

Tutustu Yocto-projektiin, avoimen lähdekoodin aloitteeseen mukautettujen Linux-järjestelmien luomiseksi mille tahansa laitteistoarkkitehtuurille. Opi käyttämään CROPSia alustojen väliseen kehitykseen, asenna Docker-säilöjä ja rakenna räätälöityjä Linux-kuvia sulautetuille ja IoT-laitteille. Oppaamme kattaa macOS:n asennuksen, rakennusympäristöjen määrittämisen ja optimoinnin Raspberry Pi:lle. Olitpa aloittelija tai asiantuntija, löydä parhaat käytännöt, työkalut ja yhteisön tuki Linux-projektisi tarpeisiin.

Yocton suorittaminen Docker-kontissa

Yocto-dokumenteissa on luku (2.2.2) alustariippumattoman ohjelmiston (Cross Platform Software, CROPS) asentamisesta vaihtoehtona alkuperäisen Linux-pohjaisen tietokoneen asentamiselle. Tämä vaihtoehto käyttää Docker-konttia luodakseen räätälöidyn järjestelmälevykuvan esim. Raspberry Pi:lle.

Asensin tämän käyttöympäristön itselleni Mac OS X (Monterey) -käyttöjärjestelmään, mutta valitettavasti asennusohjeissa on joitakin pieniä virheitä.

Docker-kontin asentaminen Mac OS X:lle

Jotta CROPS Dockerin käyttö Linux-, Windows- ja Mac OS X -käyttöjärjestelmillä onnistuisi, tarvitaan joitakin erityisasetuksia. Ennen kuin asennat kontin Yoctoa varten, sinun on luotava Docker volume tulosten tallentamiseksi. Myös Docker Samba -konttia käytetään tiedostojen hallintaan Mac OS X:llä.

Docker volumen luominen

Kirjoita terminaali-ikkunaan seuraavat komennot:

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

Samba-kontin luominen ja suorittaminen

OSX ei anna sinun muodostaa yhteyttä paikallisesti toimivaan Samba-jakoon. Siksi sinun on ensin luotava peitenimi portille 127.0.0.1 tai 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Luo sitten Samba-kontti, jonka avulla näet tiedostot Docker volumessa:

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

Koska tarvitset aina Samba-konttiin liitettävän peitenimen, voit yhdistää Samban alun ja peitenimen näin:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Nyt voit avata työikkunan tiedostoselaimessa. Napauta hakukentässä "Command-K" ja kirjoita palvelimen osoitekenttään "smb://127.0.0.2/workdir" ja klikkaa "Connect". Nyt sinun pitäisi nähdä Docker volumen sisältö hakukentässä.

Yocto-kontin luominen ja käynnistäminen

Luodaksesi ja/tai aloittaaksesi Yocto-kontin kirjoita terminaali-ikkunaan:

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

Rakennusympäristön määrittäminen konttiin

Kun Docker-kontti käynnistetään, terminaalikehote näyttää tältä: "pokyuser@d4ddfe042587:/workdir".

Nyt voit määrittää rakennusympäristön.

Poky-version kloonaaminen

Itse käytän Yocto-versiota 3.4 nimellä "Honister", koska meta-raspberry-kerrokset eivät ole tällä hetkellä saatavilla uudemmille Poky-versioille. Ensimmäisellä kerralla sinun täytyy kloonata Poky-kuvauskanta:

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

Jos haluat päivittää Pokyn uusimpaan versioon:

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

Lisämetakerrokset Raspberry Pi:lle

Vaihda muotoon "poky-honister" ja kloonaa seuraavat kuvauskannat: meta-raspberry, meta-openembedded ja tarvittaessa 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

Rakennuskonfiguraation määrittäminen

Poistu poky-honister-hakemistosta, jolloin olet /workdir-hakemistossa. Hae nyt rakennusympäristö komentosarjalla oe-init-build-env.

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

Uusi hakemisto "rpi-build" – voit nimetä sen haluamallasi tavalla – ja konfiguraatiohakemisto tiedostoilla bblayers.conf, local.conf ja templateconf.cfg on luotu.

Koska konttiin ei ole asennettu tekstieditoria, sinun on joko muokattava konfiguraatiotiedostoja Mac OS X:ään asennetussa Samba volumessa tai asennettava tekstieditori konttiin. Tehdäksesi sen sinun täytyy avata toinen terminaali-ikkuna Yocto-kontin ollessa käynnissä ja käynnistää kontissa Bash shell -komentotulkki pääkäyttäjän oikeuksilla:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit

Sitten voit muokata konfiguraatiotiedostoja Yocto-kontissa Poky-käyttäjänä.

Huomautus

Editoria ei ole asennettu pysyvästi. Kun olet poistunut kontista ja haluat päästä sinne uudelleen, sinun on asennettava se uudelleen

Lisää ensin meta-raspberry bblayers.conf-tiedostoon

nano conf/bblayers.conf

Lisää "/workdir/poky-honister/meta-raspberrypi ", jolloin se näyttää

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

ja tallenna se.

Seuraavaksi muokkaa local.conf-tiedostoa

Muokkaa local.conf-tiedostoa:

nano conf/local.conf

Muuta seuraavat rivit:

  • MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"

Riippuen siitä, mitä Raspberryä haluat käyttää (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 jne.)

Poista seuraavien rivien kommentit:

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

Lisää seuraavat rivit loppuun saadaksesi sdimgin SD-muistikortille:

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

Tallenna local.conf-tiedosto.

BitBaken ensimmäinen levykuva

Nyt sinulla on minimiasetukset ensimmäisen levykuvan luomiseen:

bitbake -k core-image-minimal

Yocto-dokumentaatiosta löydät lyhyen kuvauksen saatavilla olevista levykuvista.

Esimerkiksi:

– core-image-minimal: Pieni levykuva, joka mahdollistaa vain laitteen käynnistymisen. – core-image-base: Pelkkä konsolikuva, joka tukee täysin kohdelaitteen laitteistoa. – core-image-full-cmdline: Pelkkä konsolikuva, johon on asennettu monipuolisemmat Linux-järjestelmän toiminnot.

Hetken kuluttua – joka voi ensimmäisellä kerralla tarkoittaa useita tunteja – BitBake on valmis ja löydät sdimg-tiedoston seuraavasta hakemistosta:

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

Lisäkonfiguraatiot

Raspberryn lisäasetukset

Asettaaksesi tiettyjä laitteistoasetuksia voit katsoa tiedostot extra-apps.md ja extra-build-config.md. Löydät nämä tiedostot myös meta-raspberrypi/docs-hakemistosta.

Metakerros tarjoaa myös levykuvan konfiguraation "rpi-test-image" käytettäväksi BitBaken kanssa. Levykuva perustuu tiedostoon "core-image-base", joka sisältää useimmat meta-raspberrypi:n paketit ja joitakin medianäytteitä.

bitbake -k rpi-test-image

Lisäohjelmistokonfiguraatiot

Käyttämästäsi levykuvan rakennuskonfiguraatiosta riippuen saatat joutua asentamaan lisää ohjelmistopaketteja.

Voit tehdä tämän lisäämällä joitakin asetuksia local.conf-tiedostoon.

Lisää esimerkiksi seuraavat rivit asettaaksesi asetukset ssh-server, pi-user ja 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"

Tai lisää python:

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

Huomautus

Alun välilyönti komentosarjassa "python3 python3-pip rpi-gpio raspi-gpio" on tärkeä, koska teksti on liitetty olemassa olevaan konfiguraatioon ja on erotettava välilyönnillä.

Tekijänoikeuslisenssi

Copyright © 2022 Interelectronix e.K.
Tämän projektin lähdekoodi on lisensoitu **GPL-3.0 ** -lisenssillä.

Kuittaukset

Näiden ohjeiden laatimiseen käytetyt lähteet:

https://github.com/crops/poky-containerhttps://docs.yoctoproject.org/index.html

Kiitos kaikille.