SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
OpenEmbedded




Marcin Juszkiewicz
Budowanie ręczne

●   Skąd wziąć kompilator?
●   Czy będzie on wspierał moje urządzenie?
●   Która biblioteka jest potrzebna do zbudowania XYZ?
●   Dlaczego nie mogę skompilować POX?


OK, budujemy.


Oops, jeszcze ta łatka jest potrzebna... znów 6h na budowanie...

Ufff... zbudowało się.


Ale dlaczego to nie działa?!?!?!? @!@!$@%@$!!!!!
Czym jest OpenEmbedded?
●   zbiorem metadanych służących do określenia jak budować oprogramowanie
●   w pełni otwartym rozwiązaniem problemów z kompilacją skrośną
●   systemem rozwijanym przez pasjonatów
●   projektem niezależnym od żadnej firmy komercyjnej
●   narzędziem umożliwiającym budowanie pojedynczych programów,
    toolchainów a także całych dystrybucji za pomocą jednej komendy
●   narzędziem tworzącym systemy plików gotowe do użycia na docelowych
    urządzeniach
●   odpowiedzią na dystrybucje wymagające 200 MiB dysku na podstawowy
    system (X11 + GPE + PIM == 16MiB Flash)
Możliwości OpenEmbedded
●   budowanie programów, toolchainów, SDK, filesystemów i całych dystrybucji
●   bezproblemowa obsługa kompilacji skrośnej
●   budowanie wszystkich potrzebnych narzędzi oraz bibliotek przed kompilacją
    docelowego pakietu
●   budowanie z zależnościami od docelowego urządzenia, dystrybucji,
    architektury
●   obsługa wielu architektur sprzętowych oraz optymalizacje dla poszczególnych
    wersji (np. XScale kontra EP93xx)
●   wspieranie soft-float dla ARM i PowerPC (dla wersji bez FPU)
●   niezależność od dystrybucji i architektury
●   automatycznie generowane zależności pomiędzy pakietami
●   prosty format opisów pakietów, urządzeń docelowych
●   duża granulacja pakietów (dokumentacja osobno, lokalizacje osobno)
●   możliwość definiowania dowolnej liczby zadań w ramach pakietu
●   możliwość kooperacji różnych projektów w ramach jednych metadanych
Historia
●   2001: Sharp wypuszcza swego pierwszego LinuxPDA: Sharp Zaurus SL-5000
●   2002: Chris Larson zaczyna prace nad dystrybucją „OpenZaurus”
●   koniec 2002: Buildroot staje się niewygodny przy dodawaniu nowych pakietów
    i urządzeń
●   Luty 2003: Holger Schurig tworzy pierwszą wersję OpenEmbedded
●   Maj 2003: Chris Larson rozwija funkcjonalność OpenEmbedded i zaczyna
    konwertować pakiety z poprzedniego systemu
●   Grudzień 2003: Michael Lauer wypuszcza OpenZaurus-a 3.3.5 (buildroot)
●   Kwiecień 2004: Familiar i GPE dodane do OE
●   Maj 2004: Marcin Juszkiewicz dołącza do teamu OpenEmbedded
●   Sierpień 2004: dodanie NSLU2-Linux
●   Wrzesień 2004: OpenZaurus 3.5.1 (pierwsza dystrybucja zbudowana z OE)
●   Grudzień 2004: BitBake wydzielony jako oddzielny projekt
●   Lipiec 2005: OE przechodzi z BitKeepera na Monotone, dodanie Dreamboksa
●   Kwiecień 2006: Familiar forkuje OE, wydaje v0.8.4 i zamiera
Formaty wyjściowe

Pakiety:               Filesystemy:


●   ipkg               ●   cpio
●   deb                ●   cramfs
●   tarball            ●   squashfs (także z lzma)
●   rpm                ●   jffs2 (także z lzo)
                       ●   ext2/ext3
                       ●   tarball (tar, gz, bzip2)
BitBake

OpenEmbedded to tylko dane. BitBake wykonuje całą pracę.


●   napisany w Pythonie
●   parser metadanych OE
●   odpowiada za wykonywanie zadań odpowiedzialnych za budowanie
●   zawiera moduły pobierające dane z FTP, HTTP, CVS, SVN, SVK, GIT, Perforce
●   umożliwia wielowątkowe budowanie
●   pierwotnie część OpenEmbedded, wydzielony jako projekt w 2004 roku


W planach:


●   architektura client<>server
●   UI (dumb, ncurses, gtk, qt)
Wykonywane zadania
●   do_fetch
●   do_unpack
●   do_patch
●   do_configure
●   do_compile
●   do_install
●   do_package
●   do_package_write
●   do_package_qa
●   do_populate_staging
●   do_deploy
●   do_build


●   do_devshell
Oprogramowanie
●   ponad 4000 gotowych recept opisujących różne biblioteki, programy, pliki
    konfiguracyjne
●   wybór Glibc lub uClibc
●   gcc 3.3/3.4/4.1
●   różne środowiska graficzne (GPE, OPIE, XFCE, Enlightment)
●   usługi sieciowe
●   języki programowania (m.in. Mono, Perl, Php, Python, Ruby)
●   bootloadery (m.in. grub, apex, u-boot)
●   narzędzia developerskie/testowe
Przykładowy opis pakietu
DESCRIPTION = quot;Linux Kernelquot;
SECTION = quot;kernelquot;
LICENSE = quot;GPLquot;


SRC_URI = quot;${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 
           file://defconfigquot;


SRC_URI_append_progear = quot;file://progear_bl-r5.patch;patch=1quot;


S = quot;${WORKDIR}/linux-2.6.19quot;


inherit kernel


KERNEL_IMAGETYPE = quot;bzImagequot;


do_configure_prepend() {
        install -m 0644 ${WORKDIR}/defconfig ${S}/.config
}
Klasy wspierające

Klasy wspierające mogą dodawać/modyfikować zadania oraz zmienne.


●   autotools
●   binconfig
●   cpan
●   distutils
●   icecc
●   gpe
●   kernel
●   opie
●   pkgconfig
●   rubyextension
●   xfce
Wspierane urządzenia
●   palmtopy
●   webpady
●   routery
●   serwery plików
●   różne devboardy
●   komputery domowe
●   settopboksy
●   telefony
Przykładowy opis urządzenia

#@NAME: Progear
#@DESCRIPTION: Machine configuration for Progear 1050HX+ webpad


TARGET_ARCH = quot;i686quot;


PACKAGE_EXTRA_ARCHS = quot;x86 i386 i486 i586quot;
PREFERRED_PROVIDER_virtual/kernel = quot;linuxquot;


MACHINE_FEATURES = quot;kernel26 usbhost ext2 pci pcmcia screen alsa irda acpiquot;


IMAGE_FSTYPES = quot;tar.gzquot;


MACHINE_EXTRA_RRECOMMENDS = quot;
        progear-ac progear-battery kernel-module-snd-ali5451 
        kernel-module-i2c-ali1535 kernel-module-i2c-ali15x3 
        kernel-module-yenta-socketquot;
Cechy urządzeń i dystrybucji

Urządzenie:             Dystrybucja:
●   acpi                ●   alsa
●   alsa                ●   bluetooth
●   apm                 ●   cramfs
●   bluetooth           ●   ext2
●   ext2                ●   ipsec
●   irda                ●   ipv6
●   kernel24/kernel26   ●   irda
●   keyboard            ●   nfs
●   pci                 ●   pci
●   pcmcia              ●   pcmcia
●   phone               ●   ppp
●   screen              ●   smbfs
●   usbgadget           ●   usbgadget
●   usbhost             ●   usbhost
●   wifi                ●   wifi
Kto używa OpenEmbedded

Dystrybucje:       Firmy, organizacje, uczelnie:


●   Ångström       ●   4G Systems
●   Familiar       ●   AMD
●   FooNAS         ●   BEC Systems
●   JLime          ●   CELF (Consumer Electronics Linux Forum)
●   Nylon          ●   Dream Multimedia TV
●   OpenDreambox   ●   FIC / OpenMoko
●   OpenOmap       ●   Kernel Concepts
●   OpenProtium    ●   M&N Solutions
●   OpenSlug       ●   OpenedHand
●   OpenZaurus     ●   Techsol
●   SlugOS         ●   Wolfson Microelectronics Plc
                   ●   University of Twente (Holandia)
                   ●   University of Frankfurt
Dystrybucja Ångström
●   Jedna dystrybucja obsługująca wszystkie urządzenia
●   Obsługa najnowszych technologii dostępnych w świecie embedded
●   Pierwsza dystrybucja wykorzystująca ARM EABI
●   Używana przez developerów Debiana do prac nad portem armel
Przykładowa dystrybucja
#@NAME: OpenOMAP
#@DESCRIPTION: OE Distribution for TI OMAP Development Boards


INHERIT += quot; package_ipk debian multimachinequot;
TARGET_OS = quot;linuxquot;
TARGET_FPU = quot;softquot;


PREFERRED_VERSION_linux-omap1_omap5912osk ?= quot;2.6.18-omap1quot;


# toolchain
PREFERRED_VERSION_gcc = quot;4.1.1quot;
PREFERRED_VERSION_gcc-cross = quot;4.1.1quot;
PREFERRED_VERSION_gcc-cross-initial = quot;4.1.1quot;
PREFERRED_VERSION_binutils = quot;2.17quot;
PREFERRED_VERSION_binutils-cross = quot;2.17quot;
PREFERRED_VERSION_linux-libc-headers = quot;2.6.15.99quot;
PREFERRED_VERSION_glibc = quot;2.4quot;
PREFERRED_VERSION_glibc-intermediate = quot;2.4quot;


# We want images supporting the following features (for task-base)
DISTRO_FEATURES = quot;nfs pcmcia usbhostquot;
PCMCIA_MANAGER = quot;pcmciautilsquot;
Efekt
●   4 lata rozwoju
●   45 developerów z prawem zapisu
●   260 osób na developerskiej liście mailingowej
●   kilkanaście dystrybucji zbudowanych w oparciu o OpenEmbedded
●   ponad 100 tysięcy użytkowników naszych dystrybucji
●   wspierane wszystkie platformy używane w systemach embedded
●   dla platformy ARM obsługa soft-float/hard-float, OABI/EABI
●   soft-float/hard-float także dla architektury PowerPC
●   działające systemy zawarte w 2MiB pamięci
Pytania?
Kontakt



                         Marcin Juszkiewicz



www:   http://blog.haerwu.biz/
mailto: kontakt@haerwu.biz
Jabber: hrw@jabber.org

Contenu connexe

Tendances

PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
 
Fedora Core 2. Księga eksperta
Fedora Core 2. Księga ekspertaFedora Core 2. Księga eksperta
Fedora Core 2. Księga ekspertaWydawnictwo Helion
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
 
PHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHPCon Poland
 
Linux. Rozwiązywanie problemów. Biblia
Linux. Rozwiązywanie problemów. BibliaLinux. Rozwiązywanie problemów. Biblia
Linux. Rozwiązywanie problemów. BibliaWydawnictwo Helion
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyWydawnictwo Helion
 
Red Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaRed Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaWydawnictwo Helion
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawySages
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Semihalf
 
Automatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska
Automatyzacja tworzenia maszyn wirtualnych Magdalena WojnarowskaAutomatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska
Automatyzacja tworzenia maszyn wirtualnych Magdalena WojnarowskaWomen in Technology Poland
 
Red Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
Red Hat Enterprise Linux i Fedora Core 2. WprowadzenieRed Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
Red Hat Enterprise Linux i Fedora Core 2. WprowadzenieWydawnictwo Helion
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PROIDEA
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PROIDEA
 

Tendances (20)

100 sposobów na BSD
100 sposobów na BSD100 sposobów na BSD
100 sposobów na BSD
 
Po prostu Red Hat Linux 8
Po prostu Red Hat Linux 8Po prostu Red Hat Linux 8
Po prostu Red Hat Linux 8
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
Fedora Core 2. Księga eksperta
Fedora Core 2. Księga ekspertaFedora Core 2. Księga eksperta
Fedora Core 2. Księga eksperta
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
 
PHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użyciaPHP i memcached, zaawansowane przypadki użycia
PHP i memcached, zaawansowane przypadki użycia
 
Linux. Rozwiązywanie problemów. Biblia
Linux. Rozwiązywanie problemów. BibliaLinux. Rozwiązywanie problemów. Biblia
Linux. Rozwiązywanie problemów. Biblia
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
 
Red Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaRed Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga eksperta
 
Fedora Core 2 dla każdego
Fedora Core 2 dla każdegoFedora Core 2 dla każdego
Fedora Core 2 dla każdego
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
 
Automatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska
Automatyzacja tworzenia maszyn wirtualnych Magdalena WojnarowskaAutomatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska
Automatyzacja tworzenia maszyn wirtualnych Magdalena Wojnarowska
 
Red Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
Red Hat Enterprise Linux i Fedora Core 2. WprowadzenieRed Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
Red Hat Enterprise Linux i Fedora Core 2. Wprowadzenie
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
Slackware Linux. Ćwiczenia
Slackware Linux. ĆwiczeniaSlackware Linux. Ćwiczenia
Slackware Linux. Ćwiczenia
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 

Similaire à OpenEmbedded

Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Semihalf
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcjiMarcin Kurzyna
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. Redge Technologies
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004Tomasz Cieplak
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPROIDEA
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
 
Gluster FS
Gluster FSGluster FS
Gluster FS3camp
 

Similaire à OpenEmbedded (20)

Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Prezentacja o X11
Prezentacja o X11Prezentacja o X11
Prezentacja o X11
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
DTrace
DTraceDTrace
DTrace
 
Od Zera do Farmera
Od Zera do FarmeraOd Zera do Farmera
Od Zera do Farmera
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 
3
33
3
 
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
 

OpenEmbedded

  • 2. Budowanie ręczne ● Skąd wziąć kompilator? ● Czy będzie on wspierał moje urządzenie? ● Która biblioteka jest potrzebna do zbudowania XYZ? ● Dlaczego nie mogę skompilować POX? OK, budujemy. Oops, jeszcze ta łatka jest potrzebna... znów 6h na budowanie... Ufff... zbudowało się. Ale dlaczego to nie działa?!?!?!? @!@!$@%@$!!!!!
  • 3. Czym jest OpenEmbedded? ● zbiorem metadanych służących do określenia jak budować oprogramowanie ● w pełni otwartym rozwiązaniem problemów z kompilacją skrośną ● systemem rozwijanym przez pasjonatów ● projektem niezależnym od żadnej firmy komercyjnej ● narzędziem umożliwiającym budowanie pojedynczych programów, toolchainów a także całych dystrybucji za pomocą jednej komendy ● narzędziem tworzącym systemy plików gotowe do użycia na docelowych urządzeniach ● odpowiedzią na dystrybucje wymagające 200 MiB dysku na podstawowy system (X11 + GPE + PIM == 16MiB Flash)
  • 4. Możliwości OpenEmbedded ● budowanie programów, toolchainów, SDK, filesystemów i całych dystrybucji ● bezproblemowa obsługa kompilacji skrośnej ● budowanie wszystkich potrzebnych narzędzi oraz bibliotek przed kompilacją docelowego pakietu ● budowanie z zależnościami od docelowego urządzenia, dystrybucji, architektury ● obsługa wielu architektur sprzętowych oraz optymalizacje dla poszczególnych wersji (np. XScale kontra EP93xx) ● wspieranie soft-float dla ARM i PowerPC (dla wersji bez FPU) ● niezależność od dystrybucji i architektury ● automatycznie generowane zależności pomiędzy pakietami ● prosty format opisów pakietów, urządzeń docelowych ● duża granulacja pakietów (dokumentacja osobno, lokalizacje osobno) ● możliwość definiowania dowolnej liczby zadań w ramach pakietu ● możliwość kooperacji różnych projektów w ramach jednych metadanych
  • 5. Historia ● 2001: Sharp wypuszcza swego pierwszego LinuxPDA: Sharp Zaurus SL-5000 ● 2002: Chris Larson zaczyna prace nad dystrybucją „OpenZaurus” ● koniec 2002: Buildroot staje się niewygodny przy dodawaniu nowych pakietów i urządzeń ● Luty 2003: Holger Schurig tworzy pierwszą wersję OpenEmbedded ● Maj 2003: Chris Larson rozwija funkcjonalność OpenEmbedded i zaczyna konwertować pakiety z poprzedniego systemu ● Grudzień 2003: Michael Lauer wypuszcza OpenZaurus-a 3.3.5 (buildroot) ● Kwiecień 2004: Familiar i GPE dodane do OE ● Maj 2004: Marcin Juszkiewicz dołącza do teamu OpenEmbedded ● Sierpień 2004: dodanie NSLU2-Linux ● Wrzesień 2004: OpenZaurus 3.5.1 (pierwsza dystrybucja zbudowana z OE) ● Grudzień 2004: BitBake wydzielony jako oddzielny projekt ● Lipiec 2005: OE przechodzi z BitKeepera na Monotone, dodanie Dreamboksa ● Kwiecień 2006: Familiar forkuje OE, wydaje v0.8.4 i zamiera
  • 6. Formaty wyjściowe Pakiety: Filesystemy: ● ipkg ● cpio ● deb ● cramfs ● tarball ● squashfs (także z lzma) ● rpm ● jffs2 (także z lzo) ● ext2/ext3 ● tarball (tar, gz, bzip2)
  • 7. BitBake OpenEmbedded to tylko dane. BitBake wykonuje całą pracę. ● napisany w Pythonie ● parser metadanych OE ● odpowiada za wykonywanie zadań odpowiedzialnych za budowanie ● zawiera moduły pobierające dane z FTP, HTTP, CVS, SVN, SVK, GIT, Perforce ● umożliwia wielowątkowe budowanie ● pierwotnie część OpenEmbedded, wydzielony jako projekt w 2004 roku W planach: ● architektura client<>server ● UI (dumb, ncurses, gtk, qt)
  • 8. Wykonywane zadania ● do_fetch ● do_unpack ● do_patch ● do_configure ● do_compile ● do_install ● do_package ● do_package_write ● do_package_qa ● do_populate_staging ● do_deploy ● do_build ● do_devshell
  • 9. Oprogramowanie ● ponad 4000 gotowych recept opisujących różne biblioteki, programy, pliki konfiguracyjne ● wybór Glibc lub uClibc ● gcc 3.3/3.4/4.1 ● różne środowiska graficzne (GPE, OPIE, XFCE, Enlightment) ● usługi sieciowe ● języki programowania (m.in. Mono, Perl, Php, Python, Ruby) ● bootloadery (m.in. grub, apex, u-boot) ● narzędzia developerskie/testowe
  • 10. Przykładowy opis pakietu DESCRIPTION = quot;Linux Kernelquot; SECTION = quot;kernelquot; LICENSE = quot;GPLquot; SRC_URI = quot;${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 file://defconfigquot; SRC_URI_append_progear = quot;file://progear_bl-r5.patch;patch=1quot; S = quot;${WORKDIR}/linux-2.6.19quot; inherit kernel KERNEL_IMAGETYPE = quot;bzImagequot; do_configure_prepend() { install -m 0644 ${WORKDIR}/defconfig ${S}/.config }
  • 11. Klasy wspierające Klasy wspierające mogą dodawać/modyfikować zadania oraz zmienne. ● autotools ● binconfig ● cpan ● distutils ● icecc ● gpe ● kernel ● opie ● pkgconfig ● rubyextension ● xfce
  • 12. Wspierane urządzenia ● palmtopy ● webpady ● routery ● serwery plików ● różne devboardy ● komputery domowe ● settopboksy ● telefony
  • 13. Przykładowy opis urządzenia #@NAME: Progear #@DESCRIPTION: Machine configuration for Progear 1050HX+ webpad TARGET_ARCH = quot;i686quot; PACKAGE_EXTRA_ARCHS = quot;x86 i386 i486 i586quot; PREFERRED_PROVIDER_virtual/kernel = quot;linuxquot; MACHINE_FEATURES = quot;kernel26 usbhost ext2 pci pcmcia screen alsa irda acpiquot; IMAGE_FSTYPES = quot;tar.gzquot; MACHINE_EXTRA_RRECOMMENDS = quot; progear-ac progear-battery kernel-module-snd-ali5451 kernel-module-i2c-ali1535 kernel-module-i2c-ali15x3 kernel-module-yenta-socketquot;
  • 14. Cechy urządzeń i dystrybucji Urządzenie: Dystrybucja: ● acpi ● alsa ● alsa ● bluetooth ● apm ● cramfs ● bluetooth ● ext2 ● ext2 ● ipsec ● irda ● ipv6 ● kernel24/kernel26 ● irda ● keyboard ● nfs ● pci ● pci ● pcmcia ● pcmcia ● phone ● ppp ● screen ● smbfs ● usbgadget ● usbgadget ● usbhost ● usbhost ● wifi ● wifi
  • 15. Kto używa OpenEmbedded Dystrybucje: Firmy, organizacje, uczelnie: ● Ångström ● 4G Systems ● Familiar ● AMD ● FooNAS ● BEC Systems ● JLime ● CELF (Consumer Electronics Linux Forum) ● Nylon ● Dream Multimedia TV ● OpenDreambox ● FIC / OpenMoko ● OpenOmap ● Kernel Concepts ● OpenProtium ● M&N Solutions ● OpenSlug ● OpenedHand ● OpenZaurus ● Techsol ● SlugOS ● Wolfson Microelectronics Plc ● University of Twente (Holandia) ● University of Frankfurt
  • 16. Dystrybucja Ångström ● Jedna dystrybucja obsługująca wszystkie urządzenia ● Obsługa najnowszych technologii dostępnych w świecie embedded ● Pierwsza dystrybucja wykorzystująca ARM EABI ● Używana przez developerów Debiana do prac nad portem armel
  • 17. Przykładowa dystrybucja #@NAME: OpenOMAP #@DESCRIPTION: OE Distribution for TI OMAP Development Boards INHERIT += quot; package_ipk debian multimachinequot; TARGET_OS = quot;linuxquot; TARGET_FPU = quot;softquot; PREFERRED_VERSION_linux-omap1_omap5912osk ?= quot;2.6.18-omap1quot; # toolchain PREFERRED_VERSION_gcc = quot;4.1.1quot; PREFERRED_VERSION_gcc-cross = quot;4.1.1quot; PREFERRED_VERSION_gcc-cross-initial = quot;4.1.1quot; PREFERRED_VERSION_binutils = quot;2.17quot; PREFERRED_VERSION_binutils-cross = quot;2.17quot; PREFERRED_VERSION_linux-libc-headers = quot;2.6.15.99quot; PREFERRED_VERSION_glibc = quot;2.4quot; PREFERRED_VERSION_glibc-intermediate = quot;2.4quot; # We want images supporting the following features (for task-base) DISTRO_FEATURES = quot;nfs pcmcia usbhostquot; PCMCIA_MANAGER = quot;pcmciautilsquot;
  • 18. Efekt ● 4 lata rozwoju ● 45 developerów z prawem zapisu ● 260 osób na developerskiej liście mailingowej ● kilkanaście dystrybucji zbudowanych w oparciu o OpenEmbedded ● ponad 100 tysięcy użytkowników naszych dystrybucji ● wspierane wszystkie platformy używane w systemach embedded ● dla platformy ARM obsługa soft-float/hard-float, OABI/EABI ● soft-float/hard-float także dla architektury PowerPC ● działające systemy zawarte w 2MiB pamięci
  • 20. Kontakt Marcin Juszkiewicz www: http://blog.haerwu.biz/ mailto: kontakt@haerwu.biz Jabber: hrw@jabber.org