Programowanie Systemów Wbudowanych

Transkrypt

Programowanie Systemów Wbudowanych
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Programowanie Systemów Wbudowanych
Budowanie obrazu
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Kompilacja OS dla systemu wbudowanego
KSEM WETI PG
April 20, 2015
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Historia
Projekt OpenEmbedded - framework do budowania dystrybucji
systemu Linux dla systemów wbudowych
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
I Wyrósł na bazie projektu OpenZaurus
dla Sharp Zaurus Personal Digital
Assistants (PDAs). W 2001 roku Sharp
Corporation przedstawił SL-5000 PDA,
nazywany Zaurus, z dystrybucją
systemu Linux o nazwie Lineo.
I Niedługo po tym Chris Larson
uruchomił projekt OpenZaurus system operacyjny oparty na systemie
buildroot. Programiści zaczęli
rozszerzać projekt o kolejne pakiety
programów dla coraz bardziej licznych
platform sprzętowych.
I Styczeń 2003 - społeczność skupiona
wokół OpenZaurus rozpoczęła dyskusję
o rozwijaniu nowego systemu do
budowania dystrybucji Linux dla
systemów wbudowanych. Chris Larson,
Michael Lauer, and Holger Schurig
rozpoczęli pracę nad OpenEmbedded.
I Marzec 2011 - połączenie projektów
OpenEmbedded i Yocto pod nazwą
OE-Core.
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
Bitbake i metadane
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
Dwa zasadnicze elementy projektu OpenEmbedded
BitBake
Metadane
Budowanie obrazu
I
BitBake - build engine (napisany w Python-ie)
I
Metadata (metadane) - instrukcje “budowania” dla BitBake
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
From OE user’s manual:
“unlike single project tools like make [BitBake] is not based on one
makefile or a closed set of interdependent makefiles, but collects and
manages an open set of largely independent build descriptions
(package recipes) and builds them in proper order.”
Debugowanie procesu
budowy obrazu
Literatura
Outline
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
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
BitBake
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Ź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 systemu
plików
.
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
BitBake
I
Implementacja w Python’ie na bazie menadżera pakietów
systemu Gentoo (emerge)
I
Pobiera kody źródłowe z sieci, jako “tarballs” (archiwa .tar) lub
z repozytoriów (svn, cvs, git...)
I
Instaluje patch-e zawarte w opisach pakietów
I
Domyślnie buduje najnowsze wersje wszystkich
kompontentów
I
Buduje wskazane wersje kompilatorów i kompilatorów
skrośnych (crosscompilers) oraz narzędzi konfiguracyjnych
(autoconf...)
I
Konfiguruje, kompiluje i lokuje pakiety (kopiuje do systemu
plików), włącznie z bibliotekami C
I
Potrafi kompilować równolegle dla kilku różnych architektur
sprzętowych
I
Buduje obrazy systemów plików, obsługuje formaty pakietów:
.rpm, .ipk, .deb
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
Formaty pakietów Linux
I
deb - skrót od “Deborah”, imienia byłej żony twórcy Debiana,
Iana Murdocka.
I
I
I
I
rpm - skrót od Red Hat Package Manager.
I
I
I
I
I
Format pakietu instalacyjnego używanego przez dystrybucję
systemu operacyjnego Linux Debian GNU/Linux i pochodnych
(Progeny, Ubuntu, Corel) .
Instalator: dpkg.
Używa Makefile do kontroli procesu budowania pakietu.
Format pakietu instalacyjnego używanego przez dystrybucję
systemu operacyjnego Red Hat Linux (aktualnie również przez
dystrybucje Fedora, SUSE, Mandriva, PLD).
Instalator: rpm.
Używa własnego narzędzia do kontroli procesu budowania
pakietu (rpmbuild)
Makra RPM są tłumaczone na przepisy dla Makefile.
ipk - wcześniej ipkg (Itsy Package Management System)
I
I
Format pakietu instalacyjnego używanego przez dystrybucje
pochodne Debiana dla systemów wbudowanych (Unslung,
OpenWrt, Openmoko, webOS, Gumstix, the iPAQ, QNAP
NASes) oraz OpenEmbedded i Yocto Project.
Instalator: opkg (kiedyś ipkg)
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
Bitbake - proces budowania obrazu
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
Źródło: www.denx.de/wiki/
Outline
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
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
Metadane (Metadata)
Cztery funkcjonalne katogorie metadanych:
I
I
I
I
Przepisy, ang. Recipes (*.bb) — instrukcje dla BitBake do
zbudowania pojedynczego pakietu. Opisują pakiet, jego
zależności i ewentualne specjalne akcje potrzebne do jego
zbudowania
Klasy, ang. Classes (*.bbclass) — enkapsulują funkcjonalnści
przepisów. Pełnią rolę podobną do klas w obiektowych
językach programowania
Zadania, ang. Tasks — używane do grupowania pakietów w
systemie plików. Mają relatywnie prostą budowę, zwykle
składają się z kilku linii definiujących zależności miedzy
pakietami.
Konfiguracje, ang. Configuration (*.conf)—określają
ogólne zachowanie BitBake (local configuration,
machine/distro configuration).
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
Outline
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
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
Praca z OpenEmbedded
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
I
Pobranie OpenEmbedded:
git clone git://git.openembedded.org/openembedded-core
Budowanie obrazu
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
I
I
Pobranie BitBake (do katalogu openembedded-core):
git clone git://github.com/openembedded/bitbake
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Konfiguracja OpenEmbedded:
Literatura
http://docs.openembedded.org/usermanual/html/gettingoe_configuring_oe.html
Struktura katalogów przestrzeni roboczej
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
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
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
Konfiguracja środowiska
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Bitbake powinien być zawsze dostępny jako plik wykonywalny. W
starszych wersjach OE należy ustawić zmienne środowiskowe
BBPATH i BBFILES:
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Yocto Project
Poky build system
$ 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ę środowiska
definiuje plik oe-init-build-env:
$ source ./oe−init−build−env [<build directory>]
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Plik local.conf
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Plik konfiguracyjny w katalogu roboczym:
OpenEmbedded
BitBake
Metadane
my_OE/
−−build/
−−−−conf/
−−−−−− local.conf
Podstawowy plik konfiguracyjny ze zmiennymi OE. Najważniejsze
z nich to:
I
MACHINE = "any_available_machine_type"
I
DISTRO = "any_available_distro"
OE wykorzystuje tą informację jako punkt wyjściowy do
zbudowania kompilatora skrośnego dla docelowej architektury oraz
zbudowania dystrybucji OS dla tej architektury.
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
Budowa dystrybucji (distro)
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Budowa przykładowego obrazu:
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
~/my_OE/build$ bitbake core−image−minimal
I włączamy ulubiony kanał YouTube ... ;)
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Budowa dystrybucji (distro)
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Po pierwszej kompilacji utworzony zostaje nowy katalog tmp,
którego BitBake używa jako katalogu wyjściowego:
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Yocto Project
~/my_OE/build/tmp/
|−− cache/
|−− cross/ ==> cross tools (gcc, ldd, ...)
|−− deploy/
|−−−− images ==> final image files (cpio, jffs2, 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, ...
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Yocto Project
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
I
I
I
I
Yocto - najmniejsza jednostka układu SI. Prefiks yocto
oznacza 10^-24.
Projekt powstał na bazie OpenEmbedded. “Rdzeń” projektu
Yocto to system Poky (autor: Richard Purdie).
Listopad 2010 - Yocto Project pod opieką Linux Foundation.
od 2011 - Yocto Project i OpenEmbedded rozwijane razem jako
zbiór pakietów OE-Core.
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
Elementy Yocto
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
I
Poky - system do budowania OS
I
Wirtualny obraz systemu hosta do pracy z Yocto
Instalator Application Development Toolkit (ADT) dla systemu
hosta
I
I
Dla różnych platform:
I
I
I
I
wstępnie zbudowane (prebuild) łańcuchy narzędzi (toolchains)
wstępnie zbudowane pakiety w formie binarnej
wstępne zbudowane obrazy
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).
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
Outline
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
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
Poky build system
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Narzędzie Poky służy do budowania elementów wbudowanego
systemu Linux:
I
I
I
I
I
I
obraz bootloadera,
obraz jądra Linux,
obraz systemu plików,
toolchains i software development kits (SDKs) do tworzenia
aplikacji.
Poky build system - początkowa struktura (footprint) obrazu:
od wersji minimalnej (shell) do pełnego systemu Linux z
interfejsem użytkownika Sato (oparty na GNOME Mobile and
Embedded (GMAE)).
Możliwe jest dodawanie nowych warstw metadanych dla
rozszerzenia funkcjonalności (nowy rodzaj obrazu, dodatkowy
board support package (BSP) dla nowej platformy sprzętowej).
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
Przygotowanie środowiska pracy
I
Profesjonalna stacja robocza programisty powinna spełniać
następujące wymagania:
I
I
I
I
Wymagane oprogramowanie:
I
I
I
I
system wieloprocesorowy symetryczny (symmetric
multiprocessing,SMP)
co najmniej 8 GB pamięci, szybki dysk twardy
szybkie łącze internetowe
OS Linux (jako system natywny lub wirtualny)
Tar w wersji 1.24 lub wyższej
Python w wersji 2.7.3 lub wyższej (ale nie Python 3)
Instalacja wymaganych pakietów:
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gccmultilib build-essential chrpath socat libsdl1.2-dev xterm make
xsltproc docbook-utils fop dblatex xmlto autoconf automake libtool
libglib2.0-dev python-gtk2 bsdmainutils screen
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
Outline
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
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
Środowisko do wirtualizacji (systemu hosta)
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
Wirtualizacja
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Wirtualizacja = abstrakcja zasobów.
Rodzaje:
I
I
Emulacja API - wprowadzenie do głównego systemu
operacyjnego otoczenia API aplikacji pochodzące z innego
systemu. Przykład: Wine (ang. Wine is not emulator) implementacja WinAPI dla środowiska systemu Unix/X11.
Emulacja pełna – stanowi sposób na uruchamianie aplikacji
pochodzących z niekompatybilnego komputera, w stosunku do
wykorzystywanego (np. PC/Mac). Emulowane są podstawowe
podzespoły komputera (CPU, RAM, HDD, CD itp.) wraz z
systemem operacyjnym (virtual OS), zapewniając dużą
przenośność. Emulator wykonuje w pętli wszystko to, co
robiłby rzeczywisty procesor maszyny emulowanej, co
prowadzi do spadku wydajności pracy komputera. Przykład:
QEMU.
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
Wirtualizacja
I
Wirtualizacja – wiele systemów operacyjnych na tej samej
platformie sprzętowej i systemowej przy maksymalnej
możliwej wydajności. Procesy systemu operacyjnego gościa
(systemu emulowanego) wykonywane są bezpośrednio na
zasobach sprzętowych komputera. Dopiero w sytuacji, gdy
operacje takie nie dadzą się bezpośrednio wykonać,
wirtualizator emuluje je.
Hipernadzorca (ang. hypervisor), menedżer maszyn
wirtualnych (ang. Virtual Machine Manager) – narzędzie
niezbędne do prowadzenia procesu wirtualizacji. Nazwa
pochodzi od supervisor (ang. nadzorca) — programu
kontrolującego pracę komputera.
I
I
I
Decyduje, które procesy wirtualizowanego OS można
wykonywać bezpośrednio na zasobach sprzętowych, a które
należy emulować. Jeżeli określona operacja nie daje się wykonać
bezpośrednio na danym zasobie sprzętowym (błąd ochrony), jest
przechwytywana i emulowana przez hipernadzorcę.
Pośredniczy w przekazywaniu przerwań pomiędzy wirtualnym
systemem a zasobami sprzętowymi
Przykłady: VMware Workstation, Virtual Box
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
Docker - kontenery
I
I
I
Kontenery - sposób na separację aplikacji od systemu
operacyjnego oraz fizycznej infrastruktury wykorzystywanej
do połączeń z siecią. Są one instalowane poza jądrem systemu
operacyjnego i wirtualizują środowisko określonej aplikacji.
Pierwowzór - chroot w systemach UNIX. Komenda Linux
ograniczająca zasoby, który może wykorzystywać proces i
każdy wywoływany przez niego proces-dziecko.
Kontenery wspierane przez system Linux (LXC, Linux Kernel
Containers) - jedna z najnowocześniejszych metod
wirtualizacji aplikacji.
I
I
I
LXC pozwala na przydział zasobów CPU, pamięci, dysków i sieci
dla aplikacji odizolowanych od OS
LXC separuje drzewa procesów, dostęp do sieci, ID użytkownika,
dostęp do plików.
Kontenery Linux są elastyczne, ponieważ pozwalają
administratorowi wirtualizować pojedynczą aplikację, a nie cały
system operacyjny z wykorzystaniem VM.
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
Docker
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Docker - aplikacja pracującą na podbudowie w postaci LXC
I
I
I
Zarządza obrazami oraz asystuje we wdrożeniach wirtualizacji
aplikacji.
Dostarcza automatyzacji oraz mechanizmów szybkiego
tworzenia kontenerów LXC.
Dockerem był wewnętrznym projektem rozwijanym w firmie
dotCloud. W marcu 2013 Docker został udostępniony
publicznie.
I
Aktualnie jest zintegrowany z szeregiem innych narzędzi m.in.
Ansible, Chef, OpenStack, Pupper, Salt. Jest też dołączony do
RHEL, OpenShift PaaS, Google Compute Engine, Deis, a także
Amazon Web Services Elastic Beanstalk.
I
Standard wirtualizacji aplikacji dla system Linux.
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
Docker a wirtualna maszyna
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
Źródło: http://patg.net/containers,virtualization,docker/2014/06/05/docker-intro/
Docker
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Strona domowa:
https://www.docker.com/
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
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
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
Emulator QEMU
Quick EMUlator - szybki emulator dostępny jako otwarte
oprogramowanie.
I Umożliwia uruchomienie kilku systemów operacyjnych
jednocześnie na jednej maszynie.
I
Emulacja wielu architektur CPU.
I
Sama aplikacja może działać w dwóch trybach:
I
I
I
użytkownika – uruchamianie procesów systemu Linux
skompilowanych na innym typie procesora niż bieżący (np.
aplikacje 64-bitowe na procesorze 32-bitowym).
systemu – emulowany jest cały system, łącznie z procesorem,
dyskiem twardym oraz odpowiednimi urządzeniami
peryferyjnymi. Możliwe uruchamianie i instalowanie OS na
różne architektury: x86, x86_64, ARM, SPARC, SPARC64,
PowerPC, PowerPC64, MIPS, m68k (Coldfire), SH-4, Alpha,
CRIS.vvv
więcej na: http://osworld.pl/qemu-emulator-procesora/
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
Outline
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
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
System Poky - platformy sprzętowe
I
System Poky obsługuje wirtualne maszyny QEMU dla
następujących architektur:
I
I
I
I
I
I
Obsługuje też wybrane pakiety BSP (Board Support Packages)
dla platform sprzętowych:
I
I
I
I
I
ARM (qemuarm)
x86 (qemux86)
x86-64 (qemux86-64)
PowerPC (qemuppc)
MIPS (qemumips, qemumips64)
Texas Instruments Beaglebone (beaglebone)
Freescale MPC8315E-RDB (mpc8315e-rdb)
Maszyny PC oparte na układach Intel x86 (genericx86 i
genericx86-64)
Ubiquiti Networks EdgeRouter Lite (edgerouter)
Do pracy z innymi platformami sprzętowymi potrzebne są
dodatkowe warstwy Yocto (co najmniej BPS).
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
Warstwy Poky
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
I
System Poky posiada trzy katalogi przechowujące metadane:
I
I
I
I
meta: metadane OpenEmbedded-Core; wsparcie dla architektur
ARM, x86, x86-64, PowerPC, MIPS iMIPS64 oraz dla wirtualnej
maszyny QEMU
meta-yocto: metadane dystrybucji Poky
meta-yocto-bsp: metadane dla wybranych platform
sprzętowych
Poky posiada również warstwę meta-skeleton, będącą
wzorcem (schematem) dla nowych warstw.
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
Katalog roboczy Poky (build directory)
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
uruchomienie skryptu (sourcing) oe-init-build-env:
I
I
I
I
ustawia zmienne środowiskowe,
tworzy pliki konfiguracyjne (można je modyfikować)
sprawdza, czy spełnione są minimalne wymagania systemowe
dla budowy obrazu
skrypt woła scripts/oe-setup-builddir script, który tworzy
katalog roboczy. w momencie utworzenia katalog ten zawiera
trzy pliki:
I
I
I
bblayers.conf: lista warstw służących do budowy dystrybucji
OS
local.conf: konfiguracja parametrów procesu budowy
dystrybucji
templateconf.cfg: wzorcowe pliki konfiguracyjne.
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
System Poky
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
I
I
BitBake analizuje konfigurację obrazu (m.in. pliki: bblayers.bb,
local.conf) poszukując dodatkowych warstw, klas, przepisów i
zadań i budując łańcuch zależności między nimi (i
standardowymi elementami OE-core).
Tak powstaje mapa ważonych priorytetów zadań
(weighted task priority map). BitBake korzysta z tej mapy
podczas ustalania kolejności budowy poszczególnych
pakietów. Zadania wymagane przez większość innych zadań
oceniane są wyżej, a więc będą wykonane wcześniej podczas
procesu budowy dystrybucji OS
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)
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
System Poky
Kompilacja OS dla
systemu
wbudowanego
ZADANIE
Fetch
Unpack
Patch
Configure
Compile
Stage
Install
Package
OPIS
pobranie danych (źródeł)
rozpakowanie danych
dodanie łatek (patch-ów)
konfiguracja drzewa źrodeł
kompilacja drzewa źródeł
instalacja w przestrzeni stage
instalacja
utworzenie pakietu
FUNKCJA
do_fetch()
do_unpack()
do_patch()
do_configure()
do_compile()
do_stage()
do_install()
do_package()
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
I
Skompilowane źródło jest rozdzielane na pakiety; tworzona
jest inforamcja dla debuggera (debug package information).
I
Rozdzielone pakiety pakowane są do odpowiedniego formatu
(rpm, ipk lub deb). Bitbake wykorzystuje je do budowy
systemu plików.
System Poky
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Każdy aspekt procesu budowania jest kontrolowany przez
metadane. Metadane mogą być luźno pogrupowane w:
I
przepisy (package recipes)
I
I
I
I
zbiór niewykonywalnych metadanych, wykorzystywany do
ustawienia zmiennych lub zdefiniowania dodatkowych zadań,
pola: recipe description, the recipe version, the license of the
package i upstream source repository,
mogą definiować dodatkowe zadania,
pliki konfiguracyjne (configuration files)
I
I
konfiguracja BitBake i (w ogólności) całego procesu budowania,
konfiguracja warstw wykorzystywanych przez Poky do różnych
obrazów docelowych.
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
Warstwy w systemie Poky
I
Warstwa (layer) - grupa medanych definiujących określoną
funkcjonalność:
I
I
I
I
I
BSP - warstwy definiujące urządzenia,
warstwy definiujące typy obrazów,
warstwy definiujące dodatkowe oprogramowanie.
meta-yocto - “rdzenna” warstwa Yocto Project.
Warstwy bitbake - przykład
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
Figure: http://www.aosabook.org/en/yocto.html
Outline
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
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
Architektura BitBake - interfejsy użytkownika
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
I
Interfejs użytkownika umożliwia:
I
I
prezentowanie wyników, statusie i postępach procesu
budowania,
przechwytywanie zdarzeń od zadań (build tasks).
I
knotty - domyślny interfejs użytkownika; linia poleceń.
I
hob - graficzny interfejs użytkownika; umożliwia
modyfikowanie plików konfiguracyjnych, dodawanie warstw i
pakietów.
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
BitBake - Hob
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
Architektura BitBake
I
Podstawowy plik wykonawczy BitBake to bitbake/bin/bake
I
Uruchomienie BitBake oznacza rozpoczęcie budowy
infrastruktury potrzebnej do budowy obrazu
I
Kolejność uruchamiania modułów
interfejs użytkownika (UI)
⇓
serwer procesów (IPC)
⇓
Cooker
⇓
DataSmart
⇓
parsowanie plików konfiguracyjnych
⇓
obiekt Runqueue
⇓
Scheduler
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
Moduł IPC
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Moduł IPC (Interprocess Communication)
I Umożliwia uruchomienie wielu procesów podczas budowy
obrazu
I
Architektura klient-serwer
I
Domyślny serwer (i najczęściej używany z poziomu knotty) to
serwer procesów
I
Interfejs użytkownika potrafi wysyłać polecenia do modułu
serwera
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
Cooker
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Yocto Project
Poky build system
I
Zarządza parsowaniem metadanych
I
Inicjalizuje generowanie drzewa zależności i zadań
I
Zarządza procesem budowania.
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
DataSmart
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
I
I
Moduł DataSmart przechowuje dane z plików
konfiguracyjnych jako obiekty.
Jeśli przepis (recipe) zmieni się podczas procesu budowy,
obiekty danych nie są uaktualniane w całości, lecz zapisywane
są jedynie różnice między stanem przed i po zmianie
(oszczędność pamięci!).
Metadane
Budowanie obrazu
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
I
Słownik “copy-on-write” (COW)
Debugowanie procesu
budowy obrazu
I
zmienne mogą zawierać kod pythona (DataSmart sprawdza
poprawność kodu i obecność odwołań cyklicznych).
Literatura
Programowanie
Systemów
Wbudowanych
Runqueue i Scheduler
I
I
Budowa obrazu - setki przepisów, każdy zawierający wiele
pakietów i zadań powiązanych zależnościami. Zadaniem
BitBake jest uporządkowanie ich.
Cooker buduje mapę zadań z wagami, nazywaną runqueue
I
I
pełna lista pakietów potrzebnych do budowy obrazu
ł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
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
Scheduler - zależności
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Zależności (dependencies):
I
I
DEPENDS - zależności (pakiety) potrzebne w procesie
budowania.
DEPENDS = "b" w przepisie "a" zostanie przetłumaczone na
zadanie do_configure “a”, które zależy od zadania
do_populate_sysroot task w “b”. Wszystko co “b” dodaje do
systemu plików, jest dostępne kiedy “a” jest konfigurowane.
RDEPENDS - zależności (pakiety) potrzebne w procesie
wykonywania.
RDEPENDS_${PN} = "b" w przepisie "a" zostanie
przetłumaczone na zadanie do_build task “a”, zależne od
zadania “b”: do_package_write. Pakiet “b” będzie dostępny,
kiedy “a” zostanie zbudowane
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
BitBake Scheduler - budowa Runqueue
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
pierwszy znaleziony pakiet A
⇓
Metadane
Budowanie obrazu
Yocto Project
Poky build system
lista zadań potrzebnych do budowy pakietu A
⇓
przypisanie wag odpowiadających liczbie pakietów
potrzebnych 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 zadania
między swoimi wątkami
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Architektura BitBake - schemat
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
Outline
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
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
Obrazy w projekcie Poky
I
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
I
I
I
I
I
I
I
busybox - podstawowe narzędzia UNIX
sysvinit - pierwszy program uruchamiany w systemach
uniksowych (np. Linux) przez jądro w trakcie procesu
uruchamiania systemu operacyjnego
udev - dynamiczna alokacja plików urządzeń
core-image-full-cmdline: konsola, pełna obsługa sprzętu oraz
bash
core-image-lsb: obraz z konsolą oparty na kompilacji Linux
Standard Base
core-image-x11: obraz z graficznym UI (X11)
core-image-sato: obraz z graficznym UI (X11) i pulpitem
GNOME Mobile oraz motywem SATO
core-image-weston: obraz z protokołem Wayland i Weston
reference compositor-based image
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
Obrazy w projekcie Poky
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
Nazwy obrazów mogą mieć następujące przyrostki:
I
dev: obraz zawiera pliki nagłówkowe i biblioteki potrzebne do
tworzenia oprogramowania
I
sdk: zawiera kompletne SDK, które może być używane na
maszynie docelowej
I
initramfs: initial RAM file system
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
Budowa obrazu
Maszynę docelową (MACHINE) można zdefiniować na trzy
sposoby. Na przykład, jeśli platformą docelową jest emulator
maszyn x86:
1. Zdefiniowanie zmiennej MACHINE wraz z uruchomieniem
bitbake:
$ MACHINE=qemux86 bitbake core−image−minimal
2. Wyeksportowanie zmiennej MACHINE do bieżącej powłoki
shell:
$ 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
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
Budowa obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
Bitbake w pierwszej kolejności analizuje pliki:
OpenEmbedded
BitBake
I
conf/bblayers.conf: lista warstw
I
conf/layer.conf: konfiguracja każdej warstwy
I
meta/conf/bitbake.conf: konfiguracja bitbake
Poky build system
I
conf/local.conf: konfiguracja procesu budowania obrazu
Architektura systemu Poky
I
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 BitBake
parses the target recipe that has been provided and its
dependencies. The outcome is a set of interdependent tasks that
BitBake will then execute in order.
Metadane
Budowanie obrazu
Yocto Project
Wirtualizacja
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Budowa obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Zwykle nie jesteśmy zainteresowani całą informacją
generowaną podczas procesu budowania. Zaleca się taką
konfigurację procesu budowania, w której informacja
wyjściowa dla każdego pakietu (np. źródła czy logi) była
usuwana po zbudowaniu obrazu. W pliku conf/local.conf file:
INHERIT += "rm_work"
I
Z drugiej jednak strony uniemożliwia się w ten sposób
debugowanie (wstecz). Możliwe jest zdefiniowanie listy
pakietów, które mają być wyłączone z procesu czyszczenia
historii, np.:
RM_WORK_EXCLUDE += "linux−yocto u−boot"
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
Budowa obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Plik wzorcowy local.conf.sample - domyślna konfiguracja
I
Gotowe zbudowane obrazy znajdują się w katalogu:
build/tmp/deploy/images/qemux86
I
Domyślnie obrazy nie są usuwane z katalogu deploy. Jeśli
podczas budowy poprzednia wersja ma być usunięta, trzeba w
pliku conf/local.conf ustawić zmienną:
RM_OLD_IMAGE = "1"
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
I
Testowanie obrazu w emulatorze QEMU:
$ runqemu qemuarm core−image−minimal
Budowa Yocto dla Intel Galileo
I
I
Intel dostarcza pliki niezbędne do budowy obrazu systemu
Linux
Dokumentacja:
Intel ® QuarkTM SoC X1000 Board Support Package (BSP)
Build and Software User Guide
https://downloadcenter.intel.com/download/23197/IntelQuark-BSP
I
Omawiany przykład bazuje na wersji Release 1.1 (January
2015)
I
Wymagania wobec systemu hosta:
I
I
I
I
komputer PC z systemem Linux (Intel zaleca system 64-bitowy)
lub Windows 7 (x64). W omawianym przykładzie system hosta
to 64-bitowy Debian 8.0 (Jessie).
łącze internetowe
co najmniej 30 GB wolnego miejsca na dysku
interfejs szeregowy do komunikacji z Intel Galileo
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
Przygotowanie środowiska pracy
I
Powiązane pakiety:
I
I
I
I
I
I
Python 2.6 or 2.7 (ale nie Python 3.x )
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)
klient systemu kontroli wersji (git)
uuid-dev (uuid = Universally Unique Identifier)
iasl (iasl = ACPI Source Language Compiler)
Instalacja niezbędnych pakietów:
$ sudo apt−get install build−essential p7zip−ful
I
Pobranie pliku Download
Board_Support_Package_Sources_for_Intel_Quark_v1.1.0.7z
spod adresu:
https://downloadcenter.intel.com/download/23197/IntelQuark-BSP
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
Przygotowanie środowiska pracy
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Rozpakowanie pobranego pliku:
$ 7z x Board_Support_Package_Sources_for_Intel_Quark_v1.1.0.7z
I
Pobranie i instalacja EDKII
$ tar −xvf Quark_EDKII_∗.tar.gz
$ cd Quark_EDKII∗
$ ./svn_setup.py
$ svn update
I
Instalacja patch-a OpenSSL (opis w
CryptoPkg/Library/OpensslLib/Patch-HOWTO.txt)
I
Budowa oprogramowania układowego EDKII:
$ ./buildallconfigs.sh GCC46 QuarkPlatform
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
Instalacja starszych wersji kompilatorów GCC i
G++
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
I
I
Dodanie repozytoriów starszej wersji OS (np. Debian Wheezy)
do listy repozytoriów (plik /etc/apt/source.list)
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ówczas
należ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
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
Instalacja starszych wersji kompilatorów GCC i
G++
I
Aby używać zamiennie starszej i nowszej wersji kompilatora,
należy zainstalować wersję 4.6 jako alternatywną. W tym celu
należ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 (zaznaczenie
g++ jako “slave powoduje, że przełączanie wersji gcc będzie
powodowało analogiczne przełączenie wersji g++) :
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
procesu
$ sudo update−alternatives −−install /usr/bin/gcc gcc /usr/bin/gcc−4.6 60Debugowanie
−−slave
/usr/
budowy obrazu
$ sudo update−alternatives −−install /usr/bin/gcc gcc /usr/bin/gcc−4.9 40Literatura
−−slave /usr/
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
Budowa obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
W nowej sesji terminala należy rozpakować warstwę systemu
Yocto (meta-clanton_v1.1.0-dirty) i uruchomić skrypt setup.sh,
który pobierze z zewnętrznych źródeł pliki potrzebne do
zbudowania 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ść ...
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
Budowa obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Po zakończeniu procesu budowania systemu plików,
wyjściowe obrazy znajdują się w:
./tmp/deploy/images/quark/
i są to:
I
I
I
I
I
I
image-full-quark.ext3 (system plików)
core-image-minimal-initramfs-quark.cpio.gz (system plików
RAM)
bzImage (jądro)
grub.efi
boot (katalog)
Pliki można skopiować na pustą kartę SD lub pamięć USB
(sformatowane jako ext3).
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
Nagranie obrazów na kartę SD
I
Gotowe pliki obrazów w katalogu tmp/deploy/images/
directory to:
I
I
I
I
I
I
jądro systemu Linux:
bzImage–wersja-r0-clanton-YYYYMMDDhhmmss.bin
początkowy system plików RAM: core-image-minimalinitramfs-clanton-YYYYMMDDhhmmss.rootfs.cpio.gz
system plików:
image-full-clanton-YYYYMMDDhhmmss.rootfs.ext3
moduły jądra:
modules–wersja-r0-clanton-YYYYMMDDhhmmss.tgz
konfiguracja Grub: boot/grub/grub.conf
Formatowanie karty SD:
$ sudo dd if=/dev/zero of=/dev/sdd
I
Nagranie plików jako:
I
I
I
I
bzImage
core-image-minimal-initramfs-clanton.cpio.gz
image-full-clanton.ext3
boot/grub/grub.conf
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
Używanie historii budowania obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
I
Historia budowania obrazu - umożliwia sprawdzenie
zależności między pakietami, które weszły do systemu plików.
By umożliwić jej używanie, należy dodać do pliku
conf/local.conf:
INHERIT += "buildhistory"
I
Włączenie gromadzenia informacji (m.in. grafu zależności) w
lokalnym repozytorium Git:
BUILDHISTORY_COMMIT = "1"
I
Lokalizacja repozytorium Git może być ustawiona za pomocą
zmiennej BUILDHISTORY_DIR (domyślnie: build/buildhistory)
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
Używanie historii budowania obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
I
Domyślnie buildhistory śledzi wszelkie zmiany w pakietach,
obrazach i SDK. Jeśli chcemy śledzić tylko obrazy, należy
zmienić wartość zmiennej BUILDHISTORY_FEATURES (w
conf/local.conf):
BUILDHISTORY_FEATURES = "image"
I
Można śledzić konkretne pliki, należy je wówczas dodać to
buildhistory za pomocą zmiennej:
BUILDHISTORY_IMAGE_FILES += "/path/to/file"
I
Budowa z rejestracją historii jest wolniejsza a rozmiar
katalogów wynikowych większy. Nie zaleca się więc używania
historii przy każdej kompilacji obrazu (jedynie kiedy jest to
niezbędne).
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
Używanie historii budowania obrazu
Dla pakietów rejestrowane są następujące informacje:
I
wersja pakietu i przepisu
I
zależności
I
rozmiar pakietu
I
pliki
Dla obrazu:
I
konfiguracja budowania
I
graf zależności
I
lista plików związanych z prawami własności i dostępem
(permissions)
I
lista zainstalowanych pakietów
Dla SDK:
I
konfiguracja SDK
I
lista plików hosta i maszyny docelowej
I
grafy zależności
I
lista zainstalowanych pakietów
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
Używanie historii budowania obrazu
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Przeglądanie historii budowania obrazu:
Budowanie obrazu
Yocto Project
1. Za pomocą narzędzi Git (gitk lub git log).
Poky build system
2. Za pomocą komendy buildhistory-diff
Architektura systemu Poky
3. Za pomocą interfejsu sieciowego Django-1.4-based
3.1 import historii budowania do bazy danych
3.2 więcej: http://git.yoctoproject.org/cgit/cgit.cgi/buildhistoryweb/tree/README.
Wirtualizacja
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
Debugowanie procesu
budowy obrazu
Literatura
Statystyka procesu budowania
I
I
Podczas budowania obrazu możliwe jest zbieranie informacji
przydatnej w identyfikowaniu obszarów potencjalnej
optymalizacji i tzw. “wąskich gardeł” (zwłaszcza gdy w
systemie pojawia się nowy przepis).
Do zbierania informacji statystycznej potrzebne jest
dziedziczenie 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żdego
budowanego obrazu a w nim - podkatalogi odpowiadające
pakietom z plikami build_stats, zawierającymi informację o:
I
I
I
I
I
systemie hosta
lokalizacji i rozmiarze systemu plików
czasie trwania procesu budowania
średnim użyciu CPU
statystyce dysku
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
Statystyka procesu budowania
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Przykładowy plik statystyki może zawierać informacje:
I
ReadsComp: całkowita liczba operacji odczytu
I
TimeReads: całkowita liczba milisekund poświęconych na
operacje odczytu
I
WritesComp: całkowita liczba operacji zapisu
I
TimeWrite: całkowita liczba milisekund poświęconych na
operacje zapisu
I
TimeIO: całkowita liczba milisekund poświęconych na obsługę
I/O
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
Statystyka procesu budowania
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Budowanie obrazu
I
I
pybootchartgui.py tool - graficzna reprezentacja danych ze
źrodeł Poky
Generowanie pliku bootchart.png w katalogu /tmp:
$ ../sources/poky/scripts/pybootchartgui/pybootchartgui.py
tmp/buildstats/core−image−minimal/ −o /tmp
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
Debugowanie
I
Sprawdzenie, czy dany plik jest obecny w danej warstwie:
$ find −name "∗busybox∗"
To polecenie spowoduje rekursywne wyszukiwanie we
wszystkich 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
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
I
Lokalizowanie ścieżki pliku przepisu:
$ bitbake −e busybox | grep ^S=
I
Lokalizowanie katalogu roboczego pakietu lub obrazu:
$ bitbake −e <target> | grep ^WORKDIR=
Debugowanie
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
I
BitBake dostarcza zadanie devshell, ktore rozpakowuje źródło
i wykonuje patch-e, a następnie uruchamia nową sesję
terminala z prawidłowo ustawionymi zmiennymi
środowiskowymi.
$ bitbake −c devshell <target>
I
I
Wewnątrz devshell można używać komend takich jak
configure, make i run.
Jeśli na maszynie hosta nie ma środowiska graficznego, w
conf/local.conf trzeba ustawić ekran wyjściowy:
OE_TERMINAL = "screen"
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
Debugowanie
I
Wiadomość o błędach budowy pakietów drukowana jest w
terminalu podczas procesu budowania.
I
Lista zadań dla danego przepisu:
$ bitbake −c listtasks <target>
I
Powtórzenie błędu (wymuszone uruchomienie procesu
budowania):
$ 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>
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
Debugowanie
I
Zapis zależności do pliku DOT:
$ bitbake −g <target>
I
do odczytu można użyć pakietu GraphViz
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żącym
katalogu znajdują się trzy pliki:
I
I
I
I
package-depends.dot: zależności między pakietami
pn-depends.dot: zależności między przepisami
task-depends.dot: zależności między zadaniami
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>
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
Raportowanie błędów
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
I
I
I
Centralna baza danych o błędach zgłaszanych przez
użytkowników:
http://errors.yoctoproject.org.
Zgłoszenie błędu do bazy - za pomocą klasy report-error:
INHERIT += "report-error"
Domyślnie informacja o błędach przechowywana jest w
katalogu:
build/tmp/log/error-report
Można zmienić tą ścieżkę za pomocą zmiennej
ERR_REPORT_DIR.
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
Literatura
Programowanie
Systemów
Wbudowanych
Kompilacja OS dla
systemu
wbudowanego
OpenEmbedded
BitBake
Metadane
Elizabeth Flanagan, The Architecture of Open Source
Applications, www.aosabook.org
P. Raghavan, Amol Lad, Sriram Neelakandan, Embedded Linux
system design and development, Auerbach Publications, 2005
Budowanie obrazu
Yocto Project
Poky build system
Wirtualizacja
Architektura systemu Poky
Architektura BitBake
Budowanie obrazu Yocto
Budowa obrazu Yocto
dla Intel Galileo
http://patg.net/containers,virtualization,docker/2014/06/05/dockerintro/
http://osworld.pl/qemu-emulator-procesora/
Debugowanie procesu
budowy obrazu
Literatura