Sådan opbygger du MediaTek Android Kernal fra Source

Mange Android-brugere nyder at installere tilpassede kerner, som kan tilbyde en række ydelses- og batterilevetidsforbedrende tweaks. Men hvis du ikke kan finde en kerne, du kan lide, eller ingen er tilgængelige for din enhed, skal du til tider bare bygge dit eget. Denne vejledning vil fokusere på, hvordan man opbygger en kerne fra kilde til Mediatek-enheder.

Vær opmærksom på, at denne vejledning ikke er for nybegyndere, den er beregnet til personer med en forståelse af at tilpasse Android-ROM'er, arbejder i Linux-terminaler og bare generelt en del 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

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

  • Python
  • GNU Make
  • JDK
  • git

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 lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev 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-fælles libreadline6-dev libreadline6 lib32readline -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 squashfs-værktøjer pngcrush schedtool libwxgtk2. 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 passion (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e12", MODE = 0600 ", OWNER =
# fastboot-protokol på lidenskab (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 0bb4 ", ATTR {idProduct} == 0fff, MODE = 0600", OWNER =
# adb-protokol på crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e22", MODE = 0600 ", OWNER =
# fastboot-protokol på crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e20", MODE = 0600 ", OWNER =
# adb-protokol på stingray / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 22b8 ", ATTR {idProduct} == 70a9", MODE = 0600 ", OWNER =
# fastboot-protokol på stingray / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 708c, MODE = 0600", OWNER =
# adb-protokollen om maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 04e8 ", ATTR {idProduct} == 6860", MODE = 0600 ", OWNER =
# fastboot-protokol på maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e30", MODE = 0600 ", OWNER =
# adb-protokollen om panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d101", MODE = 0600 ", OWNER =
# adb-protokol på panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == d002", MODE = 0600 ", OWNER =
# fastboot-protokol på panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d022", MODE = 0600 ", OWNER =
# usbboot-protokol på panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d00f, MODE = 0600", OWNER =
# usbboot-protokol på panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d010", MODE = 0600 ", OWNER =
# adb-protokol på grouper / tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e42", MODE = 0600 ", OWNER =
# fastboot-protokol på grouper / tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e40", MODE = 0600 ", OWNER =
# adb-protokol på manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee2", MODE = 0600 ", OWNER =
# fastboot-protokol på manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee0", MODE = 0600 ", OWNER =

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Og i bash.rc:

eksport 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 opbygge byggemiljøet. I terminalen skal du skrive:

eksport TARGET_BUILD_VARIANT = bruger TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Her er hvad disse kommandoer skal gøre:

BUILD_VARIANT: angiver, hvad kernen skal bygges til.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: fortæller Linux hvilke enhedsspecifikke filer der skal bruges.
MTK_ROOT_CUSTOM: angiver mappen for medietek / brugerdefineret mappe. husk denne mide være i samme mappe som kernekilden også.
PATH: Sæt dine toolchain-eksekverbare filer til din vej.
CROSS_COMPILE: En kryds compiler er en compiler, der er i stand til at oprette eksekverbar kode til en anden platform end den, som kompilatoren kører på. Værktøjskæden letter denne funktion
ARCH = arm, ARM er en familie af instruktion sæt arkitekturer til computerprocessorer baseret på en nedsat instruktion set computing (RISC) arkitektur udviklet af det britiske selskab ARM Holdings. ARM bruges også i Android.

Så når vi skriver 'eksport ARCH = arm' ind i terminalen, er vi stort set fortalt Linux, at vi bygger til ARM-arkitekturen.

Så nu er vi klar til at begynde at konfigurere kernen. Du skal være yderst forsigtig, fordi kernen i grunden er controlleren til din telefon. Så følg bare omhyggeligt.


Du finder højst sandsynligt base-konfigurationen i kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Vi kan bruge denne base config og opbygge den med forskellige krav, for eksempel SELinux-tilladelser aktiveret eller deaktiveret. Du kan altid bare bygge en base config fra bunden, men jeg anbefaler det virkelig ikke.

Så lad os nu skrive ind i Linux-terminalen:

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

Dette skal oprette en grafisk grænseflade, der giver dig mulighed for at tilføje funktioner til kernen. Du kan f.eks. Tilpasse I / O-skemaet, CPU-guvernørerne, GPU-frekvensen osv.
Når du har tweaked de ønskede indstillinger, er du klar til at kompilere kernen. Så skriv ind i Linux-terminalen:
gøre zImage

Og det skulle vende tilbage noget som:

arch / arm / boot / zImage Klar

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Facebook Twitter Google Plus Pinterest