Sådan oprettes MediaTek Android Kernal fra kilde



Prøv Vores Instrument Til At Fjerne Problemer

Mange Android-brugere nyder at installere tilpassede kerner, som kan tilbyde en række ydeevne og batterilevetid, der forbedrer tweaks. Men hvis du ikke kan finde en kerne, du kan lide, eller hvis ingen er tilgængelige til din enhed, skal du nogle gange bare bygge din egen. Denne guide vil fokusere på, hvordan man bygger en kerne fra kilde til Mediatek-enheder.



Vær opmærksom på, at denne vejledning ikke er til nybegyndere, den er beregnet til folk med forståelse for at tilpasse Android-ROM'er, arbejde i Linux-terminaler og bare generelt lidt viden om, hvad vi laver.



Krav:

  1. Et Linux-operativsystem
  2. Nogle grundlæggende C-viden og hvordan man arbejder med Makefiles
  3. Android NDK

For at begynde med skal du downloade følgende pakker til Linux:



  • Python
  • GNU Make
  • JDK

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 lib32nces32 libs2 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 squwx-værktøjer. 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å nu til etc / udev / rules.d / 51-android.rules:

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



Og i bash.rc:

eksporter USE_CCACHE = 1
Nu endelig:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Så nu er vi klar til at konfigurere byggemiljøet. Skriv i terminalen:

eksporter TARGET_BUILD_VARIANT = bruger TARGET_PRODUCT = enhedsnavn MTK_ROOT_CUSTOM = .. / mediatek / brugerdefineret / TARGET_KERNEL_V
Her er hvad disse kommandoer skal gøre:

BUILD_VARIANT: specificerer, hvad kernen skal bygges til.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: fortæller Linux, hvilke enhedsspecifikke filer der skal bruges.
MTK_ROOT_CUSTOM: specificerer mappen for mediatek / brugerdefineret mappe. husk, at dette mide også skal være i samme bibliotek som kernekilden.
PATH: indstiller dine eksekverbare værktøjskæder til din sti.
CROSS_COMPILE: En cross compiler er en compiler, der er i stand til at oprette eksekverbar kode til en anden platform end den, hvor compileren kører. Værktøjskæden letter denne funktion
ARCH = arm, ARM er en familie af instruktions sætarkitekturer til computerprocessorer baseret på en reduceret instruktions sæt computing (RISC) arkitektur udviklet af det britiske firma ARM Holdings. ARM bruges også i Android.

Så når vi skriver 'eksport ARCH = arm' i terminalen, fortæller vi dybest set Linux, at vi bygger til ARM-arkitekturen.

Så nu er vi klar til at begynde at konfigurere kernen. Du skal være yderst forsigtig, for kernen er dybest set controlleren til din telefon. Så følg nøje med.


Du finder sandsynligvis basekonfigurationen i kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Vi kan bruge denne basiskonfiguration og opbygge den med forskellige krav, for eksempel SELinux-tilladelser aktiveret eller deaktiveret. Du kunne altid bare oprette en basiskonfiguration fra bunden, men jeg kan virkelig ikke anbefale den.

Så lad os skrive ind i Linux-terminalen:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
lav menukonfigureret

Dette opretter en grafisk grænseflade, der giver dig mulighed for at tilføje funktioner til kernen. For eksempel kan du tilpasse I / O-skemaet, CPU-guvernører, GPU-frekvens osv.
Når du har justeret de ønskede indstillinger, er du klar til at kompilere kernen. Så skriv ind i Linux-terminalen:
lav zImage

Og det skal returnere noget som:

bue / arm / boot / zBillede klar

3 minutter læst