78
Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky build system Wirtualizacja Architektura systemu Poky Architektura BitBake Budowanie obrazu Yocto Budowa obrazu Yocto dla Intel Galileo Debugowanie procesu budowy obrazu Literatura Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego KSEM WETI PG April 20, 2015

Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Programowanie Systemów Wbudowanych

Kompilacja OS dla systemu wbudowanego

KSEM WETI PG

April 20, 2015

Page 2: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

HistoriaProjekt OpenEmbedded - framework do budowania dystrybucjisystemu Linux dla systemów wbudowych

I Wyrósł na bazie projektu OpenZaurusdla Sharp Zaurus Personal DigitalAssistants (PDAs). W 2001 roku SharpCorporation przedstawił SL-5000 PDA,nazywany Zaurus, z dystrybucjąsystemu Linux o nazwie Lineo.

I Niedługo po tym Chris Larsonuruchomił projekt OpenZaurus -system operacyjny oparty na systemiebuildroot. Programiści zaczęlirozszerzać projekt o kolejne pakietyprogramów dla coraz bardziej licznychplatform sprzętowych.

I Styczeń 2003 - społeczność skupionawokół OpenZaurus rozpoczęła dyskusjęo rozwijaniu nowego systemu dobudowania dystrybucji Linux dlasystemów wbudowanych. Chris Larson,Michael Lauer, and Holger Schurigrozpoczęli pracę nad OpenEmbedded.

I Marzec 2011 - połączenie projektówOpenEmbedded i Yocto pod nazwąOE-Core.

Page 3: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Bitbake i metadane

Dwa zasadnicze elementy projektu OpenEmbedded

I BitBake - build engine (napisany w Python-ie)I Metadata (metadane) - instrukcje “budowania” dla BitBake

From OE user’s manual:“unlike single project tools like make [BitBake] is not based on onemakefile or a closed set of interdependent makefiles, but collects andmanages an open set of largely independent build descriptions(package recipes) and builds them in proper order.”

Page 4: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 5: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

BitBake

Źródło: P. Raghavan, Amol Lad, Sriram Neelakandan, “Embedded Linux system design and development”

BitBake analizuje przepisy (recipes)i pliki konfiguracyjne, aby ustalić,

co i jak ma być zbudowane⇓

Pobiera z sieci kod źródłowy⇓

Buduje obrazy zbiorów pakietów i systemuplików

.

Page 6: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

BitBake

I Implementacja w Python’ie na bazie menadżera pakietówsystemu Gentoo (emerge)

I Pobiera kody źródłowe z sieci, jako “tarballs” (archiwa .tar) lubz repozytoriów (svn, cvs, git...)

I Instaluje patch-e zawarte w opisach pakietówI Domyślnie buduje najnowsze wersje wszystkich

kompontentówI Buduje wskazane wersje kompilatorów i kompilatorów

skrośnych (crosscompilers) oraz narzędzi konfiguracyjnych(autoconf...)

I Konfiguruje, kompiluje i lokuje pakiety (kopiuje do systemuplików), włącznie z bibliotekami C

I Potrafi kompilować równolegle dla kilku różnych architektursprzętowych

I Buduje obrazy systemów plików, obsługuje formaty pakietów:.rpm, .ipk, .deb

Page 7: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Formaty pakietów LinuxI deb - skrót od “Deborah”, imienia byłej żony twórcy Debiana,

Iana Murdocka.I Format pakietu instalacyjnego używanego przez dystrybucję

systemu operacyjnego Linux Debian GNU/Linux i pochodnych(Progeny, Ubuntu, Corel) .

I Instalator: dpkg.I Używa Makefile do kontroli procesu budowania pakietu.

I rpm - skrót od Red Hat Package Manager.I Format pakietu instalacyjnego używanego przez dystrybucję

systemu operacyjnego Red Hat Linux (aktualnie również przezdystrybucje Fedora, SUSE, Mandriva, PLD).

I Instalator: rpm.I Używa własnego narzędzia do kontroli procesu budowania

pakietu (rpmbuild)I Makra RPM są tłumaczone na przepisy dla Makefile.

I ipk - wcześniej ipkg (Itsy Package Management System)I Format pakietu instalacyjnego używanego przez dystrybucje

pochodne Debiana dla systemów wbudowanych (Unslung,OpenWrt, Openmoko, webOS, Gumstix, the iPAQ, QNAPNASes) oraz OpenEmbedded i Yocto Project.

I Instalator: opkg (kiedyś ipkg)

Page 8: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Bitbake - proces budowania obrazu

Źródło: www.denx.de/wiki/

Page 9: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 10: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Metadane (Metadata)

Cztery funkcjonalne katogorie metadanych:I Przepisy, ang. Recipes (*.bb) — instrukcje dla BitBake do

zbudowania pojedynczego pakietu. Opisują pakiet, jegozależności i ewentualne specjalne akcje potrzebne do jegozbudowania

I Klasy, ang. Classes (*.bbclass) — enkapsulują funkcjonalnściprzepisów. Pełnią rolę podobną do klas w obiektowychjęzykach programowania

I Zadania, ang. Tasks — używane do grupowania pakietów wsystemie plików. Mają relatywnie prostą budowę, zwykleskładają się z kilku linii definiujących zależności miedzypakietami.

I Konfiguracje, ang. Configuration (*.conf)—określająogólne zachowanie BitBake (local configuration,machine/distro configuration).

Page 11: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 12: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Praca z OpenEmbedded

I Pobranie OpenEmbedded:git clone git://git.openembedded.org/openembedded-core

I Pobranie BitBake (do katalogu openembedded-core):git clone git://github.com/openembedded/bitbake

I Konfiguracja OpenEmbedded:h�p://docs.openembedded.org/usermanual/html/ge�ingoe_configuring_oe.html

Page 13: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Struktura katalogów przestrzeni roboczej

my_OE/|−− bitbake|−−−− bin|−−−− ...|−− OE.mtn‘−− openembedded|−− _MTN ==> special Monotone directory|−− classes|−− conf|−− contrib|−− files|−− packages ==> package rule files, bitbake recipes|−−−− tasks/ ==> base tasks, useful tasks groups in file recipes|−−−− conf|−−−− machine/ ==> machine rule files|−−−− distro/ ==> distro rule files|−− site

Page 14: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Konfiguracja środowiska

Bitbake powinien być zawsze dostępny jako plik wykonywalny. Wstarszych wersjach OE należy ustawić zmienne środowiskoweBBPATH i BBFILES:

$ export PATH=$PATH:${HOME}/my_OE/bitbake/bin/$ export BBPATH=${HOME}/my_OE/build:${HOME}/my_OE/openembedded$ export BBFILES=${HOME}/my_OE/openembedded/packages/∗/∗.bb

Jeśli pracujemy z najnowszą wersją OE, konfigurację środowiskadefiniuje plik oe-init-build-env :

$ source ./oe−init−build−env [<build directory>]

Page 15: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Plik local.conf

Plik konfiguracyjny w katalogu roboczym:

my_OE/−−build/−−−−conf/−−−−−− local.conf

Podstawowy plik konfiguracyjny ze zmiennymi OE. Najważniejszez nich to:

I MACHINE = "any_available_machine_type"I DISTRO = "any_available_distro"

OE wykorzystuje tą informację jako punkt wyjściowy dozbudowania kompilatora skrośnego dla docelowej architektury orazzbudowania dystrybucji OS dla tej architektury.

Page 16: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa dystrybucji (distro)

Budowa przykładowego obrazu:

~/my_OE/build$ bitbake core−image−minimal

I włączamy ulubiony kanał YouTube ... ;)

Page 17: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa dystrybucji (distro)

Po pierwszej kompilacji utworzony zostaje nowy katalog tmp,którego BitBake używa jako katalogu wyjściowego:

~/my_OE/build/tmp/|−− cache/|−− cross/ ==> cross tools (gcc, ldd, ...)|−− deploy/|−−−− images ==> final image files (cpio, j�s2, ext3, ...)|−−−− ipk ==> final packets|−− rootfs/ ==> final rootfs layout.|−− staging/ ==> shared items availables for the whole system.|−− stamps/ ==> magnagement stamps.|−− work/ ==> where bitbake uncompress, configure, compile, ...

Page 18: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Yocto Project

I Yocto - najmniejsza jednostka układu SI. Prefiks yoctooznacza 10^-24.

I Projekt powstał na bazie OpenEmbedded. “Rdzeń” projektuYocto to system Poky (autor: Richard Purdie).

I Listopad 2010 - Yocto Project pod opieką Linux Foundation.I od 2011 - Yocto Project i OpenEmbedded rozwijane razem jako

zbiór pakietów OE-Core.

Page 19: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Elementy Yocto

I Poky - system do budowania OSI Wirtualny obraz systemu hosta do pracy z YoctoI Instalator Application Development Toolkit (ADT) dla systemu

hostaI Dla różnych platform:

I wstępnie zbudowane (prebuild) łańcuchy narzędzi (toolchains)I wstępnie zbudowane pakiety w formie binarnejI wstępne zbudowane obrazy

I Nowa wersja systemu Yocto pojawia się raz na ok. 6 miesięcy.Najnowsza to Yocto 1.8.1 Fido (wcześniejsza: Yocto 1.7.1 Dizzy).

Page 20: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 21: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Poky build system

I Narzędzie Poky służy do budowania elementów wbudowanegosystemu Linux:

I obraz bootloadera,I obraz jądra Linux,I obraz systemu plików,I toolchains i so�ware development kits (SDKs) do tworzenia

aplikacji.

I Poky build system - początkowa struktura (footprint) obrazu:od wersji minimalnej (shell) do pełnego systemu Linux zinterfejsem użytkownika Sato (oparty na GNOME Mobile andEmbedded (GMAE)).

I Możliwe jest dodawanie nowych warstw metadanych dlarozszerzenia funkcjonalności (nowy rodzaj obrazu, dodatkowyboard support package (BSP) dla nowej platformy sprzętowej).

Page 22: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Przygotowanie środowiska pracy

I Profesjonalna stacja robocza programisty powinna spełniaćnastępujące wymagania:

I system wieloprocesorowy symetryczny (symmetricmultiprocessing,SMP)

I co najmniej 8 GB pamięci, szybki dysk twardyI szybkie łącze internetowe

I Wymagane oprogramowanie:I OS Linux (jako system natywny lub wirtualny)I Tar w wersji 1.24 lub wyższejI Python w wersji 2.7.3 lub wyższej (ale nie Python 3)

I Instalacja wymaganych pakietów:

$ sudo apt-get install gawk wget git-core di�stat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm makexsltproc docbook-utils fop dblatex xmlto autoconf automake libtoollibglib2.0-dev python-gtk2 bsdmainutils screen

Page 23: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 24: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Środowisko do wirtualizacji (systemu hosta)

Page 25: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Wirtualizacja

Wirtualizacja = abstrakcja zasobów.Rodzaje:

I Emulacja API - wprowadzenie do głównego systemuoperacyjnego otoczenia API aplikacji pochodzące z innegosystemu. Przykład: Wine (ang. Wine is not emulator) -implementacja WinAPI dla środowiska systemu Unix/X11.

I Emulacja pełna – stanowi sposób na uruchamianie aplikacjipochodzących z niekompatybilnego komputera, w stosunku dowykorzystywanego (np. PC/Mac). Emulowane są podstawowepodzespoły komputera (CPU, RAM, HDD, CD itp.) wraz zsystemem operacyjnym (virtual OS), zapewniając dużąprzenośność. Emulator wykonuje w pętli wszystko to, corobiłby rzeczywisty procesor maszyny emulowanej, coprowadzi do spadku wydajności pracy komputera. Przykład:QEMU.

Page 26: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

WirtualizacjaI Wirtualizacja – wiele systemów operacyjnych na tej samej

platformie sprzętowej i systemowej przy maksymalnejmożliwej wydajności. Procesy systemu operacyjnego gościa(systemu emulowanego) wykonywane są bezpośrednio nazasobach sprzętowych komputera. Dopiero w sytuacji, gdyoperacje takie nie dadzą się bezpośrednio wykonać,wirtualizator emuluje je.

Hipernadzorca (ang. hypervisor), menedżer maszynwirtualnych (ang. Virtual Machine Manager) – narzędzieniezbędne do prowadzenia procesu wirtualizacji. Nazwapochodzi od supervisor (ang. nadzorca) — programukontrolującego pracę komputera.

I Decyduje, które procesy wirtualizowanego OS możnawykonywać bezpośrednio na zasobach sprzętowych, a którenależy emulować. Jeżeli określona operacja nie daje się wykonaćbezpośrednio na danym zasobie sprzętowym (błąd ochrony), jestprzechwytywana i emulowana przez hipernadzorcę.

I Pośredniczy w przekazywaniu przerwań pomiędzy wirtualnymsystemem a zasobami sprzętowymi

I Przykłady: VMware Workstation, Virtual Box

Page 27: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Docker - kontenery

I Kontenery - sposób na separację aplikacji od systemuoperacyjnego oraz fizycznej infrastruktury wykorzystywanejdo połączeń z siecią. Są one instalowane poza jądrem systemuoperacyjnego i wirtualizują środowisko określonej aplikacji.

I Pierwowzór - chroot w systemach UNIX. Komenda Linuxograniczająca zasoby, który może wykorzystywać proces ikażdy wywoływany przez niego proces-dziecko.

I Kontenery wspierane przez system Linux (LXC, Linux KernelContainers) - jedna z najnowocześniejszych metodwirtualizacji aplikacji.

I LXC pozwala na przydział zasobów CPU, pamięci, dysków i siecidla aplikacji odizolowanych od OS

I LXC separuje drzewa procesów, dostęp do sieci, ID użytkownika,dostęp do plików.

I Kontenery Linux są elastyczne, ponieważ pozwalająadministratorowi wirtualizować pojedynczą aplikację, a nie całysystem operacyjny z wykorzystaniem VM.

Page 28: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Docker

Docker - aplikacja pracującą na podbudowie w postaci LXCI Zarządza obrazami oraz asystuje we wdrożeniach wirtualizacji

aplikacji.I Dostarcza automatyzacji oraz mechanizmów szybkiego

tworzenia kontenerów LXC.I Dockerem był wewnętrznym projektem rozwijanym w firmie

dotCloud. W marcu 2013 Docker został udostępnionypublicznie.

I Aktualnie jest zintegrowany z szeregiem innych narzędzi m.in.Ansible, Chef, OpenStack, Pupper, Salt. Jest też dołączony doRHEL, OpenShi� PaaS, Google Compute Engine, Deis, a takżeAmazon Web Services Elastic Beanstalk.

I Standard wirtualizacji aplikacji dla system Linux.

Page 29: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Docker a wirtualna maszyna

Źródło: h�p://patg.net/containers,virtualization,docker/2014/06/05/docker-intro/

Page 30: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Docker

I Strona domowa:

h�ps://www.docker.com/

I Instalacja w Debianie:

$ sudo apt−get install docker.io

I Pierwsze uruchomienie w Debianie (stworzenie kontenera):

$ sudo docker run nazwa_obrazu

I Uruchomienie kontenera (lista kontenerów: docker ps -a):

$ sudo docker start nazwa_kontenera

I Uruchomienie ze współdzielonym katalogiem:

$ sudo docker run −v /var/logs/on/host:/var/logs/in/container

Page 31: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Emulator QEMU

�ick EMUlator - szybki emulator dostępny jako otwarteoprogramowanie.

I Umożliwia uruchomienie kilku systemów operacyjnychjednocześnie na jednej maszynie.

I Emulacja wielu architektur CPU.I Sama aplikacja może działać w dwóch trybach:

I użytkownika – uruchamianie procesów systemu Linuxskompilowanych na innym typie procesora niż bieżący (np.aplikacje 64-bitowe na procesorze 32-bitowym).

I systemu – emulowany jest cały system, łącznie z procesorem,dyskiem twardym oraz odpowiednimi urządzeniamiperyferyjnymi. Możliwe uruchamianie i instalowanie OS naróżne architektury: x86, x86_64, ARM, SPARC, SPARC64,PowerPC, PowerPC64, MIPS, m68k (Coldfire), SH-4, Alpha,CRIS.vvv

I więcej na: h�p://osworld.pl/qemu-emulator-procesora/

Page 32: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 33: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

System Poky - platformy sprzętowe

I System Poky obsługuje wirtualne maszyny QEMU dlanastępujących architektur:

I ARM (qemuarm)I x86 (qemux86)I x86-64 (qemux86-64)I PowerPC (qemuppc)I MIPS (qemumips, qemumips64)

I Obsługuje też wybrane pakiety BSP (Board Support Packages)dla platform sprzętowych:

I Texas Instruments Beaglebone (beaglebone)I Freescale MPC8315E-RDB (mpc8315e-rdb)I Maszyny PC oparte na układach Intel x86 (genericx86 i

genericx86-64)I Ubiquiti Networks EdgeRouter Lite (edgerouter)

I Do pracy z innymi platformami sprzętowymi potrzebne sądodatkowe warstwy Yocto (co najmniej BPS).

Page 34: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Warstwy Poky

I System Poky posiada trzy katalogi przechowujące metadane:I meta: metadane OpenEmbedded-Core; wsparcie dla architektur

ARM, x86, x86-64, PowerPC, MIPS iMIPS64 oraz dla wirtualnejmaszyny QEMU

I meta-yocto: metadane dystrybucji PokyI meta-yocto-bsp: metadane dla wybranych platform

sprzętowych

I Poky posiada również warstwę meta-skeleton, będącąwzorcem (schematem) dla nowych warstw.

Page 35: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Katalog roboczy Poky (build directory)

I uruchomienie skryptu (sourcing) oe-init-build-env :I ustawia zmienne środowiskowe,I tworzy pliki konfiguracyjne (można je modyfikować)I sprawdza, czy spełnione są minimalne wymagania systemowe

dla budowy obrazu

I skrypt woła scripts/oe-setup-builddir script, który tworzykatalog roboczy. w momencie utworzenia katalog ten zawieratrzy pliki:

I bblayers.conf: lista warstw służących do budowy dystrybucjiOS

I local.conf: konfiguracja parametrów procesu budowydystrybucji

I templateconf.cfg: wzorcowe pliki konfiguracyjne.

Page 36: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

System Poky

I BitBake analizuje konfigurację obrazu (m.in. pliki: bblayers.bb,local.conf) poszukując dodatkowych warstw, klas, przepisów izadań i budując łańcuch zależności między nimi (istandardowymi elementami OE-core).

I Tak powstaje mapa ważonych priorytetów zadań(weighted task priority map). BitBake korzysta z tej mapypodczas ustalania kolejności budowy poszczególnychpakietów. Zadania wymagane przez większość innych zadańoceniane są wyżej, a więc będą wykonane wcześniej podczasprocesu budowy dystrybucji OS

I BitBake wykonuje kolejkę zadań rozdzielając je między wątki(maksymalna liczba wątków zdefiniowana jest przez zmiennąBB_NUMBER_THREADS w pliku conf/local.conf)

Page 37: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

System Poky

ZADANIE OPIS FUNKCJA

Fetch pobranie danych (źródeł) do_fetch()Unpack rozpakowanie danych do_unpack()Patch dodanie łatek (patch-ów) do_patch()

Configure konfiguracja drzewa źrodeł do_configure()Compile kompilacja drzewa źródeł do_compile()

Stage instalacja w przestrzeni stage do_stage()Install instalacja do_install()

Package utworzenie pakietu do_package()

I Skompilowane źródło jest rozdzielane na pakiety; tworzonajest inforamcja dla debuggera (debug package information).

I Rozdzielone pakiety pakowane są do odpowiedniego formatu(rpm, ipk lub deb). Bitbake wykorzystuje je do budowysystemu plików.

Page 38: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

System Poky

Każdy aspekt procesu budowania jest kontrolowany przezmetadane. Metadane mogą być luźno pogrupowane w:

I przepisy (package recipes)I zbiór niewykonywalnych metadanych, wykorzystywany do

ustawienia zmiennych lub zdefiniowania dodatkowych zadań,I pola: recipe description, the recipe version, the license of the

package i upstream source repository,I mogą definiować dodatkowe zadania,

I pliki konfiguracyjne (configuration files)I konfiguracja BitBake i (w ogólności) całego procesu budowania,I konfiguracja warstw wykorzystywanych przez Poky do różnych

obrazów docelowych.

Page 39: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Warstwy w systemie PokyI Warstwa (layer) - grupa medanych definiujących określoną

funkcjonalność:I BSP - warstwy definiujące urządzenia,I warstwy definiujące typy obrazów,I warstwy definiujące dodatkowe oprogramowanie.

I meta-yocto - “rdzenna” warstwa Yocto Project.I Warstwy bitbake - przykład

Figure: h�p://www.aosabook.org/en/yocto.html

Page 40: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 41: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Architektura BitBake - interfejsy użytkownika

I Interfejs użytkownika umożliwia:I prezentowanie wyników, statusie i postępach procesu

budowania,I przechwytywanie zdarzeń od zadań (build tasks).

I kno�y - domyślny interfejs użytkownika; linia poleceń.I hob - graficzny interfejs użytkownika; umożliwia

modyfikowanie plików konfiguracyjnych, dodawanie warstw ipakietów.

Page 42: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

BitBake - Hob

Page 43: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Architektura BitBake

I Podstawowy plik wykonawczy BitBake to bitbake/bin/bakeI Uruchomienie BitBake oznacza rozpoczęcie budowy

infrastruktury potrzebnej do budowy obrazuI Kolejność uruchamiania modułów

interfejs użytkownika (UI)

⇓serwer procesów (IPC)

⇓Cooker⇓

DataSmart⇓

parsowanie plików konfiguracyjnych⇓

obiekt Runqueue⇓

Scheduler

Page 44: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Moduł IPC

Moduł IPC (Interprocess Communication)I Umożliwia uruchomienie wielu procesów podczas budowy

obrazuI Architektura klient-serwerI Domyślny serwer (i najczęściej używany z poziomu kno�y) to

serwer procesówI Interfejs użytkownika potrafi wysyłać polecenia do modułu

serwera

Page 45: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Cooker

I Zarządza parsowaniem metadanychI Inicjalizuje generowanie drzewa zależności i zadańI Zarządza procesem budowania.

Page 46: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

DataSmart

I Moduł DataSmart przechowuje dane z plikówkonfiguracyjnych jako obiekty.

I Jeśli przepis (recipe) zmieni się podczas procesu budowy,obiekty danych nie są uaktualniane w całości, lecz zapisywanesą jedynie różnice między stanem przed i po zmianie(oszczędność pamięci!).

I Słownik “copy-on-write” (COW)I zmienne mogą zawierać kod pythona (DataSmart sprawdza

poprawność kodu i obecność odwołań cyklicznych).

Page 47: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Runqueue i SchedulerI Budowa obrazu - setki przepisów, każdy zawierający wiele

pakietów i zadań powiązanych zależnościami. ZadaniemBitBake jest uporządkowanie ich.

I Cooker buduje mapę zadań z wagami, nazywaną runqueueI pełna lista pakietów potrzebnych do budowy obrazuI łańcuch zależności między nimi

Przepis (recipe)

sprawdzenie PREFERRED_PROVIDER lub wybór

dostawcy pakietu

sprawdzenie DEPENDS i RDEPENDS

wybór dostawców pakietów z zależności

lista pakietów potrzebnych do zbudowana obrazu

oraz ich dostawców

Page 48: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Scheduler - zależności

Zależności (dependencies):I DEPENDS - zależności (pakiety) potrzebne w procesie

budowania.DEPENDS = "b" w przepisie "a" zostanie przetłumaczone nazadanie do_configure “a”, które zależy od zadaniado_populate_sysroot task w “b”. Wszystko co “b” dodaje dosystemu plików, jest dostępne kiedy “a” jest konfigurowane.

I RDEPENDS - zależności (pakiety) potrzebne w procesiewykonywania.RDEPENDS_${PN} = "b" w przepisie "a" zostanieprzetłumaczone na zadanie do_build task “a”, zależne odzadania “b”: do_package_write. Pakiet “b” będzie dostępny,kiedy “a” zostanie zbudowane

Page 49: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

BitBake Scheduler - budowa Runqueue

pierwszy znaleziony pakiet A

lista zadań potrzebnych do budowy pakietu A

przypisanie wag odpowiadających liczbie pakietówpotrzebnych do zrealizowania zadania

(zadania z wyższą wagą mają więcej zależności,

zostaną wykonane wcześniej)

Na podstawie mapy Runqueue BitBake rozdziela kolejne zadaniamiędzy swoimi wątkami

Page 50: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Architektura BitBake - schemat

Źródło: Elizabeth Flanagan, “The Architecture of Open Source Applications”

Page 51: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Outline

OpenEmbeddedBitBakeMetadaneBudowanie obrazu

Yocto ProjectPoky build systemWirtualizacjaArchitektura systemu PokyArchitektura BitBakeBudowanie obrazu Yocto

Budowa obrazu Yocto dla Intel Galileo

Debugowanie procesu budowy obrazu

Literatura

Page 52: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Obrazy w projekcie PokyI Lista domyślnych obrazów projektu Poky:

$ cd /opt/yocto/poky$ ls meta∗/recipes∗/images/∗.bb

I Najbardziej popularne to:I core-image-minimal: najmniejszy obraz (tylko konsola)

zawierający:I busybox - podstawowe narzędzia UNIXI sysvinit - pierwszy program uruchamiany w systemach

uniksowych (np. Linux) przez jądro w trakcie procesuuruchamiania systemu operacyjnego

I udev - dynamiczna alokacja plików urządzeń

I core-image-full-cmdline: konsola, pełna obsługa sprzętu orazbash

I core-image-lsb: obraz z konsolą oparty na kompilacji LinuxStandard Base

I core-image-x11: obraz z graficznym UI (X11)I core-image-sato: obraz z graficznym UI (X11) i pulpitem

GNOME Mobile oraz motywem SATOI core-image-weston: obraz z protokołem Wayland i Weston

reference compositor-based image

Page 53: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Obrazy w projekcie Poky

Nazwy obrazów mogą mieć następujące przyrostki:I dev: obraz zawiera pliki nagłówkowe i biblioteki potrzebne do

tworzenia oprogramowaniaI sdk: zawiera kompletne SDK, które może być używane na

maszynie docelowejI initramfs: initial RAM file system

Page 54: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

Maszynę docelową (MACHINE) można zdefiniować na trzysposoby. Na przykład, jeśli platformą docelową jest emulatormaszyn x86:

1. Zdefiniowanie zmiennej MACHINE wraz z uruchomieniembitbake:

$ MACHINE=qemux86 bitbake core−image−minimal

2. Wyeksportowanie zmiennej MACHINE do bieżącej powłokishell:

$ export MACHINE=qemux86$ bitbake core−image−minimal

3. Sposób preferowany: edycja pliku conf/local.conf:

# MACHINE ?= "qemux86"

A w linii poleceń:

$ bitbake core−image−minimal

Page 55: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

Bitbake w pierwszej kolejności analizuje pliki:I conf/bblayers.conf: lista warstwI conf/layer.conf: konfiguracja każdej warstwyI meta/conf/bitbake.conf: konfiguracja bitbakeI conf/local.conf: konfiguracja procesu budowania obrazuI conf/machine/<machine>.conf: konfiguracja maszyny

docelowej (np. qemux86.conf)I conf/distro/<distro>.conf: konfiguracja dystrybucji OS

(domyślnie jest to poky.conf)

Następnie BitBake parsuje przepisy i ich zależności. Then BitBakeparses the target recipe that has been provided and itsdependencies. The outcome is a set of interdependent tasks thatBitBake will then execute in order.

Page 56: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

I Zwykle nie jesteśmy zainteresowani całą informacjągenerowaną podczas procesu budowania. Zaleca się takąkonfigurację procesu budowania, w której informacjawyjściowa dla każdego pakietu (np. źródła czy logi) byłausuwana po zbudowaniu obrazu. W pliku conf/local.conf file:

INHERIT += "rm_work"

I Z drugiej jednak strony uniemożliwia się w ten sposóbdebugowanie (wstecz). Możliwe jest zdefiniowanie listypakietów, które mają być wyłączone z procesu czyszczeniahistorii, np.:

RM_WORK_EXCLUDE += "linux−yocto u−boot"

Page 57: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

I Plik wzorcowy local.conf.sample - domyślna konfiguracjaI Gotowe zbudowane obrazy znajdują się w katalogu:

build/tmp/deploy/images/qemux86

I Domyślnie obrazy nie są usuwane z katalogu deploy. Jeślipodczas budowy poprzednia wersja ma być usunięta, trzeba wpliku conf/local.conf ustawić zmienną:

RM_OLD_IMAGE = "1"

I Testowanie obrazu w emulatorze QEMU:

$ runqemu qemuarm core−image−minimal

Page 58: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa Yocto dla Intel Galileo

I Intel dostarcza pliki niezbędne do budowy obrazu systemuLinux

I Dokumentacja:Intel ® �arkTM SoC X1000 Board Support Package (BSP)Build and So�ware User Guideh�ps://downloadcenter.intel.com/download/23197/Intel-�ark-BSP

I Omawiany przykład bazuje na wersji Release 1.1 (January2015)

I Wymagania wobec systemu hosta:I komputer PC z systemem Linux (Intel zaleca system 64-bitowy)

lub Windows 7 (x64). W omawianym przykładzie system hostato 64-bitowy Debian 8.0 (Jessie).

I łącze internetoweI co najmniej 30 GB wolnego miejsca na dyskuI interfejs szeregowy do komunikacji z Intel Galileo

Page 59: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Przygotowanie środowiska pracy

I Powiązane pakiety:I Python 2.6 or 2.7 (ale nie Python 3.x )I GCC i G++ (wersje nie młodsze niż GCC 4.7). Domyślna wersja

kompilatora w Debian 8.0 to GCC 4.9. Należy zainstalowaćrównież starszą wersję (na przykład z repozytoriów Wheezy)

I klient systemu kontroli wersji (git)I uuid-dev (uuid = Universally Unique Identifier)I iasl (iasl = ACPI Source Language Compiler)

I Instalacja niezbędnych pakietów:

$ sudo apt−get install build−essential p7zip−ful

I Pobranie pliku DownloadBoard_Support_Package_Sources_for_Intel_�ark_v1.1.0.7zspod adresu:h�ps://downloadcenter.intel.com/download/23197/Intel-�ark-BSP

Page 60: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Przygotowanie środowiska pracy

I Rozpakowanie pobranego pliku:

$ 7z x Board_Support_Package_Sources_for_Intel_�ark_v1.1.0.7z

I Pobranie i instalacja EDKII

$ tar −xvf �ark_EDKII_∗.tar.gz$ cd �ark_EDKII∗$ ./svn_setup.py$ svn update

I Instalacja patch-a OpenSSL (opis wCryptoPkg/Library/OpensslLib/Patch-HOWTO.txt)

I Budowa oprogramowania układowego EDKII:

$ ./buildallconfigs.sh GCC46 �arkPlatform

Page 61: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Instalacja starszych wersji kompilatorów GCC iG++

I Dodanie repozytoriów starszej wersji OS (np. Debian Wheezy)do listy repozytoriów (plik /etc/apt/source.list)

I Instalacja kompilatora gcc-4.6

$ sudo apt−get update$ sudo apt−get install gcc−4.6 g++−4.6

Menadżer pakietów może w tym miejscu wyświetlićinformację o problemie z zależnymi pakietami. Wówczasnależy zainstalować je każdy osobno, np.:

$ sudo apt−get install gcc−4.6−base=4.6.3−14$ sudo apt−get install cpp−4.6$ sudo apt−get install gcc−4.6$ sudo apt−get install g++−4.6

Page 62: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Instalacja starszych wersji kompilatorów GCC iG++

I Aby używać zamiennie starszej i nowszej wersji kompilatora,należy zainstalować wersję 4.6 jako alternatywną. W tym celunależy usunąć wszystkie istniejące alternatywy dla gcc i g++:

$ sudo update−alternatives −−remove−all gcc$ sudo update−alternatives −−remove−all g++

I A następnie dodać informację o wersji 4.6 i 4.9 (zaznaczenieg++ jako “slave powoduje, że przełączanie wersji gcc będziepowodowało analogiczne przełączenie wersji g++) :

$ sudo update−alternatives −−install /usr/bin/gcc gcc /usr/bin/gcc−4.6 60 −−slave /usr/bin/g++ g++ /usr/bin/g++−4.6$ sudo update−alternatives −−install /usr/bin/gcc gcc /usr/bin/gcc−4.9 40 −−slave /usr/bin/g++ g++ /usr/bin/g++−4.9

I Można teraz przełączać wersje kompilatorów za pomocąpolecenia:

$ sudo update−alternatives −−config gcc

I Aktualną wersję kompilatora można sprawdzić za pomocąpolecenia:

$ gcc −−version

Page 63: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

I W nowej sesji terminala należy rozpakować warstwę systemuYocto (meta-clanton_v1.1.0-dirty) i uruchomić skrypt setup.sh,który pobierze z zewnętrznych źródeł pliki potrzebne dozbudowania systemu plików:

$ tar −xvf meta−clanton∗.tar.gz # cd meta−clanton∗$ ./setup.sh

I Następnie należy wykonać skrypt iot-devkit-init-build-env,inicjalizujący proces budowania:

$ source ./iot−devkit−init−build−env my_build

I Pozostaje uruchomić narzędzie bitbake:

$ bitbake image−full

i uzbroić się w cierpliowość ...

Page 64: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Budowa obrazu

I Po zakończeniu procesu budowania systemu plików,wyjściowe obrazy znajdują się w:

./tmp/deploy/images/quark/

i są to:I image-full-quark.ext3 (system plików)I core-image-minimal-initramfs-quark.cpio.gz (system plików

RAM)I bzImage (jądro)I grub.efiI boot (katalog)

I Pliki można skopiować na pustą kartę SD lub pamięć USB(sformatowane jako ext3).

Page 65: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Nagranie obrazów na kartę SDI Gotowe pliki obrazów w katalogu tmp/deploy/images/

directory to:I jądro systemu Linux:

bzImage–wersja-r0-clanton-YYYYMMDDhhmmss.binI początkowy system plików RAM: core-image-minimal-

initramfs-clanton-YYYYMMDDhhmmss.rootfs.cpio.gzI system plików:

image-full-clanton-YYYYMMDDhhmmss.rootfs.ext3I moduły jądra:

modules–wersja-r0-clanton-YYYYMMDDhhmmss.tgzI konfiguracja Grub: boot/grub/grub.conf

I Formatowanie karty SD:

$ sudo dd if=/dev/zero of=/dev/sdd

I Nagranie plików jako:I bzImageI core-image-minimal-initramfs-clanton.cpio.gzI image-full-clanton.ext3I boot/grub/grub.conf

Page 66: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Używanie historii budowania obrazu

I Historia budowania obrazu - umożliwia sprawdzeniezależności między pakietami, które weszły do systemu plików.

I By umożliwić jej używanie, należy dodać do plikuconf/local.conf:

INHERIT += "buildhistory"

I Włączenie gromadzenia informacji (m.in. grafu zależności) wlokalnym repozytorium Git:

BUILDHISTORY_COMMIT = "1"

I Lokalizacja repozytorium Git może być ustawiona za pomocązmiennej BUILDHISTORY_DIR (domyślnie: build/buildhistory)

Page 67: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Używanie historii budowania obrazu

I Domyślnie buildhistory śledzi wszelkie zmiany w pakietach,obrazach i SDK. Jeśli chcemy śledzić tylko obrazy, należyzmienić wartość zmiennej BUILDHISTORY_FEATURES (wconf/local.conf):

BUILDHISTORY_FEATURES = "image"

I Można śledzić konkretne pliki, należy je wówczas dodać tobuildhistory za pomocą zmiennej:

BUILDHISTORY_IMAGE_FILES += "/path/to/file"

I Budowa z rejestracją historii jest wolniejsza a rozmiarkatalogów wynikowych większy. Nie zaleca się więc używaniahistorii przy każdej kompilacji obrazu (jedynie kiedy jest toniezbędne).

Page 68: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Używanie historii budowania obrazuDla pakietów rejestrowane są następujące informacje:

I wersja pakietu i przepisuI zależnościI rozmiar pakietuI pliki

Dla obrazu:I konfiguracja budowaniaI graf zależnościI lista plików związanych z prawami własności i dostępem

(permissions)I lista zainstalowanych pakietów

Dla SDK:I konfiguracja SDKI lista plików hosta i maszyny docelowejI grafy zależnościI lista zainstalowanych pakietów

Page 69: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Używanie historii budowania obrazu

Przeglądanie historii budowania obrazu:

1. Za pomocą narzędzi Git (gitk lub git log).

2. Za pomocą komendy buildhistory-di�

3. Za pomocą interfejsu sieciowego Django-1.4-based

3.1 import historii budowania do bazy danych3.2 więcej: h�p://git.yoctoproject.org/cgit/cgit.cgi/buildhistory-

web/tree/README.

Page 70: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Statystyka procesu budowania

I Podczas budowania obrazu możliwe jest zbieranie informacjiprzydatnej w identyfikowaniu obszarów potencjalnejoptymalizacji i tzw. “wąskich gardeł” (zwłaszcza gdy wsystemie pojawia się nowy przepis).

I Do zbierania informacji statystycznej potrzebne jestdziedziczenie klasy buildstats:

USER_CLASSES ?= "buildstats"

I Zmienna BUILDSTATS_BASE określa lokalizację statystyki(domyślnie build/tmp/buildstats

I Katalog buildstats zawiera osobny katalog dla każdegobudowanego obrazu a w nim - podkatalogi odpowiadającepakietom z plikami build_stats, zawierającymi informację o:

I systemie hostaI lokalizacji i rozmiarze systemu plikówI czasie trwania procesu budowaniaI średnim użyciu CPUI statystyce dysku

Page 71: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Statystyka procesu budowania

Przykładowy plik statystyki może zawierać informacje:I ReadsComp: całkowita liczba operacji odczytuI TimeReads: całkowita liczba milisekund poświęconych na

operacje odczytuI WritesComp: całkowita liczba operacji zapisuI TimeWrite: całkowita liczba milisekund poświęconych na

operacje zapisuI TimeIO: całkowita liczba milisekund poświęconych na obsługę

I/O

Page 72: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Statystyka procesu budowania

I pybootchartgui.py tool - graficzna reprezentacja danych zeźrodeł Poky

I Generowanie pliku bootchart.png w katalogu /tmp:

$ ../sources/poky/scripts/pybootchartgui/pybootchartgui.pytmp/buildstats/core−image−minimal/ −o /tmp

Page 73: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Debugowanie

I Sprawdzenie, czy dany plik jest obecny w danej warstwie:

$ find −name "∗busybox∗"

To polecenie spowoduje rekursywne wyszukiwanie wewszystkich warstwach wzorca “busybox”.

I Wyszukiwanie wśród przepisów:

$ find −name "∗busybox∗.bb∗"

I Wyszukiwanie pliku ze zmienną DISTRO_FEATURES:

$ bitbake −e | grep −w DISTRO_FEATURES

I Lokalizowanie ścieżki pliku przepisu:

$ bitbake −e busybox | grep ^S=

I Lokalizowanie katalogu roboczego pakietu lub obrazu:

$ bitbake −e <target> | grep ^WORKDIR=

Page 74: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Debugowanie

I BitBake dostarcza zadanie devshell, ktore rozpakowuje źródłoi wykonuje patch-e, a następnie uruchamia nową sesjęterminala z prawidłowo ustawionymi zmiennymiśrodowiskowymi.

$ bitbake −c devshell <target>

I Wewnątrz devshell można używać komend takich jakconfigure, make i run.

I Jeśli na maszynie hosta nie ma środowiska graficznego, wconf/local.conf trzeba ustawić ekran wyjściowy:

OE_TERMINAL = "screen"

Page 75: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Debugowanie

I Wiadomość o błędach budowy pakietów drukowana jest wterminalu podczas procesu budowania.

I Lista zadań dla danego przepisu:

$ bitbake −c lis�asks <target>

I Powtórzenie błędu (wymuszone uruchomienie procesubudowania):

$ bitbake −f <target>

lub (wymuszone) uruchomienie konkretnego zadania:

$ bitbake −c compile −f <target>

I Drukowanie wersji pakietów:

$ bitbake −−show−versions

I Lista zależności:

$ bitbake −v <target>

Page 76: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

DebugowanieI Zapis zależności do pliku DOT:

$ bitbake −g <target>

do odczytu można użyć pakietu GraphVizI Niektóre zależności mogą być usunięte z grafu, np. by pominąć

zależności dla glibc:

$ bitbake −g <target> −I glibc

I Po “wydrukowaniu” pliku z zależnościami w bieżącymkatalogu znajdują się trzy pliki:

I package-depends.dot: zależności między pakietamiI pn-depends.dot: zależności między przepisamiI task-depends.dot: zależności między zadaniami

I Konwersja pliku .dot do formatu .ps:

$ dot −Tps filename.dot −o outfile.ps

I Wyswietlenie danych o zależności za pomocą eksplorera:

$ bitbake −g −u depexp <target>

Page 77: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Raportowanie błędów

I Centralna baza danych o błędach zgłaszanych przezużytkowników:h�p://errors.yoctoproject.org.

I Zgłoszenie błędu do bazy - za pomocą klasy report-error:INHERIT += "report-error"

I Domyślnie informacja o błędach przechowywana jest wkatalogu:build/tmp/log/error-reportMożna zmienić tą ścieżkę za pomocą zmiennejERR_REPORT_DIR.

Page 78: Programowanie Systemów Wbudowanych · Programowanie Systemów Wbudowanych Kompilacja OS dla systemu wbudowanego OpenEmbedded BitBake Metadane Budowanie obrazu Yocto Project Poky

ProgramowanieSystemów

Wbudowanych

Kompilacja OS dlasystemu

wbudowanego

OpenEmbedded

BitBake

Metadane

Budowanie obrazu

Yocto Project

Poky build system

Wirtualizacja

Architektura systemu Poky

Architektura BitBake

Budowanie obrazu Yocto

Budowa obrazu Yoctodla Intel Galileo

Debugowanie procesubudowy obrazu

Literatura

Literatura

Elizabeth Flanagan, The Architecture of Open SourceApplications, www.aosabook.org

P. Raghavan, Amol Lad, Sriram Neelakandan, Embedded Linuxsystem design and development, Auerbach Publications, 2005

h�p://patg.net/containers,virtualization,docker/2014/06/05/docker-intro/

h�p://osworld.pl/qemu-emulator-procesora/