Embedded Software - Yocto build Raspberry Pi 4 zrzut ekranu komputera

Raspberry Pi 4 zbudowane na Yocto

w środowisku dockera

Yocto uruchomiony w kontenerze dockera

W dokumentach Yocto znajduje się rozdział (2.2.2) dotyczący tworzenia platform CROss (CROPS) jako alternatywy dla tworzenia natywnego komputera z linuksem.Ta alternatywa wykorzystuje kontener dockera do budowania niestandardowego obrazu systemu, np. dla Raspberry Pi.

Niestety w dokumentacji dotyczącej konfiguracji tego środowiska w systemie Mac OS X (Monterey) są drobne błędy.### Konfiguracja kontenera docker dla Mac OS X

Aby używać dockera CROPS w systemach Linux, Windows i Mac OS X, potrzebne są specjalne ustawienia. Przed skonfigurowaniem kontenera dla Yocto należy utworzyć wolumin dockera, aby zapisać w nim wyniki. Do dostarczania plików w systemie Mac OS X służy również kontener samba dockera.

Utwórz wolumin dockera

W oknie terminala wpisz następujące polecenia:

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

Utwórz i uruchom kontener samba

OSX nie pozwoli na połączenie z lokalnie udostępnianą sambą. Dlatego najpierw należy utworzyć alias dla 127.0.0.1 z 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Następnie utwórz kontener samby, który pozwala zobaczyć pliki w woluminie dockera:

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

Ponieważ zawsze musisz mieć alias, aby połączyć się z kontenerem samby, możesz połączyć początek samby z aliasem w następujący sposób:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Teraz możesz otworzyć workdir w przeglądarce plików. W wyszukiwarce naciśnij „Command-K”, a w polu adresu serwera wpisz „smb://127.0.0.2/workdir” i kliknij „Połącz”. Teraz powinieneś zobaczyć zawartość woluminu dockera w wyszukiwarce.

Tworzenie i uruchamianie kontenera Yocto

Aby utworzyć i/lub uruchomić kontener Yocto, wpisz w oknie terminala:

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

Konfiguracja środowiska testowego w kontenerze

Po uruchomieniu kontenera dockera pojawia się komunikat terminala, który wygląda następująco: „pokyuser@d4ddfe042587:/workdir”.

Teraz możesz skonfigurować środowisko testowe.

Klonuj wersję poky

W moim przypadku używam wersji Yocto 3.4 o nazwie „Honister” ponieważ warstwy meta-raspberry nie są obecnie dostępne dla nowszych wersji poky. Jeśli robisz to po raz pierwszy, musisz sklonować repozytorium poky:

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

Jeśli chcesz zaktualizować poky do najnowszej wersji:

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

Dodatkowe meta warstwy dla Raspberry Pi

Zmień na „poky-honister” i sklonuj następujące repozytoria: meta-raspberry, meta-openembedded i w razie potrzeby 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

Konfiguracja kompilacji konfiguracji

Opuść katalog poky-honister, aby znaleźć się w katalogu /workdir. Teraz pobierz środowisko testowe za pomocą skryptu oe-init-build-env.

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

Zostanie utworzony nowy katalog „rpi-build” - możesz go nazwać jak chcesz - oraz katalog konfiguracyjny z plikami bblayers.conf, local.conf i templateconf.cfg.

Ponieważ w kontenerze nie ma zainstalowanego edytora tekstu, należy albo edytować pliki konfiguracyjne w zamontowanym woluminie samby w systemie Mac OS X, albo zainstalować edytor tekstu w kontenerze. Aby to zrobić, musisz otworzyć drugie okno terminala - podczas gdy kontener yocto jest uruchomiony - i uruchomić powłokę bash w kontenerze z uprawnieniami roota:

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

Następnie możesz edytować pliki konfiguracyjne w kontenerze yocto jako pokyuser.

Uwaga

Edytor nie jest zainstalowany na stałe. Po opuszczeniu kontenera i ponownym wejściu należy go ponownie zainstalować

Najpierw dodaj meta-raspberry do pliku bblayers.conf

nano conf/bblayers.conf

Dodaj „/workdir/poky-honister/meta-raspberrypi \”, aby wyglądał jak

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

i zapisz go.

Druga edycja pliku local.conf

Edytuj plik local.conf:

nano conf/local.conf

Zmień następujące wiersze:

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

W zależności od tego, której wersji Raspberry chcesz użyć (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, itp.)

odkomentuj następujące wiersze:

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

Dodaj następujące wiersze na końcu, aby sdimg zainstalował się na karcie SD:

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

Zapisz plik local.conf.

Wygeneruj pierwszy obraz za pomocą Bitbake

Teraz masz minimalne ustawienia do zbudowania pierwszego obrazu:

bitbake -k core-image-minimal

W dokumentacji Yocto znajdziesz krótki opis dostępnych opisów obrazów.Na przykład:

  • core-image-minimal: Mały obraz umożliwiający uruchomienie urządzenia.
  • core-image-base: Obraz samej konsoli, który w pełni obsługuje sprzęt urządzenia docelowego.
  • core-image-full-cmdline: Obraz samej konsoli z zainstalowaną pełniejszą funkcjonalnością systemu Linux.

Po chwili - która przy pierwszym podejściu może trwać kilka godzin - bitbake kończy pracę i plik sdimg znajduje się w następującym katalogu:

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

Dodatkowe konfiguracje

Dodatkowe konfiguracje sprzętu Raspberry

Aby ustawić określone ustawienia sprzętowe, możesz zajrzeć do extra-apps.md i extra-build-config.md.Pliki te znajdują się również w katalogu meta-raspberrypi/docs.

Warstwa meta zapewnia również konfigurację obrazu „rpi-test-image” do użycia z bitbake. Obraz jest oparty na "core-image-base", który zawiera większość pakietów w meta-raspberrypi i niektóre próbki mediów.

bitbake -k rpi-test-image

Dodatkowe konfiguracje oprogramowania

W zależności od używanej konfiguracji budowania obrazu może być konieczne zainstalowanie dodatkowych pakietów oprogramowania.

Możesz to zrobić, dodając niektóre ustawienia do pliku local.conf.

Na przykład możesz dodać następujące wiersze, aby ustawić ssh-server, pi-user i 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"

Lub dodać python:

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

Uwaga

Spacja początkowa w „ python3 python3-pip rpi-gpio raspi-gpio” jest ważna, ponieważ tekst jest dołączany do istniejącej konfiguracji i musi być oddzielony tą spacją.

Licencja na prawa autorskie

Copyright © 2022 Interelectronix e.K.
Ten kod źródłowy projektu jest udostępniany na licencji **GPL-3.0 * *.

Podziękowania

Źródła użyte do utworzenia niniejszej Instrukcji:

https://docs.yoctoproject.org/index.html

Dziękujemy wszystkim.