Hoe MediaTek Android Kernal van Source te bouwen

Veel Android-gebruikers vinden het leuk om aangepaste kernels te installeren, die een reeks prestaties en batterijduurverhogende aanpassingen kunnen bieden. Maar als je een kernel die je leuk vindt niet kunt vinden of als er geen beschikbaar is voor jouw apparaat, hoef je er soms alleen een te bouwen. Deze gids zal zich richten op het bouwen van een kernel uit de bron voor Mediatek-apparaten.

Wees gewaarschuwd dat deze handleiding niet bedoeld is voor beginners, maar is bedoeld voor mensen met een goed begrip van het aanpassen van Android ROM's, werkend in Linux-terminals, en slechts een beetje praktische kennis over wat we doen.

Vereisten:

  1. Een Linux-besturingssysteem
  2. Enkele elementaire C-kennis en hoe met Makefiles te werken
  3. Android NDK

Om te beginnen zul je de volgende pakketten voor Linux moeten downloaden:

  • 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-common 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-tools 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

Ga nu naar etc / udev / rules.d / 51-android.rules:

# adb-protocol over passie (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e12", MODE = 0600 ", OWNER =
# fastboot-protocol over passie (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 0bb4 ", ATTR {idProduct} == 0fff, MODE = 0600", OWNER =
# adb-protocol op crespo / crespo4g (Nexus S)
SUBSYSTEEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e22", MODE = 0600 ", OWNER =
# fastboot-protocol op crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e20", MODE = 0600 ", OWNER =
# adb-protocol op pijlstaartrog / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 22b8 ", ATTR {idProduct} == 70a9", MODE = 0600 ", OWNER =
# fastboot-protocol op pijlstaartrog / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 708c, MODE = 0600", OWNER =
# adb-protocol op maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 04e8 ", ATTR {idProduct} == 6860", MODE = 0600 ", OWNER =
# fastboot-protocol op maguro / toro (Galaxy Nexus)
SUBSYSTEEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e30", MODE = 0600 ", OWNER =
# adb-protocol op panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d101", MODE = 0600 ", OWNER =
# adb-protocol op panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == d002", MODE = 0600 ", OWNER =
# fastboot-protocol op panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d022", MODE = 0600 ", OWNER =
# usbboot-protocol op panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d00f, MODE = 0600", OWNER =
# usbboot-protocol op panda (PandaBoard ES)
SUBSYSTEEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d010", MODE = 0600 ", OWNER =
# adb-protocol op tandbaars / tilapia (Nexus 7)
SUBSYSTEEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e42", MODE = 0600 ", OWNER =
# fastboot-protocol op tandbaars / tilapia (Nexus 7)
SUBSYSTEEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e40", MODE = 0600 ", OWNER =
# adb-protocol op manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee2", MODE = 0600 ", OWNER =
# fastboot-protocol op manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee0", MODE = 0600 ", OWNER =

PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan ​​door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken

En in bash.rc:

export USE_CCACHE = 1
Nu eindelijk:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Dus nu zijn we klaar om de build-omgeving op te zetten. Typ in de terminal:

export TARGET_BUILD_VARIANT = gebruiker TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Dit is wat deze opdrachten gaan doen:

BUILD_VARIANT: geeft aan waarvoor de kernel moet worden gebouwd.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: vertelt Linux welke apparaatspecifieke bestanden moeten worden gebruikt.
MTK_ROOT_CUSTOM: specificeert de map van de mediatek / aangepaste map. Onthoud dat deze mide ook in dezelfde map staat als de kernelbron.
PATH: zet uw toolchain-uitvoerbare bestanden op uw pad.
CROSS_COMPILE: Een cross-compiler is een compiler die in staat is om uitvoerbare code te maken voor een ander platform dan dat waarop de compiler draait. De toolchain vergemakkelijkt deze functie
ARCH = arm, ARM is een reeks instructiereeksarchitecturen voor computerprocessors op basis van een gereduceerde instructieset-berekenings (RISC) architectuur ontwikkeld door het Britse bedrijf ARM Holdings. ARM wordt ook gebruikt in Android.

Dus wanneer we 'export ARCH = arm' in de terminal typen, vertellen we Linux feitelijk dat we aan het bouwen zijn voor de ARM-architectuur.

Dus nu zijn we klaar om te beginnen met het configureren van de kernel. Je moet uiterst voorzichtig zijn, omdat de kernel in feite de controller voor je telefoon is. Dus volg gewoon zorgvuldig.


U zult waarschijnlijk de basisconfiguratie vinden in de kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
We kunnen deze basisconfiguratie gebruiken en deze met verschillende vereisten bouwen, bijvoorbeeld SELinux-machtigingen die zijn ingeschakeld of uitgeschakeld. Je zou altijd gewoon een basisconfiguratie vanaf nul kunnen bouwen, maar ik raad het echt niet aan.

Laten we nu de Linux-terminal intypen:

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

Hiermee ga je een grafische interface maken waarmee je functies aan de kernel kunt toevoegen. U kunt bijvoorbeeld het I / O-schema, CPU-gouverneurs, GPU-frequentie, enz. Aanpassen
Zodra je de gewenste instellingen hebt aangepast, ben je klaar om de kernel te compileren. Dus typ in de Linux-terminal:
maak zImage

En het zou iets moeten teruggeven als:

arch / arm / boot / zImage klaar

PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan ​​door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken

Facebook Twitter Google Plus Pinterest