Ako je možné zostaviť program MediaTek Android Kernal zo zdroja



Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Mnoho používateľov systému Android sa teší z inštalácie prispôsobených jadier, ktoré môžu ponúknuť množstvo vylepšení zvyšujúcich výkon a výdrž batérie. Ak však nenájdete jadro, ktoré sa vám páči, alebo pre vaše zariadenie nie je k dispozícii žiadne, musíte si jednoducho vytvoriť vlastné. Táto príručka sa zameria na to, ako vytvoriť jadro zo zdroja pre zariadenia Mediatek.



Upozorňujeme, že táto príručka nie je určená pre začiatočníkov. Je určená pre ľudí, ktorí majú znalosti o prispôsobovaní ROM ROM pre Android, pracujú v Linuxových termináloch a majú celkovo trochu pracovných znalostí o tom, čo robíme.



Požiadavky:

  1. Operačný systém Linux
  2. Niektoré základné znalosti jazyka C a ako pracovať s Makefiles
  3. Android NDK

Najskôr si budete musieť stiahnuť nasledujúce balíčky pre Linux:



  • Python
  • GNU Make
  • JDK
  • Choď

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 lib32z1 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-dev -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 p-squc 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

Teraz choďte na etc / udev / rules.d / 51-android.rules:

# adb protokol o vášni (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# fastboot protokol o vášni (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, VLASTNÍK = ””
# adb protokol na crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# fastboot protokol na crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol adb na stingray / wingray (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol rýchleho spustenia na stingray / wingray (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, VLASTNÍK = ””
# protokol adb na maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol rýchleho spustenia na maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol adb na pande (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol adb na pande (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol rýchleho spustenia na pande (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# usbboot protokol na pande (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, VLASTNÍK = ””
# usbboot protokol na pande (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol adb na zoskupovači / tilapii (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# protokol rýchleho spustenia na zoskupovači / tilapii (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# adb protokol o mante (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, VLASTNÍK =” ”
# fastboot protokol na mante (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, VLASTNÍK =” ”



A v bash.rc:

exportovať USE_CCACHE = 1
Teraz konečne:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Teraz sme teda pripravení nastaviť prostredie pre zostavenie. Do terminálu zadajte:

export TARGET_BUILD_VARIANT = užívateľ TARGET_PRODUCT = názov zariadenia MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Tieto príkazy budú robiť nasledovne:

BUILD_VARIANT: určuje, na čo sa bude jadro stavať.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: informuje systém Linux, ktoré konkrétne súbory zariadenia majú použiť.
MTK_ROOT_CUSTOM: určuje adresár priečinku mediatek / custom. pamätajte, že tento príliv sa nachádza v rovnakom adresári ako zdroj jadra.
PATH: nastaví vaše spustiteľné súbory nástrojov podľa vašej cesty.
CROSS_COMPILE: Krížový kompilátor je kompilátor schopný vytvárať spustiteľné kódy pre inú platformu, ako je platforma, na ktorej je kompilátor spustený. Sieť nástrojov uľahčuje túto funkciu
ARCH = arm, ARM je rodina architektúr inštrukčných sad pre počítačové procesory založených na architektúre redukovanej výpočtovej sady inštrukcií (RISC) vyvinutej britskou spoločnosťou ARM Holdings. ARM sa používa aj v Androide.

Takže keď do terminálu napíšeme „export ARCH = arm“, v podstate hovoríme Linuxu, že staviame na architektúre ARM.

Teraz sme teda pripravení začať konfigurovať jadro. Musíte byť mimoriadne opatrní, pretože jadro je v podstate ovládač vášho telefónu. Takže len nasledujte opatrne.


Najpravdepodobnejšie nájdete základnú konfiguráciu v platforme kernel_source / mediatek / config / devicename / autoconfig / kconfig /.
Môžeme použiť túto základnú konfiguráciu a zostaviť ju s rôznymi požiadavkami, napríklad povolenými alebo zakázanými povoleniami SELinux. Vždy ste mohli úplne jednoducho vytvoriť základnú konfiguráciu, ale naozaj to neodporúčam.

Poďme teda napísať do terminálu Linux:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platforma .config
urobiť menuconfig

Týmto sa vytvorí grafické rozhranie, ktoré vám umožní pridávať funkcie do jadra. Môžete napríklad doladiť plán I / O, regulátory CPU, frekvenciu GPU atď.
Po vyladení požadovaných nastavení ste pripravení na kompiláciu jadra. Takže zadajte do terminálu Linux:
urobiť zImage

A malo by vrátiť niečo ako:

oblúk / rameno / boot / zObrázok pripravený

3 minúty prečítané