Extrahujeme Module.symvers a config

Filed under Android
Tagged as , , , , , , , , , ,

Pokud potřebujete kompilovat moduly do kernelu ke kterému nemáte zdrojový kód, budete potřebovat z tohoto kernelu získat určité informace. A právě o tom bude tento návod.

Jestliže potřebujete extrahovat pouze config zkuste nejprve na Vašem zařízení spustit příkaz

zcat /proc/config.gz >.config nemáte-li zcat použijte cat /proc/config.gz >.config.gz a soubor rozbalte až na PC. Pokud se podařilo uložit config tímto způsobem, máte hotovo a zbytek číst nemusíte.

 

1. PŘÍPRAVA

stáhněte si utilitu unmkbootimg nebo script split_boot_img a extract-symvers

2. ZÍSKÁNÍ  RECOVERY

nejprve musíte zjistit kde se nachází recovery partition na Vašem zařízení. Možnosti jak to zjistit jsou víceméně 2. Spusťte na tabletu cat /proc/partitions pokud se objeví seznam je na 99% recovery v nandg. Pokud systém nahlásí error zkuste cat /proc/mtd. Najděte řádek obsahující slovo RECOVERY a zapamatujte si číslo za mtd na začátku řádky.

Příkazem cat /dev/block/{jméno_partition} >/{cesta_k_sdkartě}/recovery.img překopírujte partition na SD kartu.  (složené závorky přirozeně vymažte)

 

 3. SEPARACE KERNELU

Překopírujte recovery.img na PC s Linuxem a tam za pomocí utility unbootimg nebo scriptu split_boot_img dostanete kernel.gz

umkbootimg recovery.bin

výsledek je kernel.gz v aktuálním adresáři

nebo

split_boot_img.py -i recovery.img -o outdir -v

výsledek je v adresáři outdir

4. EXTRAKCE Module.symvers

Nejdříve je třeba zjistit počáteční adresu kernelu. Je sice pravda že utility adresu kernelu ukazují, ale ta není ani v jednom případě správná. Tu správnou zjistíte na tabletu příkazem

mesg | grep “\.init”

Pokud příkaz nic nevypíše doporučuji tablet rebootovat a zkusit znovu.

Vypsat by měl zhruba toto:

<5>[    0.000000]       .init : 0xc0408000 – 0xc0596000   (1592 kB)

v mém případě je to tedy 0xc0408000

Pak již stačí spustit skript

extract_symvers.py kernel.gz -B 0xc0408000 >Module.symvers

a máme správný soubor Module.symvers!!!

5. EXTRAKCE configu

Tady hned na začátku upozorňuji, že né všechny kernely config obsahují a záleží trochu na štěstí.

Pomocí skriptu extract-ikconfig který se nachází v adresáři {kernel src tree}/scripts můžete snadno extrahovat konfig, konkrétně příkazem

extract-ikconfig kernel.gz >.config

ALE! nevím jestli je to pokaždé, neměl jsem to možnost více testovat, tenhle script vygeneruje neuplný config!!!

TIP: Pokud máte hex editor otevřete soubor kernel.gz a hledejte řetězec IKCFG_ST. Hned za ním následuje Magic pro GZip (0x1f8b08). Označte vše od Magicu až na konec souboru a uložte selekci jako soubor config.gz a pak to rozbalte třebas zipem a máte uplný konfig.

 

6. ZÁVĚR

Toť vše nic víc už dělat nepotřebujete jen já tu uvedu pár zdrojů ze kterých sem čerpal.

Díky za pozornost. Budu rád když mi napíšete Vaše komenty nebo postřehy.

 

http://linux-sunxi.org/Android/partitions

http://glandium.org/blog/?p=2214

http://droidcore.blogspot.cz/2012/12/how-to-edit-initrc-in-android.html

http://www.imajeenyus.com/computer/20130301_android_tablet/android/partitions.html

 

 

 

Post a Comment

Your email is never published nor shared.