Már nagyon vártam az aktuális havi Linuxvilág megjelenését, mert az előzetesek szerint a Linux és a PDA-k kapcsolatát fogja feszegetni az egyik írás. Korábban már olvastam és érdeklődtem a témával kapcsolatban, sajnos kevés sikerrel. PDA-ra a legelterjedtebb – és talán ezidáig egyetlen – disztribúció a Familiar Linux. A Familiar Project egy elég kiforrott és aktív project, számomra csak egy probléma van vele: nemes egyszerűséggel a Familiar jelenleg "csak" az iPAQ 3100, 3600/3700, 3800, 3900, 5100/5400/5500 szériáit, a HP Jornada 565/568 és 720 szériáit valamint a Sharp Zaurus SL-5500/SL-5600, SL-6000, SL-C750/SL-C760/SL-C860 szériáit támogatja, nekem viszont egy iPAQ 1940-es kézikütyüm van.

Megérkezett a legfrissebb Linuxvilág és már kerestem is a cikket, mely a PDA-Linux házasításról szól. Megtaláltam, és el kellett, hogy keseredjek. Bár a cikk nagyon érdekes, nekem sajnos nem segített, ugyanis a szerző az előbb említett disztribúcióval foglalkozik és egy támogatott iPAQ-el. Nos sebaj. Fel a fejjel és irány a Google. Lássuk van-e valami fejlemény iPAQ 1940 és Linux ügyben…

Nos, a Handhelds.org-on találtam egy kezdeményezést a 1940-es szériára, de fel van tüntetve, hogy "Work in progress", vagyis "Folyamatban…". Az oldal linkjeit végigjárva azonban beleütköztem egy oldalba, amely a kezdéshez megfelelőnek ígérkezett. Az oldal címe: iPAQ 1930/1940 adventures. Na ez az, amit már régóta kerestem. A site foglalkozik az OpenEmbedded-el és tartalmaz néhány előre lefordított kernel image-et különböző célokra:

  • SSH: ezen image segítségével SSH protokollon keresztül kapcsolódhatunk a PDA-hoz.
  • NFS Root: ez az image felcsatol a PDA-ra egy előre beállított NFS partíciót, majd arról elindítja a GPE vagy OPIE grafikus felületek egyikét.

A Bootldr – PDA Boot Loader – jelenleg még nem támogatott a 1940-es gépeken ezért a HaRET – Handheld Reverse Engineering Tool – segíthet abban, hogy működésre bírjuk a Linuxot a PDA-n. A HaRET egy apró, pár száz kilobájtos PDA alkalmazás, amely egy megadott konfigurációs file alapján (alapértelmezésben default.txt) betölti a lefordított Linux kernelt. Egy lehetséges default.txt tartalma:

set MTYPE 347set KERNEL "zImage"set INITRD "initrd"set RAMADDR 0x30000000set CMDLINE "console=ttySAC2,115200n8 root=/dev/ram ramdisk_size=4096 init=/linuxrc panic=30" 

bootlinux

Azonban óvatosan, ugyanis a Linux indítása után minden adat elvész, amely a PDA memóriájában tárolódott. A File Storage és az SD/MMC kártyákon megmarad az adat, de minden más elveszik (elvileg megfelel egy hardware reset-nek). Az első választásom az SSH-s image-re esett. Felmásoltam az iPAQ-ben lévő SD kártyára a megfelelő file-okat ActiveSync-en keresztül, úgy mint: config, default.txt, initrd, zImage és természetesen magát a haret.exe-t. Ez utóbbi exe-t elindítva, fel is ajánlotta, hogy a default.txt-ből fogja venni a beállításokat, majd "Run" és indult a csoda.

Egy pár másodpercre "bezizisedett" a képernyő, majd fekete lett és megjelent a bal felső sarokban a jól ismert és szeretett pingvin. A bootolási folyamat befelyezése után megjelent a "h1940 login:" felirat. A linux konzol nem tartalmaz virtuális billentyűzetet, külső billentyűzet híjján pedig maradt az ssh login. A letöltött image bedrótózva tartalmazza a 192.168.6.2-es IP címet. Szükséges volt tehát a notebook-om IP címét is utánaállítani. Ez azonban csak akkor vált lehetségessé, ha az USB kábelt le, majd visszacsatoltam a notebook-on. Ekkor az ‘ifconfig usb0 192.168.6.1′ parancs kiadásával életre is kelt a hálózati kapcsolat a két eszköz között. A pingre már válaszolt is a PDA, nem volt más hátra mint "besházni" a kis gépre, ami azon nyomban meg is történt. Leteszteltem a fontosabb Linuxos parancsokat, majd mikor meggyőződtem, hogy minden úgy működik mint egy asztali gépen is, célba vettem a GPE grafikus felületet. Ez már egy kicsit harcosabb feladat volt. Letöltöttem az NFS Root image-et és beélesítettem az NFS szervert a notebook-on. Az NFS partícióra kicsomagoltam a gpe-image-ek egyikét amelyet szintén a korábban említett oldalról töltöttem le. A szükséges file-okat felmásoltam az iPAQ-re, majd indítottam a HaRET-et. A bootolási folyamat során a PDA fel is csatolta a megfelelő NFS meghajtót és elindította az ott található GPE grafikus felületet. Ez azonban nem olyan egyszerűen történt, hogy egy mondatban lerendezzem. Az USB kapcsolat – valószínűleg az NFS-nek köszönhetően – állandóan szakadozott, így tehát a notebook-on egy új konzolon folyamatosan pingelnem kellett a PDA-t, hogy lássam mikor szakad meg az elérés, majd mikor ez megtörtént az USB kábelt ki- és vissza dugva – valamint az interfészt az "ifconfig usb0 192.168.6.1" kiadásával ismét felébresztve – figyeltem a betöltési folyamatot. Jó pár perc múlva – az izgalomnak köszönhetően ez inkább óráknak tűnt – megjelent a GPE bejelentkező képernyője.

Sikerült hát életre kelteni egy grafikus felületet is a handheld-en, de be kell látni elveszti a funkcionalitását a PDA, ha egy NFS meghajtó megléte is szükséges a használatához. Jött tehát a nagy ötlet, csatoljuk fel a GPE image-et NFS helyett loopback interface-en keresztül. Ehhez a követketőket kellett tennem: 

  • El kellett készíteni egy GPE image-et a következő módon:
dd if=/dev/zero of=gpe bs=1k count=40kmke2fs -i 1024 -b 1024 -m 3 -F -v gpemount -o loop gpe /mnt/rootfs//file-ok bemasolasa a GPE image-bol a /mnt/rootfs-be umount /mnt/rootfs

Elkészült a gpe file-unk, amely tartalmazza a GPE-t.

  • Módosítani kellett az initrd-ben lévő linuxrc-t:
gunzip -d < initrd > initrd_unzippedmount -o loop initrd_unzipped /mnt/rootfsvi /mnt/rootfs/linuxrc//modositasok elvegzese...umount /mnt/rootfsgzip -9 initrd_uncompressedmv initrd_uncompressed.gz initrd

Az én linuxrc-m így néz ki:

#!/bin/shexport PATH="/bin:/sbin:/usr/sbin"echo "Booting Linux" > /dev/tty1sleep 3echo "Using kernel `uname -r`" > /dev/tty1echo "Configuring usb0 to 192.168.6.2..." > /dev/tty1ifconfig usb0 192.168.6.2echo "Mounting /dev/mmcblk0p1 to /mnt/sdcard..." > /dev/tty1mount /dev/mmcblk0p1 /mnt/sdcardecho "Setting up loop device..." > /dev/tty1losetup /dev/loop0 /mnt/sdcard/gpeecho "Mounting rootfs to /mnt/temproot..." > /dev/tty1mount -t ext2 -o rw /dev/loop0 /mnt/temprootecho "Executing pivot_root..." > /dev/tty1cd /mnt/temprootif [ ! -d initrd ]; then	mkdir initrdfipivot_root . initrdecho "Executing init..." > /dev/tty1exec chroot . /sbin/init dev/tty1 2>&1echo "Unmounting ramdisk..." > /dev/tty1umount /initrd 

Ezzel el is készült a "saját" initrd-m amely már alkalmas arra, hogy egy image-re – jelen esetben a gpe image-re – chrootoljon, majd elindítja annak az init-jét. Nem volt hát más dolgom, csak hátradőlni és élvezni a munkám gyümölcsét…

Azaz mégsem! Ezzel sajnos nem ért még véget a dolog és nem véletlenül volt a Handhelds.org-on a "Work in progress" feltüntetve. A Linuxom ugyanis még nem kezeli a hangkártyát, a bluetooth-t, de ami a legrosszabb: nincs power management és ez amiatt is nagyon problémás mert így nem lehet a rendszert suspend-elni és minden egyes bekapcsoláskor újra kell indítani a Linuxot. Talán egy saját kernel majd megoldja ezeket a problémákat, de egyelőre még nem szántam rá magam, hogy hozzáfogjak.

Voltak kísérleteim az OPIE-vel is, de ezidáig nem jártam sikerrel. Hasonlóan próbákoztam mint a GPE-nél, de egy végeláthatatlan bootolási folyamat veszi kezdetét és a rendszer soha nem indul el. Ssh-n keresztül tesztelve sikerült kicsalnom néhány hibaüzenetet, de még nem fogtam hozzá a megoldás megkereséséhez. Amennyiben sikerül megoldanom, természetesen be fogok róla számolni.

Tagged with:
 

4 Responses to Linux futtatása iPaq 1940-en

  1. Vajnai Viktor szerint:

    Kedves Bali,

    Nekem is van egy Hp Ipaq 1940-es típusú pda-m. Az első és legfontosabb kérdése, hogy honnan lehet letölteniara a linuxot??? Második legfontosabb kérdésem, hogy ha egyszer felrakom rá a linuxot, utána vissza tudom rá rakni az eredeti op-ot???

    Viktor

  2. vbali szerint:

    Viktor: tekintve, hogy a fenti írás pont azt taglalja, hogy honnan/hogyan lehet linuxot varázsolni a 1940-esre így nem igazán értem a kérdésedet, de:

    1. http://anymore.nl/ipaq/files/ címről tölthetőek le a megfelelő image-ek.

    2. A linux közvetlenül nem telepíthető a 1940-es PDA-ra – csupán a letöltött image-ből bootoltatható – így az eredeti oprendszer nem veszik el és bármikor indítható.

  3. Vajnai Viktor szerint:

    Kedves Bali,

    Sikerült feltennem de állandóan leáll kernel panic-kal!!!

    Ilyenkor merre meddig??

    Viktor

  4. Vandlik Mihály szerint:

    ELADNÁM a HP IPAQ h1940 tipusú PDA-mat!
    Tartalék memókártyával,Európa térképpel,teljes autós tartozékokkal,GPS-sel,szép,megkimélt állapot!

MINDEN VÉLEMÉNY SZÁMÍT!

Email cím (nem tesszük közzé) A kötelezően kitöltendő mezőket * karakterrel jelöljük

*

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">