i.MX91S – prostsza konfiguracja projektu Yocto z narzędziem kas

·

prosta konfiguracja projektu yocto z narzędziem kas

W poprzednich wpisach pokazałem jak łatwo zbudować obraz systemu Linux na urządzenie FRDM i.MX91S od NXP. Co jeśli powiedziałbym, że można to samo osiągnąć jeszcze łatwiej – nawet jedną komendą?

Do tego typu rozwiązań powstało narzędzie kas od firmy Siemens. Firma natrafiła na następujący problem: mając wiele urządzeń i wiele różnych obrazów systemu – ciężko się w tym wszystkim połapać, a rekonfiguracja ustawień danego projektu nie jest tak prosta jak mogła by być. Kas jest rozwiązaniem, a dodatkowa konteneryzacja budowania pozwala uniezależnić się od systemu, na którym buduje się obrazy. Zaraz przedstawię Ci więcej na ten temat.

TL;DR

Może zacznijmy od przetestowania gotowego rozwiązania.

Wykonaj poniższe komendy u siebie w terminalu, a obraz zacznie się budować – będziesz mieć dużo czasu na przeczytanie reszty posta 🙂

git clone https://github.com/lewicki-pk/meta-leos/ && cd meta-leos
scripts/kas-container build kas-frdm-walnascar.yaml

To tyle – jeśli pominiemy linię klonującą repozytorium meta-leos to pozostaje nam jedna linijka, żeby zbudować projekt- do tego dążymy.

Czym właściwie jest kas

Kas to narzędzie, które pozwala opisać konfigurację projektu Yocto w jednym lub kilku plikach YAML.

Nie zastępuje ono BitBake ani Yocto.

Jego zadaniem jest przygotowanie środowiska i uruchomienie builda w powtarzalny sposób.

Rationale – po co nam to wszystko?

Wygodne przygotowanie meta warstw

Zaczynając pracę z Yocto – użycie repo tool’a wydaje się naturalnym krokiem, bo dzięki niemu masz dostęp do wszystkich interesujących cię meta warstw. Meta warstwy zdefiniowane w xml’owym manifeście używanym w repo toolu, de facto robią jedną rzecz- wołają git clone na wszystkich repozytoriach zawierających meta warstwy i umieszczają je w uzgodnionym miejscu. To jednak za mało.

Żeby zamknąć temat definiowania warstw – należy je jeszcze umieścić w pliku bblayers.conf a to nie dzieje się automatycznie – pomaga nam w tym zawołanie komendy source ./imx-setup-release.sh z odpowiednimi zmiennymi i parametrami.

Ustawienie maszyny i dystrybucji

W oryginalnym poście pokazałem, że skrypt imx-setup-release.sh należy zawołać w taki sposób:

MACHINE=imx91-11x11-lpddr4-frdm-imx91s DISTRO=fsl-imx-wayland source ./imx-setup-release.sh -b build

Czyli użytkownik musi wiedzieć jakie MACHINE go interesuje oraz jakie ustawić DISTRO, co nie zawsze jest oczywiste, zwłaszcza dla początkujących.

Powyższy kod przyjmuje też parametr -b build – to kolejny punkt, który nie jest oczywisty dla początkujących. Co on robi? Startuje budowanie? Nie. On tylko mówi, że budowanie ma się znaleźć w folderze build znajdującym się w miejscu, z którego wołany jest skrypt.

Dodatkowo- powyższy kod również wyświetla użytkownikowi EULA (End User License Agreement), które musi być potwierdzone.

Za każdym razem, gdy wracam do projektu po kilku miesiącach muszę przypominać sobie:

  • jaką MACHINE wybrałem
  • jakiego DISTRO używałem
  • gdzie znajdował się katalog build

To właśnie ten problem rozwiązuje kas.

Dodatkowe ustawienia w local.conf

Wszystkie dodatkowe ustawienia, które chcielibyśmy, żeby znalazły się w konfiguracji projektu przy poprzednim podejściu musielibyśmy dodawać do pliku local.conf ręcznie, ale z kas nawet nie musimy o nich pamiętać – wystarczy, że dodamy je raz do pliku yaml.

W tym projekcie są to np. linie czyszczące dysk po zbudowaniu projektu – INHERIT+="rm_work" a także zapisujące w obrazie dane konfiguracji projektu INHERIT+="image-buildinfo".

Wniosek

Wszystkie te kroki mogą być przeniesione do jednego pliku w formacie yaml a następnie zinterpretowane przez narzędzie kas.

Przystępna konfiguracja w jednym pliku

Zajrzyj do tego pliku na githubie. Jest to plik yaml używany przez narzędzie kas. Mogą w nim znaleźć się wszystkie informacje potrzebne do:

  • zrobienia git clone na wszystkich meta warstwach
  • przygotowaniu pliku conf/bblayers.conf
  • przygotowaniu pliku conf/local.conf
  • wystartowania komendy bitbake na odpowiednim obrazie

Możliwość podejścia modułowego

Narzędzie kas pozwala na wygodną modularyzację konfiguracji w plikach yaml. Gdy ma się mnóstwo buildów na różne urządzenia- w kas można poszczególne części konfiguracji podzielić na różne pliki i do budowania używać jednego, który include’uje pozostałe części.

Before & After

Spójrzmy jeszcze raz na to jak wyglądało przygotowanie budowania projektu przed wprowadzeniem konfiguracji kas, a potem zobaczymy jak to wygląda po jej wprowadzeniu.

Konfiguracja przed wprowadzeniem kas

repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-walnascar -m imx-6.12.49-2.2.0.xml

repo sync -j4

MACHINE=imx91-11x11-lpddr4-frdm-imx91s DISTRO=fsl-imx-wayland source ./imx-setup-release.sh -b build # read EULA and confirm it with `y`

bitbake imx-image-core

Po wprowadzeniu kas

git clone https://github.com/lewicki-pk/meta-leos/ && cd meta-leos
scripts/kas-container build kas-frdm-walnascar.yaml

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *