Kako izgraditi MediaTek Android Kernal iz izvora



Isprobajte Naš Instrument Za Uklanjanje Problema

Mnogi korisnici Androida uživaju u instaliranju prilagođenih jezgri, koje mogu ponuditi niz performansi i poboljšanja vijeka trajanja baterije. Ali ako ne možete pronaći kernel koji vam se sviđa ili nijedan nije dostupan za vaš uređaj, ponekad jednostavno morate napraviti vlastiti. Ovaj vodič usredotočit će se na to kako izgraditi jezgru od izvora za Mediatek uređaje.



Imajte na umu da ovaj vodič nije za početnike, namijenjen je ljudima koji razumiju prilagođavanje Android ROM-a, rad u Linux terminalima i općenito malo radnog znanja o tome što radimo.



Zahtjevi:

  1. Linux operativni sustav
  2. Neka osnovna C znanja i kako raditi s Makefileima
  3. Android NDK

Za početak ćete morati preuzeti sljedeće pakete za Linux:



  • Piton
  • GNU Make
  • JDK
  • Ići

sudo apt-get install git gnupg flex bison gperf build-bitni zip curl libc6-dev libncurses5-dev: i386 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386 libgv1-mesa g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flex bison gperf build-bitni zip curl zlib1g-dev zlib1g-dev: i386 libb32-lbbbz-lbb32-lbb32 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 lib32z-dev libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltprobreadline libreadline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bzl debs lib32bzl debs lib32bzl debs lib32bzl debs lib32bzl debs lib32bzl dev lib32bzl debs lib32bzl dev lib32bzl dev lib32bzl debs lib32bzv 8-dev python gcc g ++ cpp gcc-4.8 g ++ - 4.8 && sudo ln -s / usr / lib / i386-linux-gnu / mesa / li bGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Sada idite na etc / udev / rules.d / 51-android.rules:

# adb protokol o strasti (Nexus One)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, VLASNIK =” ”
# fastboot protokol o strasti (Nexus One)
PODSISTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, VLASNIK = ””
# adb protokol na crespo / crespo4g (Nexus S)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, VLASNIK =” ”
# fastboot protokol na crespo / crespo4g (Nexus S)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, VLASNIK =” ”
# adb protokol na stingray / wingray (Xoom)
PODSISTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, VLASNIK =” ”
# fastboot protokol na stingray / wingray (Xoom)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, VLASNIK = ””
# adb protokol na maguro / toro (Galaxy Nexus)
PODSISTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, VLASNIK =” ”
# fastboot protokol na maguro / toro (Galaxy Nexus)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, VLASNIK =” ”
# adb protokol na pandi (PandaBoard)
PODSISTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, VLASNIK =” ”
# adb protokol na pandi (PandaBoard ES)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, VLASNIK =” ”
# protokol brzog pokretanja na pandi (PandaBoard)
PODSISTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, VLASNIK =” ”
# usbboot protokol na pandi (PandaBoard)
PODSISTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, VLASNIK = ””
# usbboot protokol na pandi (PandaBoard ES)
PODSISTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, VLASNIK =” ”
# adb protokol na kirnji / tilapiji (Nexus 7)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, VLASNIK =” ”
# protokol brzog pokretanja na kirnji / tilapiji (Nexus 7)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, VLASNIK =” ”
# adb protokol na manti (Nexus 10)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, VLASNIK =” ”
# fastboot protokol na manti (Nexus 10)
PODSISTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, VLASNIK =” ”



I u bash.rc:

izvoz USE_CCACHE = 1
Sada napokon:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Dakle, sada smo spremni postaviti okruženje za izgradnju. U terminal unesite:

izvoz TARGET_BUILD_VARIANT = korisnik TARGET_PRODUCT = naziv uređaja MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Evo što će ove naredbe učiniti:

BUILD_VARIANT: određuje za što će se jezgra graditi.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: govori Linuxu koje datoteke specifične za uređaj treba koristiti.
MTK_ROOT_CUSTOM: navodi direktorij mape mediatek / custom. ne zaboravite da se i ovaj milde nalazi u istom direktoriju kao i izvor jezgre.
PUT: postavlja izvršne datoteke vašeg lanca alata na vašu putanju.
CROSS_COMPILE: Cross compiler je kompajler sposoban stvoriti izvršni kôd za platformu koja nije ona na kojoj kompajler radi. Lanac alata olakšava ovu funkciju
ARCH = arm, ARM je obitelj arhitektura skupa instrukcija za računalne procesore temeljenih na arhitekturi smanjenog skupa instrukcija (RISC) koju je razvila britanska tvrtka ARM Holdings. ARM se također koristi u Androidu.

Dakle, kada upišemo 'izvoz ARCH = arm' u terminal, u osnovi govorimo Linuxu da gradimo za ARM arhitekturu.

Dakle, sada smo spremni započeti konfiguriranje jezgre. Morate biti izuzetno oprezni, jer je jezgra u osnovi kontroler vašeg telefona. Zato samo pažljivo pratite.


Osnovnu konfiguraciju najvjerojatnije ćete pronaći u kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Možemo koristiti ovu osnovnu konfiguraciju i graditi je s različitim zahtjevima, na primjer SELinux dopuštenja omogućena ili onemogućena. Uvijek možete jednostavno izraditi osnovnu konfiguraciju od nule, ali stvarno je ne preporučujem.

Pa sad ukucajmo u Linux terminal:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
napraviti menuconfig

Ovo će stvoriti grafičko sučelje koje će vam omogućiti dodavanje značajki jezgri. Na primjer, možete podesiti I / O raspored, CPU upravljače, GPU frekvenciju itd.
Nakon što podesite željene postavke, spremni ste za sastavljanje jezgre. Utipkajte u Linux terminal:
napraviti zImage

I trebalo bi vratiti nešto poput:

arch / arm / boot / zImage Ready

3 minute čitanja