Przeciętny użytkownik forum spotkany na ulicy odpowie pewnie tak:
https://www.youtube.com/watch?v=OO3FANjwKHY
Temat dość niszowy, ale napiszę komu to potrzebne i po co. W pracy zajmuję się Linuksem wbudowanym i korzystam do jego budowania właśnie z YOCTO.
Co to jest to YOCTO? Kolejna dystrybucja Linuksa?
Nie, to zestaw narzędzi do budowania własnej dystrybucji
Po co to komu?
Najbardziej popularną platformą dla Linuksa Embedded znaną na całym świecie jest RaspberryPi. Mamy na nią kilka dystrybucji Linuksa w tym najbardziej znanego raspbiana. Jasne i logiczne że można sobie na nim zainstalować sd4linux, ale co jeśli mamy ambicję robić więcej niż jedno takie urządzenie?
Za każdym razem instalować jeszcze raz i jeszcze raz? Kopiować obraz karty z zainstalowanym sd4linux jak zwierzęta?
Co jeśli przyjdzie potrzeba zaktualizowania takiego systemu? Chodzenie i podłączenie się do każdego takiego komputerka? I ręczna aktualizacja? No nie - nie o takie Linuksy ludzie walczyli
Właśnie po to jest Yocto - tworzysz swoją dystrybucję skrojoną na miarę pod urządzenie i zastosowanie i dodajesz takie programy i sterowniki jakich potrzebujesz.
W naszym konkretnym przykładzie posłużę się płytką SOM VisionSOM-6ULL z procesorem i.MX6-ULL założoną na VisionCB-6ULL-STD
od polskiego producenta - firmy SOMLabs:
https://somlabs.com/product/visionsom-6ull-imx-6ull/
https://somlabs.com/product/visioncb-6u ... nsom-6ull/
Takich SOMów używam w pracy i było mi najwygodniej. Nic nie stoi na przeszkodzie żeby użyć RaspberryPi czy Beaglebone czy czegokolwiek ze wsparciem Yocto
Samo YOCTO składa się z warstw dostarczanych przez różne podmioty. Warstwy to zbiory recept - czyli przepisów na poszczególne komponenty systemu(skąd pobrać?, co patchować? jak skonfigurować?, jak skompilować?, gdzie wrzuciś pliki wynikowe?)
W typ przypadku sprawa wygląda następująco:
- firma NXP(która kupiła firmę Freescale) zapewnia obsługę swoich procesorów i publikuje warstwę: meta-freescale https://github.com/Freescale/meta-freescale
- również firma NXP zapewnia softwareowe wsparcie dla komponentów i bajerów związanych z ich procesorami w warstwie: meta-freescale-distro https://github.com/Freescale/meta-freescale-distro
- firma SOMLabs zapewnia wsparcie dla płytek SOM z procesorami iMX ich produkcji w warstwie: imx-meta-somlabs https://github.com/SoMLabs/imx-meta-somlabs
I tak dalej... choćby z bibliotekami Qt czy na przykład systemami aktualizacji jak mender czy swupdate. Do tego wszystkiego znajdziemy w internecie odpowiednie warstwy ze wsparciem od producenta
My jako twórcy urządzenia też możemy robić kolejne wyższe warstwy korzystające z wymienionych.
Ja taką warstwę zrobiłem jakiś czas temu dla SUPLi:
https://github.com/QB4-dev/meta-supla
Aktualnie znajdują się w niej 2 recepty:
- na moją autorską bibliotekę do obsługi SUPLi w C: viewtopic.php?t=12131
- na kawał porządnego programu jakim jest sd4linux autorstwa użytkownika @klew
YOCTO ma niestety stromą krzywą uczenia się i może na początku mocno odpychać.
Pisanie całego tutoriala jak wybudować obraz systemu zajęłoby mnóstwo miejsca, a takich tutoriali w sieci znajdziemy od groma więc to pominę. Dla płytki SOMLabs należy wykonać kolejne punkty z README
https://github.com/SoMLabs/imx-meta-som ... /scarthgap
Budowanie dla raspberryPi pokazano tutaj(polecam ten kanał na YT):
https://www.youtube.com/watch?v=lHFakpueRtw
I teraz czeka nas spora przerwa - pierwsza kompilacja takiego Linuksa to dobre kilka godzin i grube dziesiątki GB zajętego miejsca na dysku
Jak już uda się skompilować swoją pierwszą dystrybucję to w kolejnych krokach będziemy postępować jak na tym filmie gdzie gość dodaje dooma do swojego systemu, z tym że my dodamy sd4linux
https://www.youtube.com/watch?v=Oios6yvJico
Aby dodać sd4linux do naszej dystrybucji należy:
1. wejść do katalogu z warstwami i pobrać z githuba moją warstwę poleceniem(dla wydania scarthgap):
Code: Select all
git clone -b scarthgap https://github.com/QB4-dev/meta-supla
Code: Select all
bitbake-layers add-layer meta-supla
Code: Select all
IMAGE_INSTALL+="supla-device nano"
4. zbudować i wgrać obraz oraz go uruchomić
5. Po uruchomieniu systemu edytować plik(Ctrl+O zapisuje) i ustawić swój adres email i serwer
Code: Select all
nano /etc/supla-device.yaml
6. Przeładować usługę supla-device
Code: Select all
systemctl restart supla-device
