Zabudovaný softvér - Yocto build Raspberry Pi 4: snímka obrazovky počítača

Yocto postaviť Raspberry Pi 4

V prostredí dockera

Sprievodca projektom Yocto s otvoreným zdrojovým kódom

tipy na nastavenie vlastného Linuxu na Raspberry Pi s Dockerom

Sprievodca projektom Yocto s otvoreným zdrojovým kódom pre vlastný Linux na Raspberry Pi s tipmi na nastavenie Dockeru

Ponorte sa do projektu Yocto pre vlastné systémy Linux na akomkoľvek hardvéri. Ideálne pre vývojárov a nadšencov vstavaných systémov . Začnite stavať už teraz!

Preskúmajte projekt Yocto, open-source iniciatívu na vytváranie vlastných systémov Linux pre akúkoľvek hardvérovú architektúru. Naučte sa používať CROPS na vývoj naprieč platformami, nastavujte kontajnery Docker a vytvárajte prispôsobené obrazy Linuxu pre vstavané zariadenia a zariadenia IoT. Naša príručka sa zaoberá nastavením v systéme macOS, konfiguráciou prostredí zostavovania a optimalizáciou pre Raspberry Pi. Či už ste začiatočník alebo odborník, nájdite osvedčené postupy, nástroje a podporu komunity pre potreby vášho projektu Linux.

Yocto beží v dockerovom kontajneri

V yocto docs je kapitola (2.2.2) pre nastavenie CROss PlatformS (CROPS) ako alternatívy k nastaveniu natívneho linuxového počítača. Táto alternatíva používa kontajner docker na vytvorenie prispôsobeného obrazu systému, napr. pre Raspberry Pi.

Bohužiaľ sú nejaké malé chyby v dokumentácii pre nastavenie tohto prostredia pre mňa v systéme Mac OS X (Monterey).

Nastavenie kontajnera doku pre Mac OS X

Pre použitie doku CROPS v systémoch Linux, Windows a Mac OS X sú potrebné niektoré špeciálne nastavenia. Pred nastavením kontajnera pre Yocto musíte vytvoriť zväzok doku na uloženie výsledkov. Na poskytovanie súborov v systéme Mac OS X sa používa aj kontajner samby docker.

Vytvorte zväzok dokovača

V okne terminálu zadajte nasledujúce príkazy:

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

Vytvorte a spustite kontajner samby

OSX vám nedovolí pripojiť sa k lokálne bežiacemu zdieľaniu samby. Preto musíte najprv vytvoriť alias pre 127.0.0.1 z 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Potom vytvorte kontajner samba, ktorý vám umožní zobraziť súbory v zväzku docker:

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

Keďže na pripojenie k kontajneru samby budete vždy potrebovať alias, môžete skombinovať začiatok samby a alias takto:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Teraz môžete otvoriť workdir v prehliadači súborov. Vo vyhľadávači stlačte "Command-K" ado poľa adresy servera zadajte "smb://127.0.0.2/workdir" a kliknite na "Pripojiť". Teraz by ste mali vidieť obsah zväzku docker vo vyhľadávači.

Vytvorte a spustite kontajner Yocto

Ak chcete vytvoriť a/alebo spustiť typ kontajnera Yocto v okne terminálu:

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

Nastavenie prostredia zostavy v kontajneri

Po spustení kontajnera docker sa zobrazí výzva terminálu, ktorá vyzerá takto: "pokyuser@d4ddfe042587:/workdir".

Teraz môžete nastaviť prostredie zostavenia.

Klonovanie poky verzie

V mojom prípade používam verziu Yocto 3.4 s názvom "Honister", pretože meta-malinové vrstvy momentálne nie sú k dispozícii pre novšie verzie poky. Prvýkrát musíte klonovať úložisko poky:

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

Ak chcete aktualizovať poky na najnovšiu verziu:

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

Ďalšie meta vrstvy pre Raspberry Pi

Zmeňte na "poky-honister" a klonujte nasledujúce úložiská: meta-malina, meta-openembedded a v prípade potreby 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

Konfigurácia zostavenia nastavenia

Opustite adresár poky-honister, aby ste boli v /workdir. Teraz získajte prostredie zostavenia pomocou skriptu oe-init-build-env.

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

Vytvorí sa nový adresár "rpi-build" - môžete ho pomenovať, ako chcete - a conf adresár so súbormi bblayers.conf, local.conf a templateconf.cfg.

Keďže v kontajneri nie je nainštalovaný žiadny textový editor, musíte buď upraviť konfiguračné súbory v pripojenom zväzku samby v systéme Mac OS X, alebo musíte do kontajnera nainštalovať textový editor. Ak to chcete urobiť, musíte otvoriť druhé okno terminálu - zatiaľ čo kontajner yocto beží - a spustiť shell bash v kontajneri s oprávneniami root:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Potom môžete upraviť konfiguračné súbory v kontajneri yocto ako pokyuser.

Nota

Editor nie je nainštalovaný natrvalo. Po opustení kontajnera a opätovnom vstupe ho musíte znova nainštalovať

#### Najprv pridajte meta-malinu do súboru bblayers.conf
nano conf/bblayers.conf

Pridajte "/workdir/poky-honister/meta-raspberrypi ", aby to vyzeralo takto

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

a uložte ho.

Druhá úprava local.conf

Upravte súbor local.conf:

nano conf/local.conf

Zmeňte nasledujúce riadky:

-STROJ?? = "qemux86-64" -> STROJ ?? = "malinapi4-64"

V závislosti od toho, ktorú malinu chcete použiť (malinapi0, malinapi0w, malinapi3, malinapi3-64, malinapi4, malinapi4-64 atď.)

Zrušte komentár k nasledujúcim riadkom:

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

Pridajte nasledujúce riadky na koniec, aby sdimg blikal na SD kartu:

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

Uložte súbor local.conf.

Bitbake prvý obrázok

Teraz máte minimálne nastavenia na vytvorenie prvého obrázka:

bitbake -k core-image-minimal

V dokumentácii Yocto nájdete krátky popis dostupných popisov obrázkov.

Napríklad:

  • core-image-minimal: Malý obrázok, ktorý je schopný umožniť spustenie zariadenia.
  • core-image-base: Obraz iba pre konzolu, ktorý plne podporuje hardvér cieľového zariadenia.
  • core-image-full-cmdline: Obraz iba pre konzoly s nainštalovanými plnohodnotnejšími funkciami systému Linux.

Po chvíli - čo môžu byť serverové hodiny prvýkrát - bitbake dokončí a súbor sdimg nájdete v nasledujúcom adresári:

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

Ďalšie konfigurácie

Extra Raspberry hardvérové konfigurácie

Ak chcete nastaviť konkrétne nastavenia hardvéru, môžete sa pozrieť na extra-apps.md a extra-build-config.md. Tieto súbory nájdete aj v adresári meta-raspberrypi/docs.

Meta vrstva tiež poskytuje konfiguráciu obrazu "rpi-test-image" na použitie s bitbake. Obrázok je založený na "základni jadra-obrazu", ktorá obsahuje väčšinu balíkov v meta-raspberrypi a niektoré vzorky médií.

bitbake -k rpi-test-image

 

Ďalšie softvérové konfigurácie

V závislosti od konfigurácie zostavy obrazu, ktorú používate, môže byť potrebné nainštalovať ďalšie softvérové balíky.

Môžete to urobiť pridaním niektorých nastavení do súboru local.conf.

Napríklad pridajte nasledujúce riadky, aby ste nastavili ssh-server, pi-user a 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"

Alebo pridaj python:

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

Nota

Počiatočná medzera v " python3 python3-pip rpi-gpio raspi-gpio" je dôležitá, pretože text je pripojený k existujúcej konfigurácii a musí byť oddelený týmto priestorom.

Licencia na autorské práva

Copyright © 2022 Interelectronix e.K.
Tento zdrojový kód Projectu je licencovaný pod licenciou GPL-3.0.

Poďakovanie

Zdroje použité pri vytváraní týchto pokynov:

Ďakujem všetkým.