2012. április 4., szerda

Compile: tun.ko modul

Folytatva a tegnap elkezdett - nevezzük sorozatnak -, tovább mélyedtem a C660 Cyanogenmod rejtelmeibe. Hirtelen ötlettől vezérelve - és mert nem találtam más használható megoldást - fordítottam egy kernel modult.
Előzetesként annyit, hogy szerettem volna vpnc klienst használni (VPNC Widget), de tun.ko kernel modul hiányában nem tudtam életre kelteni. Kutatásaim során eljutottam a tun.ko installer applikációhoz, ami arra hivatott, hogy telepítse, illetve betöltse a megfelelő modult a telefonhoz. A weboldal szerint támogatva van a Cyanogenmod-ot futtató C660 is. Természetesen ez a megoldás nem működött, ugyanis a letöltött modul kernel pánikot okozott és minden egyes vpn indításkor újraindította a telefont.
Ekkor jött az ötlet, hogy mi lenne ha megpróbálnék fordítani egy saját tun.ko modult.

Ami kell hozzá:

- Linux (én ezt használom, de működhet Windows-on is) - Ubuntu 10.04 LTS
- Az LG specifikus CM kernel forrása
- Code Sourcery ARM EABI Toolchain
- Egy erős gép vagy sok türelem :-)

1. Szerezzünk egy kernel forrást. A fent hivatkozott link-en található az LG specifikus CM kernel Git repository-ja. Egyszerűen kattintsunk Downloads linkre és töltsük le forrást (~100MB)

2. Telepítsük az arm C++ fordítót. Letöltve a .bin kiterjesztésű linux-os telepítőt, majd ezt elindítva tehetjük meg. Fordítás előtt még szükséges beállítani a compiler-t:

export CCOMPILER=[extraction directory]/bin/arm-none-eabi-

3. Lépjünk be a kernel forrás root könyvtárába:

cd ~/Fejlesztés/android/kernel/CyanogenMod-lge-kernel-msm7x27-40c44bb

4. Kell szereznünk egy megfelelő config-ot amit legegyszerűbben az éppen futó telefonról tehetjük meg:

adb pull /proc/config.gz /home/user_name/android/kernel/cm-kernel/config.gz
zcat config.gz > .config

5. Most már minden készen áll arra, hogy konfiguráljuk a kernel forrását:

 make ARCH=arm CROSS_COMPILE=$CCOMPILER menuconfig

Ha ennél a pontnál hibaüzenetet kapunk, valószínűleg nincsenek telepítve a fejlesztéshez szükséges csomagok. Tehát:

sudo apt-get install build-essential libncurses5-dev

6. Innentől olyan mintha egy akármilyen linux kernelét konfigurálnánk.
Device drivers --> Network device support --> Universal TUN/TAP device driver support
Itt nyomjunk egy 'M'-et, hogy modulként készítse el a fordító. Ha ezzel megvagyunk exit és save configuration.

7. A kernel fordítása:

make ARCH=arm CROSS_COMPILE=$CCOMPILER -j`grep 'processor' /proc/cpuinfo | wc -l`

8. Ha hiba nélkül lefut, akkor a kész tun.ko modult a kernel-source-dir/drivers/net könyvtárban találjuk.


A modul telepítése:

adb push tun.ko /sdcard
mount -w -o remount /system
cp /sdcard/tun.ko /system/lib/modules/
mount -r -o remount /system

Reboot után élvezhetjük a friss, ropogós tun.ko modult. :-)

2012. április 3., kedd

LG Optimus Pro - Magyar fizikai billenytűzet kiszotás CM alatt.

Megvettem életem első (na jó második, ha az Xperia X10 Mini Pro-t is számolom) full querty billentyűzetes Androidos telefonját.
Természetesen a gyári ROM-nak vannak hiányosságai. Például az egyik legidegesítőbb, hogy 10 percenként feldob egy ablakot, hogy "Kevés a rendszermemória".
Mivel nagy CyanogenMod rajongó vagyok, feltettem a legfrissebb CM 7.2RC1-et ami a C660-ra készült. Vannak hiányosságai, de használható, stabil és jobban kihasználja a rendelkezésre álló kevés memóriát.
A legfontosabb "hiba" amit javítottam a fizikai billentyűzet kiosztása, ami alapból angol querty.

A következőt csináltam:
- Fogtam a nandroid backup-ot amit az eredeti LG ROM-ról csináltam és kimásoltam az system.img-ből a következő fájlokat: kbd_pp2106.kcm.bin és kbd_pp2106.kl. Az előbbi a key kódokat, míg az utóbbi a tényleges kiosztást tartalmazza.
- Biztonsági mentést csináltam a meglévő fájlokról és "telepítettem" az új magyar kiosztást tartalmazó fájlokat.
mount -w -o remount /system (hogy tudjunk írni a ROM-ba)
cd /system/usr/keychars/
cp kbd_pp2106.kcm.bin kbd_pp2106.kcm.bin.orig
cp /az_uj_fileok_helye/kbd_pp2106.kcm .
cd /system/usr/keylayout/
cp kbd_pp2106.kl kbd_pp2106.kl.orig
cp /az_uj_fileok_helye/kbd_pp2106.kl .

- Reboot után máris élvezhetjük a rendesen működő magyar kiosztású fizikai billentyűzetet.

A fájlok elérhetők itt.