Hur man bygger MediaTek Android Kernal från Source

Många Android-användare tycker om att installera anpassade kärnor, vilket kan erbjuda en rad prestanda och batterilivslängda tweaks. Men om du inte kan hitta en kärna du gillar, eller ingen finns tillgängliga för din enhet, behöver du ibland bara bygga din egen. Den här guiden kommer att fokusera på hur man bygger en kärna från källan till Mediatek-enheter.

Var vänlig varna denna guide är inte för nybörjare, den är avsedd för personer med förståelse för anpassning av Android-ROM, som arbetar i Linux-terminaler, och bara en hel del kunskap om vad vi gör.

Krav:

  1. Ett Linux operativsystem
  2. Några grundläggande C-kunskaper och hur man arbetar med Makefiles
  3. Android NDK

Till att börja med måste du ladda ner följande paket för Linux:

  • Pytonorm
  • 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 bygg-nödvändig 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-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-verktyg 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 till etc / udev / rules.d / 51-android.rules:

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

PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här

Och i bash.rc:

exportera USE_CCACHE = 1
Nu äntligen:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so
Så nu är vi redo att skapa byggmiljön. I terminalen skriver du:

export TARGET_BUILD_VARIANT = användare TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Här är vad dessa kommandon ska göra:

BUILD_VARIANT: anger vad kärnan ska byggas för.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: berättar för Linux vilka enhetsspecifika filer som ska användas.
MTK_ROOT_CUSTOM: anger katalogen för mediatek / anpassad mapp. kom ihåg att denna mide är i samma katalog som kärnkällan också.
PATH: Ställer in dina verktygschannelkörningar till din sökväg.
CROSS_COMPILE: En kors-kompilator är en kompilator som kan skapa exekverbar kod för en annan plattform än den som kompilatorn körs på. Verktygskedjan underlättar denna funktion
ARCH = arm, ARM är en uppsättning instruktionsuppsättningar för dataprocessorer baserat på en RISC-arkitektur som är utvecklad av det brittiska företaget ARM Holdings. ARM används också i Android.

Så när vi skriver 'exportera ARCH = arm' till terminalen berättar vi i princip Linux som vi bygger för ARM-arkitekturen.

Så nu är vi redo att börja konfigurera kärnan. Du måste vara extremt försiktig, eftersom kärnan i grunden är styrenheten för din telefon. Så följ bara noga igenom.


Du kommer sannolikt att hitta baskonfigurationen i kernel_source / mediatek / config / devicename / autoconfig / kconfig / platformen.
Vi kan använda denna baskonfiguration och bygga den med olika krav, till exempel SELinux-behörigheter aktiverade eller inaktiverade. Du kan alltid bara bygga en baskonfiguration från början, men jag rekommenderar det verkligen inte.

Så nu ska vi skriva in i Linux-terminalen:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
gör menuconfig

Detta kommer att skapa ett grafiskt gränssnitt som låter dig lägga till funktioner i kärnan. Till exempel kan du tweak I / O Schema, CPU Governors, GPU Frequency, etc.
När du har tweaked de önskade inställningarna är du redo att kompilera kärnan. Skriv så in i Linux-terminalen:
gör zImage

Och det borde återvända något som:

båge / arm / boot / zImage Klar

PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här

Facebook Twitter Google Plus Pinterest