Embedded Software - Yocto stavět Raspberry Pi 4 screenshot počítače

Yocto postavit Raspberry Pi 4

V prostředí Dockeru

Průvodce projektem Yocto s otevřeným zdrojovým kódem

tipy pro nastavení vlastního Linuxu na Raspberry Pi s Dockerem

Open source Průvodce projektem Yocto pro vlastní Linux na Raspberry Pi s tipy pro nastavení Dockeru

Ponořte se do projektu Yocto pro vlastní linuxové systémy na jakémkoli hardwaru. Ideální pro vývojáře a nadšence do vestavěných systémů . Začněte stavět hned teď!

Seznamte se s projektem Yocto, opensourcovou iniciativou pro vytváření vlastních linuxových systémů pro libovolnou hardwarovou architekturu. Naučte se používat CROPS pro vývoj pro různé platformy, nastavovat kontejnery Dockeru a vytvářet přizpůsobené image Linuxu pro vestavěná a IoT zařízení. Naše příručka se zabývá nastavením v systému macOS, konfigurací prostředí sestavení a optimalizací pro Raspberry Pi. Ať už jste začátečník nebo odborník, najděte osvědčené postupy, nástroje a podporu komunity pro potřeby vašeho linuxového projektu.

Yocto běžící v kontejneru Dockeru

V yocto docs je kapitola (2.2.2) pro nastavení CROss PlatformS (CROPS) jako alternativy k nastavení nativního linuxového PC. Tato alternativa používá docker container k vytvoření přizpůsobeného obrazu systému, např. pro Raspberry Pi.

Bohužel v dokumentaci pro nastavení tohoto prostředí na Mac OS X (Monterey) jsou drobné chyby.

Nastavení kontejneru docker pro Mac OS X

Pro použití ukotvitelného panelu CROPS v systémech Linux, Windows a Mac OS X je zapotřebí několik speciálních nastavení. Před nastavením kontejneru pro Yocto musíte vytvořit svazek Docker pro ukládání výsledků. Docker samba kontejner se také používá k poskytování souborů v systému Mac OS X.

Vytvoření svazku Dockeru

V okně terminálu zadejte následující příkazy:

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

Vytvoření a spuštění kontejneru samby

OSX vám nedovolí připojit se k místně běžící sdílené samba. Proto je nejprve nutné vytvořit alias pro 127.0.0.1 z 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Pak vytvořte kontejner samby, který vám umožní zobrazit soubory ve svazku Docker:

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

Vzhledem k tomu, že pro připojení ke kontejneru samby budete vždy potřebovat alias, můžete začátek samby a aliasu zkombinovat takto:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Nyní můžete otevřít workdir v prohlížeči souborů. Ve vyhledávači klikněte na "Command-K" a do pole adresy serveru zadejte "smb://127.0.0.2/workdir" a klikněte na "Připojit". Nyní byste měli vidět obsah svazku dockeru ve vyhledávači.

Vytvoření a spuštění kontejneru Yocto

Vytvoření a/nebo spuštění typu kontejneru Yocto v okně terminálu:

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

Nastavení prostředí sestavení v kontejneru

Po spuštění kontejneru docker se zobrazí výzva terminálu, která vypadá takto: "pokyuser@d4ddfe042587:/workdir".

Nyní můžete nastavit prostředí sestavení.

Klonovat verzi poky

V mém případě používám Yocto verze 3.4 s názvem "Honister", protože meta-malinové vrstvy nejsou v současné době k dispozici pro novější verze poky. Poprvé musíte klonovat poky úložiště:

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

Pokud chcete aktualizovat poky na nejnovější verzi:

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

Další meta vrstvy pro Raspberry Pi

Změňte na "poky-honister" a naklonujte následující repozitáře: meta-raspberry, meta-openembedded a v případě potřeby 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

Konfigurace sestavení instalačního programu

Nechte adresář poky-honister, takže jste v adresáři /workdir. Nyní zdrojujte prostředí sestavení pomocí skriptu oe-init-build-env .

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

Vytvoří se nový adresář "rpi-build" - můžete jej pojmenovat, jak chcete - a adresář conf se soubory bblayers.conf, local.conf a templateconf.cfg.

Vzhledem k tomu, že v kontejneru není nainstalován žádný textový editor, musíte buď upravit konfigurační soubory v připojeném svazku samby v systému Mac OS X, nebo musíte nainstalovat textový editor do kontejneru. Chcete-li to provést, musíte otevřít druhé okno terminálu - zatímco je spuštěn kontejner yocto - a spustit shell bash v kontejneru s oprávněními root:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Pak můžete upravit konfigurační soubory v yocto kontejneru jako pokyuser.

Poznámka

Editor není nainstalován trvale. Po opuštění kontejneru a opětovném vstupu jej musíte znovu nainstalovat

#### Nejprve přidejte meta-malinu do souboru bblayers.conf
nano conf/bblayers.conf

Přidejte "/ workdir / poky-honister / meta-raspberrypi ", aby to vypadalo 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 jej.

Druhá úprava souboru local.conf

Upravte soubor local.conf:

nano conf/local.conf

Změňte následující řádky:

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

V závislosti na tom, kterou malinu chcete použít (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 atd.)

Odkomentujte následující řádky:

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

Přidejte následující řádky na konec, abyste získali sdimg flash na SD kartu:

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

Uložte soubor local.conf.

Bitbake první obrázek

Nyní máte minimální nastavení pro sestavení první image:

bitbake -k core-image-minimal

V dokumentaci Yocto najdete krátký popis dostupných popisů obrázků.

Například:

  • core-image-minimal: Malý obraz schopný umožnit spuštění zařízení.
  • core-image-base: Obraz pouze pro konzoli, který plně podporuje hardware cílového zařízení.
  • core-image-full-cmdline: Obraz pouze pro konzoli s nainstalovanou plnohodnotnější funkcí systému Linux.

Po chvíli - což může být serverové hodiny poprvé - bitbake skončí a najdete soubor sdimg v následujícím adresáři:

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

Další konfigurace

Extra Raspberry hardwarové konfigurace

Chcete-li nastavit konkrétní nastavení hardwaru, můžete se podívat na extra-apps.md a extra-build-config.md. Tyto soubory najdete také v adresáři meta-raspberrypi/docs.

Meta vrstva také poskytuje konfiguraci obrazu "rpi-test-image" pro použití s bitbake. Obraz je založen na "core-image-base", který obsahuje většinu balíčků v meta-raspberrypi a některé mediální vzorky.

bitbake -k rpi-test-image

 

Další softwarové konfigurace

V závislosti na tom, jakou konfiguraci sestavení bitové kopie používáte, může být nutné nainstalovat další softwarové balíčky.

Můžete to provést přidáním některých nastavení do souboru local.conf.

Například přidejte následující řádky pro nastavení 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"

Nebo přidejte python:

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

Poznámka

Počáteční mezera v "python3 python3-pip rpi-gpio raspi-gpio" je důležitá, protože text je připojen ke stávající konfiguraci a musí být oddělen touto mezerou.

Licence na autorská práva

Autorská práva © 2022 Interelectronix e.K.
Tento zdrojový kód projektu je licencován pod licencí GPL-3.0.

Uznání

Zdroje použité při vytváření tohoto návodu:

Díky všem.