Ve středu se mi povedlo na Palm LifeDrive a Palm Tungsten|T5 [1] nabootovat OpenBSD. Aktuální stav je takový, že funguje framebuffer [2] a to je asi vše. Bylo potřeba upravit bootloader Cocoboot [3] aby uměl relokovat a zavádět ELF binárky (OpenBSD jádro nemá, na rozdíl od linuxového, dekompresor [4]). Link na stránky projektu zastřešujícího portování svobodných operačních systémů na zařízení Palm je hackndev.com: původní zpráva a ELF loader v Cocobootu.
PS: distorze framebufferu a jeho rotace už jsou opraveny.
Vysvětlívky:
1] Kapesní počítače zn. Palm
2] Kapesní počítače nemají grafickou kartu, poskrovnu jich má grafický akcelerační chip (není případ palmů), čili hodně zjednodušeně se kreslí „přímo do videopaměti“
3] Bootloader, který vykopne PalmOS (původní, výrobcem dodávaný OS pochybné kvality) z paměti a pak něco dělá (buď skočí na linuxové jádro nebo provede výše zmíněnou relokaci a skočí na entrypoint [pokračuj na 4ku])
4] Bootování linuxu funguje zjednodušeně nějak takhle: zImage má na začátku sebe sama dekompresor ⇒ bootloader natáhne zImage někam do paměti a skočí na jeho začátek, tady práce zavaděče končí ⇒ dekompresor udělá svou práci, rozhází linuxové jádro po paměti kam potřebuje a skočí na vstupní bod.
Bootování jádra OpenBSD je jiné. Bootloader natáhne jádro do paměti, přečte si, kam je potřeba umístit jednotlivé jeho části (to je napsané na začátku – ELF program header, viz. originální články, gabi41.pdf) a rozhází je tedy na správná místa. Jakmile je toto hotovo, skočí se na vstupní bod. Práce zavaděče tedy končí až tady