Hirdetés

2024. április 23., kedd

Gyorskeresés

Hozzászólások

(#43) tzl


tzl
senior tag

ROM-csere után, ha még nem elég a mókolásból

A telefonon nem csak ROM-ot lehet cserélni, de a ROM-ba is bele lehet mászni, akár egészen meglepő mélységekig is. Ehhez három dologra van szükség. Legelőször is az Android SDK-ra, ami letölthető innen

Másodszor szükséges hozzá az ASH shell bizonyos szintű ismerete, harmadszor pedig némi elszántság.
Az Android a csillivilli JAVA felület alatt ízig-vérig linux, ezért nem árt megismerkedni néhány linuxos alapfogalommal.

Az első, és legfontosabb infó az, hogy a gyökér itt nem sértés :) Gyökérnek hívják a fájlrendszer kezdő mappáját (mint windows alatt a C:\ vagy D:\). A különböző meghajtók és azok partíciói nem kapnak egyedi azonosítót (mint win alatt a C:\ vagy D:\), hanem egyetlen struktúrába kerülnek csatolásra (mountolás). Például, ha van egy 200 gigás hdd-d és azon két partíciód, az egyik a rendszernek (50 GB), a másik az adataidnak (150GB), akkor win alatt lesz egy 50 gigás C:\ és egy 150 gigás D:\ meghajtód. Linux alatt ez úgy fog kinézni, hogy lesz egy 50 gigás / (azaz gyökér) és azon belül lesz egy 150 gigás home könyvtár /home. És igen, itt a következő fontos dolog, a könyvtárakat nem backslash (\), hanem sima per (/) választja el egymástól. Tehát ami win alatt: C:\Documents and settings\Júzernév\Dokumentumok, az linux alatt /home/Júzernév/Dokumentumok. A következő fontos infó, hogy a rendszer “case-sensitive”, vagyis, a windowssal ellentétben a C:\programok és C:\Programok nem ugyanazt a mappát jelöli, hanem két különbözőt. Ez mindenre igaz, tehát a fájlokra és parancsokra is! A használható parancsokat egyébként a /system/bin könyvtárban lehet megtekinteni.

És akkor most a sok elmélet után csapjunk bele a lecsóba!

Az első teendő az időközben letöltött Android SDK telepítése. A telepítés után az android-sdk mappában lesz egy platform-tools nevű mappa, ebben található az ADB azaz az Android Debug Bridge, ami lehetővé teszi, hogy a telefonban levő parancssoros felületet elérjük számítógépről. (A parancssoros felület elérhető a telefonról is, ha telepíted az Android Terminal Emulator appot a marketről, de mennyivel egyszerűbb a számítógép billentyűzetén pötyögni, mint a telefonon).

Mielőtt a telefont csatlakoztatnánk a számítógéphez, be kell kapcsolni az USB Debugging opciót, ez a Settings - Applications - Development menüpont alatt található.
Miután a telefont csatlakoztattuk a számítógéphez, nyitni kell egy parancssort (win - Start menü, futtatás és oda be kell írni, hogy cmd, linux - nyiss egy terminált), majd a parancssorban elnavigálni a fentebb már említett mappába (win - pl: C:\Program Files\android-sdk-windows\platform-tools\ | linux - /home/usernév/android-sdk-linux/platform-tools/).
A megfelelő mappában adjuk ki a következő parancsot:
win: adb devices | linux: ./adb devices
A továbbiakban nem írom le külön a linux verziót, aki linuxot használ, írja be az adb elé mindig, hogy ./

Ha ezt látjuk a parancs kiadása után:
List of devices attached
123456cd7891 device

Akkor az ADB látja a telefont.
Ha mégsem látná, ellenőrizzük, hogy bekapcsoltuk-e az USB debugging módot, továbbá win esetében, hogy a motorola driverek megfelelően telepítve vannak-e.

Az ADB használatáról bővebb információt itt találtok, pl. a push és pull használatáról , úgyhogy ezt nem részletezném, koncentráljunk a telefon parancssorának elérésére.

adb shell parancsot kell kiadni (linux, emlékeztek, ./adb shell), amire válaszul a képernyőn megjelenik egy $ jel (vagy egy #). Ez azt jelenti, hogy már a telefon parancssorában vagyunk.
Amennyiben $ jel jelent meg, írjuk be, hogy su,
ezzel kérünk rendszergazdai jogosultságot (ehhez természetesen rootolt telefon kell)
$su
#

És már garázdálkodhatunk is a telefonon.

Ha rendszerfájlokat akarunk módosítani, (pl. betűtípust cserélni), akkor a rendszermappát írható módon kell újracsatolnunk, mert alapból csak olvasható módon van.

#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

a mount parancs felcsatolja a meghajtót, a -o az opciókat jelenti, azaz rw, mint read-write, és remount, tehát a felcsatolt meghajtót csatolja újra a megváltozott jogosultsággal. -t, azaz tipus, yaffs2, yet another flash file system 2, ez a meghajtó fájlrendszerének tipusa, mint win esetében a fat vagy az ntfs, a /dev/block/mtdblock3 az a partíció, ami a rendszerfájlokat tartalmazza, amit a /system mappába csatolunk fel.
És akkor innentől extrém óvatosság és körültekintés kötelező, mivel közvetlenül a telefon romjában dolgozunk, ha valamit törlünk, nem lehet utána visszaállítani (hacsak le nem mentettük előtte, lásd a linkelt leírás adb pull részét).

És hogy mire jó a parancssor? Például könnyen lecseréllhető a telefon által használt betűtípus más, szabadon választott betűtípusra.
Keresni kell egy neked tetsző Sans betűtípust, majd a sima ttf-et átnevezni DroidSans.ttf-re, a bold változatot pedig DroidSans-Bold.ttf-re (kisbetű, nagybetű fontos, számít!)
Ha ez kész, akkor a két ttf-et rá kell másolni az sd-kártyára egy fonts nevű mappába (vagy ahová akarod, csak akkor módosítsd az elérési útvonalát megfelelően).
Miután rámásoltad, átállítod az usb-módot csak töltésre (ez fontos, hogy a telefon lássa az sd-kártyát), majd jöhet az adb shell, ott a su és ha már #-et látsz, akkor ezek sorban:

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
chmod 4577 /system/fonts/DroidSans.ttf
chmod 4577 /system/fonts/DroidSans-Bold.ttf
dd if=/system/fonts/DroidSans.ttf of=/sdcard/fonts/DroidSansBackup.ttf
dd if=/system/fonts/DroidSans-Bold.ttf of=/sdcard/fonts/DroidSans-BoldBackup.ttf
dd if=/sdcard/fonts/DroidSans.ttf of=/system/fonts/DroidSans.ttf
dd if=/sdcard/fonts/DroidSans-Bold.ttf of=/system/fonts/DroidSans-Bold.ttf
reboot

A mountról már beszéltünk, a chmod a fájl jogosultságait állítja át, hogy felülírható legyen. A dd a bemeneti fájlt (if=input file) másolja a kimeneti fájlba (of=output file), vagyis először a ttf-ről csinálunk egy mentést backup néven, ebből később bármikor visszaállítható az eredeti betűtípus, majd az új ttf-eket az sdkártyáról bemásoljuk a rendszer megfelelő mappájába, ezzel felülírva az eredetit. A reboot parancs pedig újraindítja a telefont.

Vagy másik példa, a zöld lencsés defy kicsit túltömöríti a képeket. A tömörítés mértéke csökkenthető, ha ezt a fájlt lecseréljük a rendszerben. A letöltött mot_ise_imager_cfg.bin fájlt felmásoljuk az sd-kártyára, aztán adb shell:

#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
chmod 4577 /system/etc/mot_ise_imager_cfg.bin
cp /system/etc/mot_ise_imager_cfg.bin /sdcard/mot_ise_imager_cfg_backup.bin
cp /sdcard/mot_ise_imager_cfg.bin /system/etc/
mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
exit
exit

a cp az másol, kiváltható vele a dd. a második mount azért kell, mert nem indítjuk újra a telefont, ezért a system könyvtárat újra fel kell csatolni csak olvasható (ro - readonly) módon.

Ugyanez a feladat egyébként megoldható shell nélkül is az adb pull és push parancsokkal.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.