1. „HaeRWu” Marcin Juszkiewicz
OpenEmbedded
Wprowadzenie
Marcin Juszkiewicz
Poznań
2006.10.18
1 2006.10.18 OpenEmbedded. Wprowadzenie
2. „HaeRWu” Marcin Juszkiewicz
OpenEmbedded i ja
● Czerwiec 2003: Palm M105 – by sprawdzić, czy palmtop jest tym czego szukałem
● Wrzesień 2003: Sony Clie SJ30 – ekran wysokiej rozdzielczości, niestety słabo
wspierany przez system
● Luty 2004: Sharp Zaurus SL-5500 – bo dobrze jest móc pogrzebać w systemie
● Marzec 2004: Pierwszy kontakt z OpenEmbedded – chciałem coś skompilować nas
Zaurusa
● Maj 2004: Dołączyłem do teamu OpenEmbedded jako opiekun SL-5500
● Kwiecień 2005: Przesiadka na Sharp Zaurus C-760
● Grudzień 2005: Michael Lauer przekazał mi zarządzanie dystrybucją OpenZaurus
● Marzec 2006: OpenZaurus 3.5.4 wydany – przez wielu ogłoszony najlepszą wersją
● Czerwiec 2006: OpenZaurus 3.5.4.1 wydany – wszystkie modele wspierane
● Sierpień 2006: Pierwsza testowa wersja OpenZaurusa z kernelem 2.6 dla SL-5600 i SL-
6000
● Wrzesień 2006: Założyłem własną firmę „HaeRWu” zajmującą się konsultacjami
związanymi z OpenEmbedded
2 2006.10.18 OpenEmbedded. Wprowadzenie
3. „HaeRWu” Marcin Juszkiewicz
Czym jest OpenEmbedded?
● 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 tworzącym systemy plików gotowe do użycia na docelowych urządzeniach
● odpowiedzią na dystrybucje wymagające 200 MiB dysku na podstawowy system
3 2006.10.18 OpenEmbedded. Wprowadzenie
4. „HaeRWu” Marcin Juszkiewicz
Historia
● 2001: Sharp wypuszcza na rynek swego pierwszego LinuxPDA: Sharp Zaurus SL-5000
● 2002: Chris Larson zaczyna prace nad własną dystrybucją o nazwie „OpenZaurus”
● 2002-2003: Buildsystem używany przez developerów (buildroot) staje się coraz
bardziej niewygodny przy dodawaniu nowych pakietów i urządzeń
● Styczeń 2003: Dyskusje nad nowym systemem do budowania oprogramowania – ma
być niezależny od dystrybucji 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 będącego ostatnią
wersją zbudowaną przy użyciu poprzedniego systemu
● Maj 2004: Marcin Juszkiewicz dołącza do teamu OpenEmbedded
● Grudzień 2004: OpenEmbedded zostaje podzielony na BitBake i metadane
● Lipiec 2005: OpenEmbedded przechodzi z BitKeepera na Monotone
4 2006.10.18 OpenEmbedded. Wprowadzenie
5. „HaeRWu” Marcin Juszkiewicz
Możliwości OpenEmbedded
● umożliwia budowanie oprogramowania i całych dystrybucji
● automatyczne generowane zależności pomiędzy pakietami
● obsługa kompilacji skrośnej
● niezależność od dystrybucji i architektury
● umożliwia definiowanie dowolnej liczby zadań w ramach pakietu
● umożliwia kooperację różnych projektów w ramach jednych metadanych
● posiada prosty format pakietów
● budowanie z zależnościami od docelowego urządzenia, dystrybucji, architektury
● duża granulacja pakietów (dokumentacja osobno, lokalizacje osobno)
5 2006.10.18 OpenEmbedded. Wprowadzenie
6. „HaeRWu” Marcin Juszkiewicz
Kto używa OpenEmbedded
Dystrybucje:
● Ångström
● Familiar
● JLime
● Nylon
● OpenOmap
● OpenSlug
● OpenZaurus
Firmy:
● 4G-Systems (Meshcube router)
● AMD
● CELF (Consumer Electronics Linux Forum)
● Dream Multimedia TV (Dreambox DVB settopbox)
● Siemens
6 2006.10.18 OpenEmbedded. Wprowadzenie
7. „HaeRWu” Marcin Juszkiewicz
Wspierane urządzenia
Palmtopy:
● Sharp Zaurus (wszystkie modele poza SL-A300)
● iPaQ h1910, h1940, h3600, h3900, h5400, h2200, hx2000, h4000, hx4700, h6300
● HP Jornada 5xx, 6xx, 7xx
● Nokia 770
● Psion NetBook Pro
● Siemens SIMpad
Routery, serwery plików:
● Linksys NSLU2
●
● Linksys WRT54
● Meshcube
● ASUS wl500g
A także:
● różne devboardy,
● komputery domowe,
● settopboksy (np. Dreambox DVB).
7 2006.10.18 OpenEmbedded. Wprowadzenie
8. „HaeRWu” Marcin Juszkiewicz
Pakiety
Dostępne pakiety:
● toolchainy bazujące na glibc, uclibc
● różne programy przydatne developerom (debugery, testy)
● aplikacje sieciowe, daemony
● X.Org 7.1
● GCC 3.3.x, 3.4.x, 4.1.x
● GPE Palmtop Environment
● Open Palmtop Integrated Environment
● języki programowania takie jak Perl, PHP, Python, Ruby
Ogółem OpenEmbedded zawiera prawie 4000 pakietów co przekłada się na ponad 12000
pakietów gotowych do użycia na docelowych urządzeniach.
8 2006.10.18 OpenEmbedded. Wprowadzenie
9. „HaeRWu” Marcin Juszkiewicz
Przykładowy opis urządzenia
#@TYPE: Machine
#@NAME: OMAP5912 cpu on an OSK board
#@DESCRIPTION: Machine configuration for the OMAP Starter Kit with a 5912
processor
TARGET_ARCH = quot;armquot;
IPKG_EXTRA_ARCHS = quot;armv5tequot;
PREFERRED_PROVIDER_virtual/kernel = quot;linux-omap1quot;
SERIAL_CONSOLE ?= quot;115200 ttyS0quot;
EXTRA_IMAGECMD_jffs2 = quot;--pad --little-endian --eraseblock=0x20000 -nquot;
MACHINE_FEATURES = quot;kernel26 pcmcia usbhostquot;
include conf/machine/include/tune-arm926ejs.conf
9 2006.10.18 OpenEmbedded. Wprowadzenie
10. „HaeRWu” Marcin Juszkiewicz
Przykładowa dystrybucja
#@TYPE: Distribution
#@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+gitquot;
# 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;
10 2006.10.18 OpenEmbedded. Wprowadzenie
11. „HaeRWu” Marcin Juszkiewicz
Przykładowy pakiet
DESCRIPTION = quot;GNU nano (Nano's ANOther editor, or Not ANOther editor) is an enhanced
clone of the Pico text editor.quot;
HOMEPAGE = quot;http://www.nano-editor.org/quot;
LICENSE = quot;GPLv2quot;
SECTION = quot;console/utilsquot;
DEPENDS = quot;ncursesquot;
SRC_URI = quot;http://www.nano-editor.org/dist/v1.3/nano-${PV}.tar.gz
file://glib.m4quot;
inherit autotools
do_configure_prepend () {
install -m 0644 ${WORKDIR}/glib.m4 m4/
}
11 2006.10.18 OpenEmbedded. Wprowadzenie
13. „HaeRWu” Marcin Juszkiewicz
Dziękuję za uwagę
Marcin Juszkiewicz
e-mail: haerwu@haerwu.biz
http://blog.haerwu.biz/
13 2006.10.18 OpenEmbedded. Wprowadzenie