Your SlideShare is downloading. ×
OpenEmbedded
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

OpenEmbedded

1,202
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,202
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. OpenEmbedded Marcin Juszkiewicz
  • 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
  • 19. Pytania?
  • 20. Kontakt Marcin Juszkiewicz www: http://blog.haerwu.biz/ mailto: kontakt@haerwu.biz Jabber: hrw@jabber.org

×