2024. május 3., péntek

Gyorskeresés

Csináld magad akció CWM gyártásra (MTK657x, MT658x)

Írta: |

[ ÚJ BEJEGYZÉS ]

Csináld magad akció MTK657x CWM recovery-re!

De csak akkor csináld, ha biztos vagy benne, hogy akarod.
Veszélyes művelet tud lenni!

Ez nem CWM forrásból készített új CWM lesz, hanem egy meglévő CWM és gyári recovery szétbontásával és módosításával, majd újra összerakásával nyert CWM recovery !

Hozzávalók:
- Telefon és mikro-usb kábel, számítógép
- Türelem és olvasásra való hajlandóság
- Hexa és decimáis számok átváltási ismerete vagy Flashtool használata readback módban
- Linux (mert a win-t nem tudom, hogyan kell erre használni) + perl 5.15-ös verzió (kisebb verziónál is van lehetőség mókolni egy kis trükkel – perlbrew)
- Mtktools szkriptek, Bruno Martins tollából a github-ról
- Egy, már meglévő és működő CWM. (lehet ez 5.5.0.4, 6.0.1.2, 6.0.2.8, 6.0.3.2), mint alap
- Scatter file, ha a flashtool readback opcióját szeretnéd használni a gyári recovery kinyerésére.
- Blokktérkép (/proc/dumchar_info fájl tartalma)
- A telefon /system/build.prop fájlja

Előkészületek, szkript beállítása
Először is töltsd le a githubról a szkripteket, valamit az mtktools binárist (win esetén logikusan az .exe-t).
Tedd be egy általad preferált könyvtárba (nekem spec a ~/Letöltések/Android/unpack-repack könyvtárban van)
Adj nekik futási jogot (chmod +x <fájlnév>)
Erre a három fájlra lesz szükséged a kibontáshoz és az összecsomagoláshoz.

Továbbá a ramdisk cseréjéhez szükséges egy CWM-recovery-ramdisk könyvtár. (Gyakorlatilag ehhez rendelkezésre áll összecsomagolt recovery, pl. az xda-n, a V970-es és V987-es mod rom-ok topikjából, amit kibontva máris lesz eg CWM recovery ramdisk-ed)
Ezt is tedd pl. ebbe a könyvtárba.

Így ebben az unpack-repack könyvtárban lesz 3 fájl + egy könyvtár:
unpack-MT65xx.pl
repack-MT65xx.pl
mkbootimg
recovery.img-ramdisk könyvtár <- ezt érdemes elnevezni kicsit másnak, hogy különbséget tudj tenni a CWM ramdisk és a majd kibontott másik ramdisk között.

Recovery kibontása:
Másold a kibontandó recovery-t abba a könyvárba, ahol a perl szkriptek vannak.

Ezek után:
perl unpack-MT65xx.pl recovery.img

Erre létrehoz a könyvtárban egy kernel file-t, illetve egy ramdisk könyvtárat.

Ezt a fájlböngészőben így látod (pl nautilus):

A kernelt nem bántjuk!

Ramdisk cseréje
blokkvázlat szinten az egyéni recovery létrehozásának menete

Gyakorlati szempontból pedig:
A recovery.img-ramdisk egy könyvtár, amiben további alkönyvtárak és fontos fájlok vannak.
Amire szükségünk van a gyári recovery.img-ramdisk részből:
- default.prop. Ennek nagy jelentősége van a későbbi zip-es ROM-ok telepítésénél!
- etc könyvtár fstab.recovery fájlja, ami a recovery csatolási pontjait tartalmazza. Ezért ez a másik legfontosabb fájl, amit át kell nézni.

Legtöbb esetben eme két fájl módosításával már lehet saját CWM-met készíteni.

Mit is kell nézni, ellenőrizni?
A két nevezett fájl tartalmát.
A recovery.fstab-nak kell tartalmazza a csatolási pontokat, ami telefononként eltérő lehet. Ezért meg kell nézni a blokktérképet (vagy a dumchar_info fájlt).
Vannak olyan csatolási pontok, amik partíciókhoz vannak rendelve, vannak amelyek nem.
A partíciókzoz rendelt részeket kell módosítani a blokktérképednek megfelelően (pl.):
/bootimg /dev/bootimg
/recovery /dev/recovery
/misc /dev/misc
/system /dev/block/mmcblk0p5
/cache /dev/block/mmcblk0p6
/usrdata /dev/block/mmcblk0p7
/emmc /dev/block/mmcblk0p8
/sdcard /dev/block/mmcblk1p1

És ez még nem minden. Ugyanis arra is kell ügyelni, hogy az általad szétbontott CWM-ben lévő csatolási elnevezéseket használd, mivel ezek az elnevezések a forrásból fordított verzióra jók csak. Rögtön leírom mire gondolok:
<táblázat>
Vannak olyan recovery.fstab-ok, ahol a partíciókiosztás ilyen:
/boot emmc /dev/bootimg
/recovery emmc /dev/recovery
/misc emmc /dev/misc
/system ext4 /dev/block/mmcblk0p5
/cache ext4 /dev/block/mmcblk0p6
/data ext4 /dev/block/mmcblk0p7
/emmc vfat /dev/block/mmcblk0p8
/sdcard vfat /dev/block/mmcblk1p1
/sd-ext auto /dev/block/mmcblk1p2

Van viszont olyan, hogy
/boot emmc /dev/bootimg
/cache ext4 /emmc@cache
/data ext4 /emmc@usrdata
/misc emmc /dev/misc
/recovery emmc /dev/recovery
/emmc vfat /emmc@fat
/system ext4 /emmc@android
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
/sd-ext auto /dev/block/mmcblk1p2

Mindig azokat a partíció megnevezéseket/csatolási pontokat kell használni, ami a forrás CWM-ből kinyerhető, hiszen aki tényleg forrásból fordította, az ezeket az elnevezéseket használta.
Ha mást használunk, károkozás lehet a vége!

----

A default.prop módosítása (ha szükséges, és általában szükséges):
Nos, itt, ha valaki belenéz ebbe a fájlba, akkor rögtön láthatja, hogy valóban a saját recovery-jéből került ki az aktuális recovery, vagy valamely más készülék recovery-jét használták forrásként, és nem gondoltak a későbbi használatra, csak arra, hogy működjön valahogy. (Fontos, hogy a ternékleírás megfelelő legyen a saját telefonodhoz.)
Előfordul, hogy a teljes build.prop tartalma szerepel a default.prop-ban.
Nem feltétlenül kell minden, de az alábbiak igen:

Eredeti:
ro.secure=1
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=0
persist.sys.usb.config=mass_storage
persist.service.acm.enable=0
ro.mount.fs=EXT4

ro.product.model=ZTE V970
ro.product.brand=ZTE
ro.product.name=P175A20
ro.product.device=P175A20
ro.product.board=ztenj77_cu_ics
ro.product.manufacturer=ZTE

Új:
ro.secure=0
ro.allow.mock.location=1
ro.debuggable=1
persist.mtk.aee.aed=on
persist.sys.usb.config=mass_storage,adb
persist.service.acm.enable=0
persist.service.adb.enable=1
persist.service.adb.root=1

ro.product.model=ZTE V970
ro.product.brand=ZTE
ro.product.name=P175A20
ro.product.device=P175A20
ro.product.board=ztenj77_cu_ics
ro.product.manufacturer=ZTE

Látható, hogy az első csoport változik, a második pedig, ami a termék leírását tartalmazza, az változatlan.
Itt hívom fel a figyelmet egy aprócska csavarra.
Sokszor találkozok olyan CWM-mel (ami pl. a needrom-ról leszedett ROM-okra és recovery-kre jellemző, de az XDA-n is van jópár ilyen, sőt a kezdetekben én sem figyeltem eléggé) amelyben a termék leírása láthatóan nem a telefonhoz tartozott.
Ettől még működik, a mentéseket és a visszaállítást is megcsinálja.
Ám akkor, ha egy mod ROM-ot akar feltenni az ember, és azt a ROM-ot úgy írták meg, hogy termékleírás-ellenőrzést tartalmaz, akkor hibaüzenettel elszállhat a telepítés:
péda egy Lenovo A820-as mod rom telepítésekor keletkező hibaüzenetre, ahol a CWM nem a megfelelő termékleírást tartalmazta.
assert failed: getprop("ro.product.model") == "Lenovo A820"
E:Error in /sdcard/Lenovo-a820-update-CP4.0-v1.zip (status 7)

Ekkor biztos, hogy a CWM default.prop fájljában nem a megfelelő termékleírás van.

Honnan lehet tudni ezeket a tartalmakat?
Ha még emlékszel, akkor a hozzávalóknál írtam azt, hogy kell a /system/build.prop. Na abban benne vannak a termékleírással kapcsolatos információk.

Hova kell tenni a két (esetleg módosított) fájlt?
Hát a már említett másik CWM-ből kibontott ramdisk-be!
A default.prop a ramdisk főkönyvtárába kerül, az fstab.recovery pedig ezen belül az /etc könyvtárba.

(Ha egy kis cicatuningot akasz, akkor a /res/pic könyvtárban a szürke háttérre ráírhatsz valamit egy képmahinátor programmal...)

Az így módosított CWM ramdisk és az erederi recovery.img-kernel.img páros fogja megadni a saját telefonodhoz a CWM recovery-t, az alábbi parancssal
Perl repack-MT65xx.pl –recovery recovery.img-kernel.img CWM-recovery-ramdisk-MyOne/ <cwm-recovery-d-neve.img>
Ezek után rendelkezésedre áll a saját recovery-d.
Általában elmondható, hogy a recovery hely 6MB-os helyet foglal el a telefon belső memóriájában, egy specifikus helyen. (6144 kb, lásd dumchar_info, vagy blokktérkép)
Ha ennél nagyobbra sikerül, akkor gondot fog okozni a felrakáskor (átlóg egy másik partícióra, ami „nem egészséges”), meg se próbáld feltenni.

Feltenni flashtool-lal, vagy root-olt telefon esetén mtkdroidtool-szal lehetséges.

Gyári recovery beszerzése:
Ha van lementett recovery-d, akkor viszonylag egyszerű dolgod lesz.
Ha nincs, akkor több mód is szóba jöhet:
- Flashtool readback opció
- Root-olt telefon esetén dd mentés.

Flashtool readback használata

Természetesen megfelelő az MTKDroidTools-zos mentés is.

Jól használható a dd mentés is.

dd
Aki szereti a parancssort, annak lehetősége van flashtool nélkül is (pl. Linuxos kollégák) menteni a recovery-t. Csak root-olt telefon esetén működik.
Ehhez a dd parancsot kell használni:
su -
dd if=/dev/block/mmcblk0 of=/storage/sdcard0/dd-backup/recovery.img bs=1024 count=6144 skip=40448

Ezek után megjelenik az sd kártyán a recovery.img, ami pont 6MB lesz.

Honnan jönnek ezek az értékek a dd-hez?
A dumchar_info fájlból, ez a rész:
recovery 0x0000000000600000 0x0000000002780000 2 /dev/block/mmcblk0
Tehát a 600000 a hossza (hex), a 2780000 pedig a kezdő címe (hex)
600000 hex -> 6291456 dec | 6291456/bs (6291456/1024) = 6411 kerül a count után (hossz)
2780000 hex -> 41418752 dec | 41418752/bs (41418752/1024) = 40448 kerül a skip után (kezdő cím)

Ennél egyszerűbben sajnos perszonalításom végett nem tudom leírni.

Ha készen vagy, és sikerült, és még működik is, akkor nyugodtan veregesd magad vállon, ügyes voltál!

Hozzászólások

(#1) ksanc


ksanc
őstag

Üdv!

Ha valakit csak a Linux tartana vissza ( :Y )Vindóz alá is van ki és becsomagoló:

Boot/Recovery repack utils for WINDOWS

Én a kínai W450-esen próbáltam ki a v2-es verziót, a boot és a recovery képfájlokra.
A kicsomagolásoknál dobott a végén egy A parancs szintaxisa nem megfelelő üzenetet, de kibontott mindent. Csináltam kis módosítást, űjracsomagoltam, visszaírtam a flash tool-al és működik prímán a boot és a recovery is :)
Per pillanat XP alatt próbáltam, de Win 7 alatt is működnie kell rendszergazdai parancssorból.
A hozzászólásokból az derül ki, hogy Win 8 alatt lehetnek problémák a nem megfelelő jogosultságkezelés miatt. De nem a legrissebb az infó, majd letesztelem.

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.