Hlavní navigace

Neo FreeRunner: Linux do kapsy

24. 2. 2009
Doba čtení: 4 minuty

Sdílet

Neo Freerunner je spíš než běžný mobilní telefon v současné době vývojovou platformou. V tomto článku se podíváme na to, jaké možnosti Freerunner dává vývojářům. Je zde uveden také krátký přehled použitelných linuxových distribucí a shrnutí jejich nejdůležitějších odlišností od desktopového prostředí.

V linuxovém světě vládne různorodost a jinak tomu není ani u linuxového telefonu. Dokonce by se možná dalo říci, že je to jeho nejzajímavější vlastnost. Existuje několik distribucí, které mají přímo předpřipravené obrazy root filesystemu: Om 2007.2, Om 2008.*, FSO, SHR,FDOM, Qt Extented, Debian, Gentoo, Android a Hackable:1. Řadu dalších distribucí se podařilo úspěšně na freerunnera naportovat a je možné si je vlastními silami přeložit ze zdrojových kódů. Mezi tyto distribuce patří: NeoPwn, RunningBear, Poky and Sato, PyNeo lead [1].

Bootloader

Předtím než se nastartuje systém, se stará o veškerou funkcionalitu telefonu bootloader. Neo Freerunner se běžně dodává s bootloaderem u-bootem v NAND a NOR paměti. U-boot [2] je na telefonu ve dvou kopiích, protože v případě jeho špatného přeflashování lze telefon oživit jenom pomocí debug boardu.

Při normálním startu telefonu není bootloader nijak vidět a přímo nastartuje operační systém naflashovaný v telefonu. V případě, že chceme naflashovat jinou distribuci nebo nastartovat operační systém z karty, tak pomocí kombinace AUX a POWER tlačítek můžeme zobrazit menu u-bootu (viz. Obrázek 1).

FreeRunner 1

Obrázek 1.: u-boot bootloader.

V pozici alternativního bootloaderu je nyní Qi [3]. V porovnání s u-bootem neobsahuje Qi menu a přenechává složitější věci, jako je inicializace grafické karty, na linuxovém jádře. Automaticky se snaží nastartovat nejdřív systém na µSD kartě a potom až systém v NAND paměti. Signalizace toho, co se právě děje, je vyřešená pomocí LEDek. Qi nabízí až o 40 sekund rychlejší start systému a do jisté míry řeší problémy s úplným vybitím baterie.

Dobrým důvodem k nasazení Qi může být fakt, že u-boot ve výchozím nastavení nepodporuje velká jádra (> 2 MB). Tato možnost se v u-bootu musí explicitně povolit.

Jádro

Nedílnou součástí linuxový distribucí je jádro [4]. OpenMoko distribuce používají Vanilla jádro mírně modifikované pro hardware Nea nebo Freerunera. Modifikace se týkají hlavně periferních zařízení (čtečka karet, gsm modul, akcelerometry). Implementace těchto modulů je přebraná z iPaqu nebo z TomTom GO. Celé jádro se všemi úpravami si každý může zkusit stáhnout z příslušného git repozitáře a přeložit [5].

Momentálně se mluví o dvou hlavních větvích jádra. O stable a vývojové verzi andy-tracking, kterou má na svědomí Andy Green (tedy alespoň její jméno).

Framework

Jednou z nejzajímavějších myšlenek, na které staví hlavně distribuce FSO, je framework, což je daemon, který běží v userspace a má za úkol zprostředkovat aplikacím jednotné „vysokoúrovňové“ rozhraní k hardware. Jak by to mělo vypadat, je znázorněno na obrázku 2.

FSO framework

Obrázek 2.: FSO framework

Konkrétně to znamená, že pro přístup k seznamu kontaktů, příjem sms zprávy či telefonního hovoru program nebude komunikovat přímo s modemem, ale jenom pošle zprávu pomocí dbusu frameworku. Vysokoúrovňovost potom spočívá v tom, že se framework sám rozhodne, jestli je hledaná osoba uložená na sim kartě nebo v interní databázi na sd kartě. Navíc není nutné znát příslušný AT příkaz vztahující se ke konkrétnímu modelu gsm čipu.

Grafické prostředí

I když je backend systému hodně důležitý, člověk přijde do kontaktu nejdřív s uživatelským rozhraním. Protože se jedná o Linux, tak v zásadě není problém na Freerunerovi spustit například KDE 4 [6]. Problém je v tom, že KDE 4 není přizpůsobené pro použití na telefonu, zvláště co se týče paměti a procesoru. Navíc je obrazovka telefonu poměrně malá (480×640). Používaní dotykové obrazovky a absence hardwarové klávesnice vyžaduje velmi odlišný přístup. Problém je konkrétně s pravým tlačítkem myši, které není v současné době nijak emulované. Pro pohodlné ovládání prsty jsou potřeba větší tlačítka, atd.

Co se týče technologie, lze používané přístupy rozdělit do dvou skupin. Na rozhraní používající vykreslování přímo do framebufferu nebo používající X Server. Použití framebufferu se pozitivně odráží na rychlosti celého zařízení naopak použití X Serveru umožňuje spuštění prakticky libovolné linuxové aplikace, aniž by bylo nutné ji celou překopat.

FreeRunner systém  FreeRunner systém  FreeRunner systém  FreeRunner systém

Obrázek 3.: Screenshoty různých distribucí. (zleva Om 2007.2, FSO, Qt Extended, Google Android)

Do první skupiny lze zařadit Qt Extended a Androida. Qt Extended je poměrně zralá distribuce pro handheldy
a mobilní telefony postavená na toolkitu Qt. Android je na druhou stranu poměrně nová věc, která se
snaží stavět na svém vlastním javovém frameworku.

Do druhé skupiny patří distribuce Openmoko Distribuce, přičemž Om 2007 využívalo vlastní rozhraní založené na GTK (toolkit qt nebyl součásti Om2007). Naproti tomu Om 2008.x, FSO a SHR využívají Enlightenment window manager.

Aplikace

Z předchozí informací o GUI a Frameworku celkem vyplývá, že aplikace mezi jednotlivými distribucemi nemusí být vždy přenositelné a to buď z důvodu použitého toolkitu nebo přílišné provázaností s hardware. Detailní popis jednotlivých aplikací je mimo možnosti tohoto článku, přehled schopností jednotlivých distribucí je shrnutý v [7].

UX DAy - tip 2

Smutným faktem bohužel je, že aplikace pro telefonování a psaní sms v žádné ze zmíněných distribucí nejsou v ideálním stavu. Prakticky jedinou hotovou distribucí použitelnou pro běžného smrtelníka je Qt Extended 3.4, která ovšem nemá webový prohlížeč ani mapový software. Novější Qt Extended tyto programy už má, ale pro změnu trpí jinými nedostatky.

Reference

[1] http://wiki.o­penmoko.org/wi­ki/Distributi­ons
[2] http://wiki.o­penmoko.org/wi­ki/Bootloader
[3] http://wiki.o­penmoko.org/wi­ki/Qi
[4] http://wiki.o­penmoko.org/wi­ki/Kernel
[5] http://lists.o­penmoko.org/nab­ble.html#nabble-td2116807
[6] http://www.you­tube.com/watch?v=ky-gbF1rgb4
[7] http://wiki.o­penmoko.org/wi­ki/Distributi­ons#Features_by_dis­tribution.2Fre­lease_target

Byl pro vás článek přínosný?

Autor článku

Vystudoval Fakultu Informačních Technologií VUT v Brně a pracuje jako programátor v GreyCortexu. Pořádá OpenAlt, pilotuje ultralehká letadla a přispívá do různých open-source projektů.