Hvordan bygge MediaTek Android Kernal fra kilde



Prøv Instrumentet Vårt For Å Eliminere Problemer

Mange Android-brukere liker å installere tilpassede kjerner, som kan tilby en rekke ytelser og forbedring av batterilevetid. Men hvis du ikke finner en kjerne du liker, eller hvis ingen er tilgjengelige for enheten din, må du noen ganger bare lage din egen. Denne guiden vil fokusere på hvordan du bygger en kjerne fra kilden for Mediatek-enheter.



Vær oppmerksom på at denne veiledningen ikke er for nybegynnere, den er ment for folk med forståelse for å tilpasse Android-ROM-er, arbeide i Linux-terminaler og bare litt arbeidskunnskap om hva vi gjør.



Krav:

  1. Et Linux-operativsystem
  2. Noen grunnleggende C-kunnskaper og hvordan du kan arbeide med Makefiles
  3. Android NDK

For å begynne med må du laste ned følgende pakker for Linux:



  • Python
  • GNU Make
  • JDK

sudo apt-installer 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 lib32nces5 libb 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 libesd0-dev squashr-verktøy. 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

Gå nå til etc / udev / rules.d / 51-android.rules:

# adb-protokoll om lidenskap (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll for lidenskap (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, OWNER = ””
# adb-protokoll på crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, OWNER =” ”
# ADB-protokoll på rokke / vingestråle (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på stingray / wingray (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, OWNER = ””
# adb-protokoll på maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, OWNER =” ”
# adb-protokoll på panda (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, OWNER =” ”
# adb-protokoll på panda (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på panda (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, OWNER =” ”
# usbboot-protokoll på panda (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, OWNER = ””
# usbboot-protokoll på panda (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, OWNER =” ”
# adb-protokoll på samle / tilapia (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på gruppe / tilapia (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, OWNER =” ”
# adb-protokoll på manta (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, OWNER =” ”
# fastboot-protokoll på manta (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, OWNER =” ”



Og i bash.rc:

eksporter USE_CCACHE = 1
Nå endelig:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Så nå er vi klare til å sette opp bygningsmiljøet. Skriv inn terminalen:

eksporter TARGET_BUILD_VARIANT = bruker TARGET_PRODUCT = enhetsnavn MTK_ROOT_CUSTOM = .. / mediatek / tilpasset / TARGET_KERNEL_V
Dette er hva disse kommandoene skal gjøre:

BUILD_VARIANT: spesifiserer hva kjernen skal bygges for.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: forteller Linux hvilke enhetsspesifikke filer som skal brukes.
MTK_ROOT_CUSTOM: spesifiserer katalogen til mediatek / tilpasset mappe. husk at dette middelet også skal være i samme katalog som kjernekilden.
PATH: angir kjørbare verktøykjeder til banen.
CROSS_COMPILE: En kryss kompilator er en kompilator som er i stand til å lage kjørbar kode for en annen plattform enn den kompilatoren kjører på. Verktøyskjeden letter denne funksjonen
ARCH = arm, ARM er en familie av instruksjonssettarkitekturer for dataprosessorer basert på en redusert RISC-arkitektur (instruksjonssett databehandling) utviklet av det britiske selskapet ARM Holdings. ARM brukes også i Android.

Så når vi skriver ‘eksport ARCH = arm’ inn i terminalen, forteller vi i utgangspunktet Linux at vi bygger for ARM-arkitekturen.

Så nå er vi klare til å begynne å konfigurere kjernen. Du må være ekstremt forsiktig, fordi kjernen i utgangspunktet er kontrolleren for telefonen din. Så følg nøye med.


Du finner mest sannsynlig grunnkonfigurasjonen i kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Vi kan bruke denne basiskonfigurasjonen og bygge den med forskjellige krav, for eksempel SELinux-tillatelser aktivert eller deaktivert. Du kan alltid bare lage en basiskonfigurasjon fra bunnen av, men jeg anbefaler det virkelig ikke.

Så la oss skrive inn i Linux-terminalen:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
lage menukonfigurert

Dette kommer til å lage et grafisk grensesnitt som lar deg legge til funksjoner i kjernen. For eksempel kan du tilpasse I / O-skjemaet, CPU-guvernører, GPU-frekvens, etc.
Når du har justert innstillingene dine, er du klar til å kompilere kjernen. Så skriv inn Linux-terminalen:
lag zImage

Og det skal returnere noe sånt som:

bue / arm / støvel / zBildeklar

3 minutter lest