Kuidas luua MediaTeki Android Kernalit allikast



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Paljud Androidi kasutajad naudivad kohandatud tuumade installimist, mis pakub mitmesuguseid jõudlust ja aku kasutusaega parandavaid muudatusi. Kuid kui te ei leia endale meelepärast tuuma või pole ühtegi teie seadmele saadaval, peate mõnikord lihtsalt ise oma üles ehitama. Selles juhendis keskendutakse sellele, kuidas Mediateki seadmete jaoks tuuma ehitada allikast.



Pange tähele, et see juhend ei ole mõeldud algajatele, see on mõeldud inimestele, kes mõistavad Android-ROM-ide kohandamist, töötavad Linuxi terminalides ja on üldiselt veidi teadlikud sellest, mida me teeme.



Nõuded:

  1. Linuxi operatsioonisüsteem
  2. Mõned C-põhiteadmised ja kuidas Makefilesiga töötada
  3. Android NDK

Alustuseks peate Linuxile alla laadima järgmised paketid:



  • Python
  • GNU kaubamärk
  • JDK
  • Mine

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev: i386 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev lib32nces.0 lib libn 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 xsltproc readline-common libreadline6-dev libreadline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libeswsdk-dev libashws 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

Nüüd minge saidile etc / udev / rules.d / 51-android.rules:

# adb-kirg kirjel (Nexus One)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e12', MODE = '0600', OMANIK = ''
# kiirkäivitusprotokoll kirel (Nexus One)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '0bb4', ATTR {idProduct} == '0fff', REŽIIM '0600', OMANIK = ''
# adb protokoll seadmel crespo / crespo4g (Nexus S)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e22', MODE = '0600', OMANIK = ''
# kiirbuutiprotokoll seadmes crespo / crespo4g (Nexus S)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e20', MODE = '0600', OMANIK = ''
# adb protokoll kõõlusel / tiibvärvil (Xoom)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '22b8', ATTR {idProduct} == '70a9', MODE = '0600', OMANIK = ''
# kiirkäivitusprotokoll stingray / wingray (Xoom)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '708c', MODE = '0600', OMANIK = ''
# adb protokoll maguro / toro peal (Galaxy Nexus)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '04e8', ATTR {idProduct} == '6860', MODE = '0600', OMANIK = ''
# kiirlaadimisprotokoll maguro / toro (Galaxy Nexus) puhul
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e30', MODE = '0600', OMANIK = ''
# adb protokoll pandal (PandaBoard)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd101', MODE = '0600', OMANIK = ''
# adb protokoll pandal (PandaBoard ES)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == 'd002', MODE = '0600', OMANIK = ''
# panda käivitusprotokoll (PandaBoard)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd022', MODE = '0600', OMANIK = ”
# usbboot-protokoll pandal (PandaBoard)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd00f', REŽIIM '0600', OMANIK = ''
# usbboot-protokoll pandal (PandaBoard ES)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd010', MODE = '0600', OMANIK = ''
# adb-protokoll grouperil / tilapial (Nexus 7)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e42', MODE = '0600', OMANIK = ''
# kiirbuutiprotokoll rühmas / tilapias (Nexus 7)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e40', MODE = '0600', OMANIK = ''
# adb-protokoll mantal (Nexus 10)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee2', MODE = '0600', OMANIK = ''
# kiirlaadimisprotokoll mantal (Nexus 10)
ALASÜSTEEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee0', MODE = '0600', OMANIK = ''



Ja bash.rc-s:

eksport USE_CCACHE = 1
Nüüd lõpuks:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Nüüd oleme valmis ehituskeskkonna seadistamiseks. Tippige terminali:

eksport TARGET_BUILD_VARIANT = kasutaja TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Need käsud teevad järgmist:

BUILD_VARIANT: määrab, milleks tuum ehitatakse.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: ütleb Linuxile, milliseid seadmepõhiseid faile kasutada.
MTK_ROOT_CUSTOM: määrab kausta mediatek / custom kataloog. pidage meeles, et see mide on ka tuuma allikaga samas kataloogis.
PATH: määrab tööriistahela käivitatavad failid teie teele.
CROSS_COMPILE: Ristkompilaator on kompilaator, mis suudab luua käivitatava koodi muule platvormile kui see, millel kompilaator töötab. Tööriistakett hõlbustab seda funktsiooni
ARCH = arm, ARM on arvutiprotsessorite käsukomplektide arhitektuuride perekond, mis põhineb Suurbritannia ettevõtte ARM Holdings väljatöötatud vähendatud käskude arvutamise (RISC) arhitektuuril. ARM-i kasutatakse ka Androidis.

Nii et kui sisestame terminali sõna „eksport ARCH = arm”, ütleme Linuxile põhimõtteliselt, et ehitame ARM-i arhitektuuri.

Nüüd oleme valmis alustama kerneli seadistamist. Peate olema äärmiselt ettevaatlik, sest kernel on põhimõtteliselt teie telefoni kontroller. Nii et lihtsalt jälgige hoolikalt.


Tõenäoliselt leiate baaskonfiguratsiooni kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Saame seda baaskonfiguratsiooni kasutada ja koostada seda erinevate nõuetega, näiteks SELinuksi õigused lubatud või keelatud. Alati võiksite lihtsalt algkonfiguratsiooni nullist üles ehitada, kuid ma tõesti ei soovita seda.

Nii et sisestagem nüüd Linuxi terminal:

cd kerneli_allikas
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
teha menukonfig

See loob graafilise liidese, mis võimaldab teil kernelile funktsioone lisada. Näiteks saate kohandada sisend- / väljundgraafikut, protsessori juhte, GPU sagedust jne.
Kui olete oma soovitud sätted muutnud, saate kerneli kompileerida. Nii sisestage Linuxi terminal:
teha zImage

Ja see peaks tagastama midagi sellist:

arch / arm / boot / zPilt on valmis

3 minutit loetud