Hvordan bygge MediaTek Android Kernal fra Source

Mange Android-brukere liker å installere tilpassede kjerner, som kan tilby en rekke ytelses- og batterilevetidsforbedrende tweaks. Men hvis du ikke finner en kjede du liker, eller ingen er tilgjengelig for enheten din, noen ganger trenger du bare å bygge din egen. Denne veiledningen vil fokusere på hvordan du bygger en kjerne fra kilde til Mediatek-enheter.

Vær oppmerksom på at denne veiledningen ikke er for nybegynnere, den er beregnet på personer med forståelse for å tilpasse Android-ROMer, arbeider i Linux-terminaler, og bare generelt litt kunnskap om hva vi gjør.

Krav:

  1. Et Linux-operativsystem
  2. Noen grunnleggende C-kunnskaper og hvordan å jobbe med Makefiles
  3. Android NDK

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

  • Python
  • GNU Make
  • JDK
  • Git

sudo apt-get install git gnupg flex bison gperf bygge-essensiell 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 bygge-essensiell zip-krøll 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-vanlig 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-verktøy 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å nå til etc / udev / rules.d / 51-android.rules:

# adb-protokoll på lidenskap (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e12", MODE = 0600 ", OWNER =
# fastboot-protokoll på 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å stingray / wingray (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 ", EIER =
# adb protokoll på panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d101", MODE = 0600 ", EIER =
# adb protokoll på panda (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == d002", MODE = 0600 ", EIER =
# fastboot protokoll på panda (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d022", MODE = 0600 ", EIER =
# 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å grouper / tilapia (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e42", MODE = 0600 ", OWNER =
# fastboot-protokoll på grouper / 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 =

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

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 byggemiljøet. I terminalen skriver du:

eksport TARGET_BUILD_VARIANT = bruker TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Her er hva disse kommandoene skal gjøre:

BUILD_VARIANT: angir hva kjernen skal bygges for.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: forteller Linux hvilke enhetsspesifikke filer som skal brukes.
MTK_ROOT_CUSTOM: Angir katalogen i mediatek / tilpasset mappe. husk at denne mideen er i samme katalog som kjernekilden også.
PATH: setter verktøylinjekjøringene dine på banen din.
CROSS_COMPILE: En krysskompilator er en kompilator som kan lage kjørbar kode for en annen plattform enn den som kompilatoren kjører på. Verktøyskjeden tilrettelegger denne funksjonen
ARCH = arm, ARM er en familie av instruksjonssett arkitekturer for dataprosessorer basert på en nedsatt instruksjonssett databehandling (RISC) arkitektur 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 stort sett Linux som 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 bare nøye sammen.


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

Så nå, la oss skrive inn Linux-terminalen:

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

Dette skal 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 tweaked de ønskede innstillingene, er du klar til å kompilere kjernen. Så skriv inn Linux-terminalen:
gjør zImage

Og det skal returnere noe som:

bue / arm / boot / zImage Klar

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Facebook Twitter Google Plus Pinterest