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
[…] Extrahujeme Module.symvers a config Můj první počítač […]