Operační systém
Hned na začátku dnešního povídání musím říci, že Linux není jediný alternativní operační systém pro handheldy iPAQ. Jsou tu ještě například systémy Savaje (Java) či Inferno (Plan 9). Co se týká Linuxu, i zde je možností více:
- Familiar Linux je v zásadě pilířem Linuxu na strojích iPAQ. Jeho vývoj je přímo podporován Compaqem (byť ten se k tomu, pravděpodobně díky Microsoftu, příliš otevřeně nehlásí), a to především vývoj klíčových částí, bootloaderu a kernelu. Vystačí si s jakýmkoliv základním modelem iPAQu.
- Intimate Linux je vlastně upravená varianta plné distribuce Debian/ARM Linux. Kvůli tomu však k provozu potřebujete navíc nějaké vysokokapacitní médium (typicky microdrive nebo PCMCIA harddisk). Ke startu tohoto systému se používá předchozí Familiar Linux.
- PIXIL PDA je původním prostředím společnosti Century, které používá vlastní grafické rozhraní Microwindows.
- LISA mLinux je produktem německé firmy LISA, která jako jediná přímo dodává iPAQy s předinstalovaným Linuxem. Používá rozhraní Qtopia.
- Pocket Linux je distribuce společnosti Transvirtual Technologies, dnes již zcela opuštěná. Uvádím ji jen pro úplnost a nehodlám se k ní blíže vyjadřovat (instalaci nedoporučuji).
Dále se budu zabývat již pouze distribucí Familiar Linux (aktuální verze je 0.5.1), kterou používám a osobně ji považuji za nejlepší variantu (ano, Intimate by byl ještě lepší :-) ).
HH Bootloader
(HandHelds) Bootloader není sice přímou součástí systému Linux, ale rozhodně je součástí klíčovou. Je to velice sofistikovaná věcička, jejíž možnosti více připomínají dříve používané programy typu „monitor“ než nějaký obyčejný zavaděč. Po připojení se k němu pomocí sériového kabelu a terminálového programu vám umožňuje přes své rozhraní (příkazový řádek) provádět množství různých operací. Mezi nejdůležitější patří mazání a zápis Flash ROM a logicky také bootování Linuxu i Windows CE. Díky jeho možnostem bych osobně doporučil jeho instalaci právě i uživatelům Windows CE, například pro bezpečnější upgrady/downgrady operačního systému s možností případné rekonstrukce, a to s použitím pouze sériového kabelu.
Splash screen bootloaderu
Kernel řady 2.4.x
vychází se standardního jádra pro platformu ARM Russela Kinga. Specifické patche pro hardware IPAQu, označované jako -hh (handhelds), jsou z velké části dílem CRL (Cambridge Research Laboratory, vývojové středisko Compaqu). Jedná se například o podporu framebufferu (‚/dev/fb‘), což je u iPAQu jediné rozhraní pro zobrazování, podporu touchscreenu (‚/dev/touchscreen‘), hardwarových tlačítek či přídavných hardwarových modulů. Kernel je kompilován s podporou devfs filesystému (‚/usr/src/linux/Documentation/filesystems/README‘ ve standardním kernelu), což přináší systému s omezenými prostředky značné výhody. Na druhou stranu chvíli trvá, než si zvyknete na to, že všechna zařízení nenajdete přímo v ‚/dev‘, ale až v příslušném podadresáři (tzn. že například první sériový port najdete jako ‚/dev/tts/0‘). Zpětná kompatibilita programů se většinou řeší pomocí linků vytvořených v ‚/dev‘. Pro nejpoužívanější zařízení se vytváří příslušné linky při každém startu systému.
Takto iPAQ bootuje, pokud vypnete přesměrování systémové konzoly na sériový port
Souborové systémy (mimo devfs)
Root filesystém je logicky uložen v interní Flash ROM. Na začátku vývoje Familiar Linuxu se tato složitě dělila na několik různých kousků s různým účelem a různými souborovými systémy (raw partition pro bootloader, raw partition pro bootovací parametry kernelu, raw partition pro kernel, cramfs komprimovaná read-only partition pro část systému, …), postupem času však došlo k zjednodušení až na současné dva oddíly – 256kB raw partition pro bootloader a zbytek pro root filesystém. Ten nyní používá souborový systém JFFS2, který byl mezitím vyvinut. Samostatné raw oddíly pro kernel a jeho parametry již nejsou zapotřebí, protože do HH Bootloaderu byla doplněna podpora pro přímé čtení JFFS2.
JFFS2 je zkratkou z „Journaling Flash Filesystem version 2“. Tento souborový systém je speciálně navržený pro Flash ROM paměti a embedded zařízení. Hlavními výhodami je implementace gzip komprese a především řešení omezené životnosti Flash ROM (tzv. wear leveling). Díky speciálnímu algoritmu, jehož popis přesahuje rámec tohoto článku, dochází k omezení četnosti mazání bloků Flash ROM paměti a navíc k jeho rovnoměrnému rozložení přes celou její kapacitu, a to včetně oblastí se statickými daty. Tím se výrazně zvyšuje životnost Flash ROM.
Dalším způsobem omezení zápisů do Flash ROM a současně i šetření její kapacitou je ramdisk, do kterého jsou přimountovány adresáře ‚/tmp‘ a ‚/var‘. Ramdisk používá souborový systém tmpfs a standardně je nakonfigurován tak, že používá polovinu fyzické RAM systému. V případě potřeby se sám dynamicky roztáhne. Můžete ho také použít k ukládání aplikací a dat, ale musíte počítat s tím, že jeho obsah nepřežije první reboot. Řešením je použití nvrd (Non Volatile Ram Disk). Oproti předchozímu má pevnou velikost, jeho obsah přežije reboot a nemá svůj vlastní souborový systém (většinou se formátuje na ext2). Tento ramdisk však zatím není standardní součástí distribuce.
Pro CompactFlash/PCMCIA média se používají především souborové systémy vfat, již zmíněný ext2, ext3 a reiserfs. První ze jmenovaných si pravděpodobně vybere ten, kdo chce svou CF kartu paralelně používat i v jiném zařízení (digitální fotoaparát), či chce „zůstat kompatibilní“ a nevadí mu absence atributů UNIXových souborových systémů. Naopak reiserfs je z důvodu velikosti žurnálu vhodný pouze pro velkokapacitní média (microdrive).
Co se týká síťových souborových systémů, v instalačních balíčcích jsou dostupné moduly pro NFS a SMBFS (klient i server).
IPK balíčky
Protože handheldy obecně mají velmi omezené systémové prostředky, byl pro Familiar Linux vyvinut minimalistický ipkg – „Itsy Package Manager“, který používá balíčky ve vlastním formátu .ipk. Tento formát vychází z formátu .deb a již ho převzal například i handheld Sharp Zaurus. Instalace .deb balíčků je podporována rovněž.
Grafické rozhraní aneb X window system vs. Qtopia
Jako grafické rozhraní Familiar Linuxu můžete používat buď jeho „nativní“ grafické rozhraní X window, anebo „konkurenční“ Qtopia.
iPAQovský X server je minimalistická verze standardního XFree86 serveru verze 4.1 pro framebuffer, což přináší obrovskou výhodu v kompatibilitě aplikací. O aplikacích pro X window system i jejich kompatibilitě si více povíme v příštích dílech.
Speciální možností provozu X windows je současná instalace VNC X serveru a fbvnc vieweru. Virtuální obrazovka pak může mít vyšší rozlišení, než je fyzické rozlišení iPAQu, a vy se můžete dívat na výřez a/nebo zmenšeninu. Po jistou dobu jsem si tuto možnost velice oblíbil.
X window prostředí
Prostředí Qtopia (a jeho varianta OPIE), jak je zřejmé už z názvu, vychází z knihoven Qt a používá přímo framebuffer iPAQu. Díky tomu je jeho použití omezeno pouze na aplikace psané přímo pro něj (pokud tedy nebudu uvažovat konzolové aplikace). Já osobně jsem prostředí Qtopia před delší dobou asi týden provozoval a poté jsem se opět vrátil ke klasickým X window. Osobně jsem si tím ještě více posílil svou averzi vůči čemukoliv, co nějak souvisí s Qt či KDE. Musím však uznat, že pokud jde někomu o pěkný vzhled, PIM aplikace či Konqueror, a nevadí mu nemožnost spouštět programy pro X window, dá Qtopii pravděpodobně přednost. Toto prostředí používá i Sharp Zaurus.
Qtopia prostředí
Pokud máte dostatek flash paměti, můžete si nainstalovat obě prostředí současně a podle potřeby mezi nimi přepínat. Také již existuje možnost spustit VNC X server a na obsah jeho obrazovky se dívat VNC viewerem z prostředí Qtopia. Novinkou jsou pak práce na portaci Qtopia prostředí pod X window system.
Instalace Familiar Linuxu
Prvotním úkolem při instalaci téměř všech alternativních operačních systémů do iPAQu je výměna bootloaderu v prvním bloku paměti Flash ROM. (Výjimka se týká bootloaderu RedBoot společnosti Red Hat, který nějakým způsobem koexistuje se stávajícím, tzv. parrot bootloaderem. O něm však nemám bližší povědomost.). Tato operace je nejkritičtější částí instalace. Původní bootloader je nejprve vymazán a vzápětí je zapsán nový. Pokud se mezi těmito dvěma operacemi něco stane, máte „cihlu“ aneb „nejdražší těžítko na světe“ (přepis v konferenci používaných termínů „bricked iPAQ“ a „paperweight“). Vdechnout nový život mu pak dokáže pouze vývojové středisko Compaqu v USA, které to prozatím naštěstí dělá zcela zdarma. Bootloader se potom v paměti Flash ROM zamkne a tím se sám brání proti přepsání. Postupem času se operace výměny bootloaderu natolik zjednodušila, že počet zničených iPAQů se blíží nule (přesněji řečeno, zničený iPAQ byl většinou následkem snahy o návrat k Windows CE, to je však dnes již také uspokojivě vyřešeno). Zkráceně platí, že dokud máte funkční bootloader, vylíže se váš iPAQ z jakýchkoliv softwarových problémů.
Součástí software pro výměnu bootloaderu je i nástroj pro kompletní zálohu Flash ROM pro pozdější obnovení původního operačního systému. (Jak jsem se krátce zmínil v předchozím dílu, absolutní novinkou je dualboot z externího média. Zde vám potom stačí vyměnit pouze bootloader a Windows CE zůstanou na svém místě.)
Dalším krokem je instalace základního image operačního systému Familiar Linux. Ta spočívá v přenosu obrazu root filesystému JFFS2 po sériovém kabelu (chvilku to trvá) xmodem protokolem do paměti RAM, odkud je vzápětí zapsán do Flash ROM. Znovu opakuji, že bez sériového kabelu (či kolébky) se neobejdete. V případě, že máte pouze USB kolébku, musíte si dokoupit „Serial Autosync Cable“, či si kolébku „hacknout“.
V tomto okamžiku již sice máte ve Flash ROM root filesystem s funkční základní instalací Familiar Linuxu, ale zatím není k dispozici žádné grafické rozhraní. Po bootu se na tedy na LCD displeji můžete pouze kochat klasickým framebufferovým tučňákem a blikajícím kurzorem. Systémová konzola je přesměrována na sériový port, kde můžete terminálovým programem sledovat start systému (první start chvíli trvá, generuje se klíč pro SSH) a po jeho dokončení se poprvé přihlásit.
Nyní je důležité nějakým způsobem připojit iPAQa do internetu, kde se nachází zbývající instalační balíčky (ty si samořejmě můžete předem stáhnout a instalovat pak z vlastního webserveru či lokálně). Základem je ppp (přes sériový port) či USB připojení. Vybavenější mohou použít ethernet či wireless adaptér. Před započetím instalace balíčků vám ještě zbývá se rozhodnout, zda dáte přednost standardnímu X window systému, či raději Qtopia prostředí.
Pro zjednodušení výběru balíčků existuje několik tzv. ‚task‘ balíčků, které neobsahují žádné soubory, ale pouze závislosti. Například balíček task-x se postará o instalaci všech potřebných komponent systému X window.
Na závěr popisu instalace se zmíním o drobné zajímavosti, a sice scriptu ‚/root/postinst‘. Ten je možno spustit v podstatě kdykoliv během instalace. Většinou se spouští ihned po zprovoznění internetového připojení a nebo na samý závěr. Co udělá? Jednak sesynchronizuje hodiny prostřednictvím protokolu NTP (hodiny doporučuji zkontrolovat ihned po prvním bootu, brblání ipkg/taru o souborech z budoucnosti není zrovna příjemné), ale především se spojí se serverem Microsoftu (ano, čtete dobře!), odkud si stáhne a nainstaluje několik TrueType fontů, které jsou v malých bodových hodnotách výrazně lépe čitelné než fonty jiné. Z licenčních důvodů nebylo možné tyto fonty zahrnout do .ipk balíčku.
Tím dnešní povídání končím a těším se na vás v dílu příštím, ve kterém se již podíváme na software (nejprve na ten bližší systému – window managery či programy pro vstup dat).