Sprievodca projektom Yocto s otvoreným zdrojovým kódom
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ť
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.