X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj 2014 - Poznań, Polska



Podobne dokumenty
Materiały dodatkowe. Raspberry Pi

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie Systemów Wbudowanych

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Tworzenie oprogramowania

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Wprowadzenie do biblioteki klas C++

System Zarządzania Dystrybucją

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

MentorGraphics ModelSim

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Pracownia Technik Obliczeniowych

Spis treści. Wstęp... 10

Uruchomienie Raspberry Pi

Dokumentacja kompilacji źródeł aplikacji 1.0

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Fragment wykładu z języka C ( )

Kompilacja i scalanie programów w linii poleceń gcc i make

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Git rozproszony system kontroli wersji

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Java Podstawy. Michał Bereta

Instalacja NOD32 Remote Administrator

Partnerzy: Laboratorium 15

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++

IBM SPSS Modeler Social Network Analysis 16 podręcznik instalowania i konfigurowania

Środowiska wirtualne i zarządzanie zależnościami w Pythonie. Piotr Grzesik

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Programowanie niskopoziomowe

Automatyczna instalacja oraz zmiana konfiguracji w ramach całego klastra.

Uruchomienie Intel Galileo

Wyszukiwanie plików w systemie Windows

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

LINUX. Instalacja oprogramowania

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

Sieciowa instalacja Sekafi 3 SQL

ArchTour Documentation

Acronis Universal Restore

Programowanie obiektowe zastosowanie języka Java SE

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

2016/10/20 04:45 1/5 3 Instalacja z pakietów

2019/04/04 13:46 1/5 3 Instalacja z pakietów

Instalacja i konfiguracja SAS PC Files Server

Gdy dystrybucja Linuksa staje się niepotrzebna

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Opis administracji terminali ABA-X3 v.1.5.0

Procedura wczytania danych sprawozdawczych za I kw 2006 z systemu BudzetST II do systemu

System wspomagania zarządzania wirtualizacją

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

System kontroli wersji git

Administratora CSIZS - OTM

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Baza danych sql. 1. Wprowadzenie

Instrukcja instalacji i konfiguracji czytników kart kryptograficznych, aplikacji procertum CardManager, obsługa aplikacji procertum CardManager w

Programowanie obiektowe

OpenEmbedded Marcin Juszkiewicz

git krótki przewodnik

Automatyczna instalacja oprogramowania.

INFORMATOR TECHNICZNY WONDERWARE

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer.

Programowanie Proceduralne

7. zainstalowane oprogramowanie zarządzane stacje robocze

FORMA SZKOLENIA MATERIAŁY SZKOLENIOWE CENA CZAS TRWANIA

Tworzenie szablonów użytkownika

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

Zbigniew Sołtys - Komputerowa Analiza Obrazu Mikroskopowego 2015 część 13

Instrukcja instalacji

Instalacja środowiska MPI w systemie operacyjnym Linux

Wprowadzenie do Doctrine ORM

Konfiguracja pakietu CrossStudio for MSP

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Rozdział 1. Informacje ogólne

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

MAMP Mac + Apache + MySQL + PHP. Kraków 8 czerwca 2009, Adam Strzelecki,

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Projektowanie układów na schemacie

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Praca w środowisku Visual Studio 2008, Visual C

Administratorzy systemów, inżynierowie, konsultanci, którzy wdrażają i zarządzają rozwiązaniami opartymi o serwery HP ProLiant

GIT. Rozproszony system kontroli wersji

Konfiguracja serwera DNS w systemie Windows Server 2008 /2008 R2

KS-ZSA. Korporacyjne grupy towarowe

Pobieranie edytora CodeLite

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Instalacja i konfiguracja IIS-a na potrzeby dostępu WEB do aplikacji Wonderware InTouch Machine Edition

GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Linux

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

Transkrypt:

X PIWO 17 Maj 2014 - Poznań, Polska Portowanie Tizena na nowe architektury na przykładzie ARMv6 Maciej Wereski Samsung R&D Institute Poland

Plan prezentacji Środowisko budowania Tizena Infrastruktura GBS Paczki zależne od architektury Dodawanie nowej architektury Problem z GBSem Wybór rozwiązania Bootstrapowanie Wymagane źródła Środowisko RPM bootstrap Czas na pozostałe paczki Jądro Tworzenie obrazów Użycie Mica 2

Środowisko budowania Tizena

Architektura vs Profil Architektura Ạrchitektura sprzętowa (np i586, armv7l) Platforma Paczki współdzielone przez wszystkie profile git: wszystko co znajduje się w platform/ (np platform/upstream) Profil Zestaw paczek specyficznych dla danej klasy urządzeń (np usługi automotive na profilu IVI) git: wszystko co znajduje się w profile/* (np profile/mobile) 4

5 Nowa architektura może być dodana dla istniejących profili, nowy profil może być dodany dla nowej architektury lub nowy profil może być dodany do istniejącej architektury

Budowanie i pakietowanie w Tizenie paczki RPM build server: OBS (http://buildtizenorg) lokalne budowanie paczek: GBS lokalne obrazy: mic 6

Repozytorium git gałęzie: tizen, upstream, pristine-tar katalog packaging zawierający speca i manifest SMACKa (na gałęzi tizen) zmiany, które nie są z upstreamu jako oddzielne commity na gałęzi tizen 7

Czym jest GBS? GBS działa w następujący sposób: 1 tarball jest tworzony z gałęzi pristine-tar bądź upstream 2 łaty są generowane z gałęzi tizen 3 spec jest modyfikowany (dodanie łat, itp) 4 rpmbuild jest uruchamiany w chrootie 8

Zalety GBSa GBS ułatwia proces budowania, automatycznie rozwiązuje zależności, zarządza środowiskiem budowania Uwaga GBS korzysta z qemu do natywnego budowania w chrootie 9

qemu-accel qemu-accel przyspiesza budowanie paczkek w chrootie GBS Dostarcza skompilowane na architekturę gospodarza pliki podstawowych narzędzi (binutils, gettext, ), które zostaną użyte zamiast narzędzi skompilowanych na architekturę gościa Budowanie qemu-accel gbs build -A i586 -P mobile --baselibs 10

Dodawanie nowej architektury

Problem Do budowania GBSem jest potrzebne repozytorium z RPMami (zależności) Jednak dla nowej architektury nie posiadamy takich paczek 12

Możliwe rozwiązania Musimy w jakiś sposób uzyskać wymagane pakiety: znalezienie RPMów na pożądaną architekturę stworzenie RPMów ze źródeł Tizena Wymagany zestaw paczek Potrzebujemy jedynie podstawowego zestawu paczek (gcc, rpm, qemu-accel i zależności) Mając te paczki możemy zacząć budować używając GBSa 13

Użycie zewnętrznych RPMów łatwiejsze i szybsze rozwiązanie może nie być paczek na wymaganą architekturę 14

Zbudowanie RPMów można zbudować na 2 sposoby: natywnie lub skompilować skrośnie wymaga więcej czasu i jest trudniejsze 15

Kompilacja natywna pliki spec wymagają mniej zmian łatwiej skonfigurować środowisko musi być już system na danej architekturze potrzebny sprzęt 16

Kompilacja skrośna pliki spec i środowisko wymagają więcej zmian nie musi istnieć system na daną architekturę nie trzeba posiadać sprzętu Użyjemy tego podejścia 17

Bootstrapowanie

Cel Zbudowanie wszystkich paczek, które doprowadzą nas do rpm-xxx-armv6lrpm Pobranie źródeł Wszystkie repozytoria znajdują się na: https://reviewtizenorg/git/ 19

chroot Korzystamy z systemu w chrootie (np zainstalowanego debootstrapem albo pacstrapem) Potrzebujemy następujących rzeczy: skrośne narzędzia, tj gcc, g++, binutils (ze standardowych dystrybucyjnych paczek) rpmbuild rpm2cpio + cpio 20

Makra RPM 1 makra z istniejącej paczki rpm jako baza (armv7l w naszym przypadku) 2 Edycja: ustawić prawidłową architekturę ustawić odpowiednie ścieżki ustawić właściwe flagi 3 zapsanie w odpowiednim miejscu (żeby rpmbuild mógł ich użyć -- więcej man rpmbuild) 21

narzędzia i prefix % cc /usr/bin/arm-linux-gnueabi-gcc % cpp /usr/bin/arm-linux-gnueabi-gcc -E % cxx /usr/bin/arm-linux-gnueabi-g++ % ld /usr/bin/arm-linux-gnueabi-ld % nm /usr/bin/arm-linux-gnueabi-nm % objcopy /usr/bin/arm-linux-gnueabi-objcopy % objdump /usr/bin/arm-linux-gnueabi-objdump % ranlib /usr/bin/arm-linux-gnueabi-ranlib %_prefix /arm/usr 22

flagi %_build x86_64-unknown-linux-gnu %_build_alias x86_64-unknown-linux-gnu%nil %_build_cpu x86_64 %_build_vendor %_host_vendor %_build_os %_host_os %_host armv6l-tizen-linux-gnueabi %_host_alias armv6l-tizen-linux-gnueabi%nil %_host_cpu armv6l %_host_vendor tizen %_host_os linux %_target armv6l # %_arch armv6l 23

host-x-host Używamy kompilatora skrośnego do zbudowania kompilatora natywnego, który będzie używany na innej architekturze To oznacza, że opcje --host i --target powinny być takie same, natomiast --build powinien określać system, w którym budujemy 24

modyfikacje speca Większość modyfikacji to ustawienie odpowiednich zmiennych środowiskowych, np CC=%{ cc}, CXX=%{ cxx} Inne problemy, które mogą się pojawić: niektóre makra RPM mogą nie istnieć, eg %docs_package, %manifest, %license, (te, na które się natknąłem można usunąć) może być konieczność modyfikacji/dodania flag do wywołania configure 25

rpmbuild Wymagane opcje: -ba - 'build all', buduje paczki: binarną oraz źródłową --nodeps - ignoruje zależności RPM, w przeciwnym przypadku budowa nie powiedzie się (nie mamy zależności!) --target armv6l-tizen-linux-gnueabi - kompilacja skrośna na docelową architekturę przykładowe wywołanie rpmbuild rpmbuild -ba --nodeps --target armv6l-tizen-linux-gnueabi bzip2spec Więcej informacji: man rpmbuild 26

Instalacja spaczkowanych bibliotek Po zbudowaniu pakietów ich zawartość należy zainstalować przed rozpoczęciem budowania zależnych RPMów Należy to zrobić w systemie, w którym budujemy paczki (dlatego budujemy to w chrootie) Należy też uważać, żeby nie nadpisać istniejących bibliotek (dlatego został użyty prefix /arm/usr) Do instalacji pakietów należy skorzystać z narzędzi rpm2cpio oraz cpio Instalacja zawartości paczki ṛpm2cpio pkgname-pkgver-armv6lrpm cpio -idmv Szczegóły: strony manuali rpm2cpio i cpio 27

Czas na pozostałe paczki

Czas na GBSa Gdy mamy już paczki rpm, qemu-accel i inne podstawowe paczki, to możemy zacząć używać GBSa Uwaga Należy zacząć od przebudowania zbudowanych już paczek GBSem 29

Jądro

Dodanie jądra Najłatwiejszym rozwiązaniem jest użycie oficjalnego jądra Raspberry Pi i ustawienie odpowiednich opcji: SMACK wymagane przez systemd (są wymienione w pliku README) 31

Tworzenie obrazów

Używanie pliku kickstart użycie pliku ks z profilu, na którym chcemy bazować nasz port modyfikacja repozytoriów modyfikacja list/grup pakietów modyfikacja partycji 33

Ważne fragmenty pliku kickstart Te fragmenty należy zmodyfikować # repozytorium z paczkami do zainstalowania repo --name=bootstrap --baseurl=file:///path/to/repo/ # zdefiniowanie partycji part / --size 6144 --ondisk sda --fstype=ext4 --label tizen %packages # lista paczek i grup %end %post # skrypty postinstalacyjne %end 34

Uruchamianie mica Różne typy obrazów: loop raw fs livecd liveusb Przykład ṃic create raw -A armv6l --generate-bmap piks 35

Materiały Git Build System https://sourcetizenorg/documentation/reference/git-build-system/ MIC Image Creator https://sourcetizenorg/documentation/reference/mic-image-creator GCC: Configure Terms and History http://gccgnuorg/onlinedocs/gccint/configure-termshtml Cross Linux From Scratch http://traccross-lfsorg/ 36

37 Dziękuję za uwagę!