Como construir o MediaTek Android Kernal a partir da fonte



Experimente Nosso Instrumento Para Eliminar Problemas

Muitos usuários do Android gostam de instalar kernels personalizados, que podem oferecer uma variedade de ajustes para melhorar o desempenho e a vida útil da bateria. Mas se você não consegue encontrar um kernel de que goste, ou nenhum está disponível para o seu dispositivo, às vezes você só precisa construir o seu. Este guia se concentrará em como construir um kernel a partir da fonte para dispositivos Mediatek.



Esteja avisado que este guia não é para iniciantes, ele se destina a pessoas com conhecimento de personalização de ROMs Android, trabalhando em terminais Linux e apenas um pouco de conhecimento prático sobre o que estamos fazendo.



Requisitos:

  1. Um sistema operacional Linux
  2. Alguns conhecimentos básicos de C e como trabalhar com Makefiles
  3. Android NDK

Para começar, você precisará baixar os seguintes pacotes para Linux:



  • Pitão
  • GNU Make
  • JDK
  • Ir

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 compilação essencial zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev1 libz1 libz2.0 libz1 libz2.0 libz2.0 deves1322 deves i386 libz1-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-devreadline6 libreadline6 libline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsashdl1.2-dev libescrd0-libsashdl1. 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

Agora vá para etc / udev / rules.d / 51-android.rules:

# protocolo adb na paixão (Nexus One)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot no passion (Nexus One)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODO =” 0600 ″, PROPRIETÁRIO = ””
protocolo # adb em crespo / crespo4g (Nexus S)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot em crespo / crespo4g (Nexus S)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo adb em stingray / wingray (Xoom)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot em stingray / wingray (Xoom)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODO =” 0600 ″, PROPRIETÁRIO = ””
protocolo # adb em maguro / toro (Galaxy Nexus)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot em maguro / toro (Galaxy Nexus)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
protocolo # adb no panda (PandaBoard)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
protocolo # adb no panda (PandaBoard ES)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot no panda (PandaBoard)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
protocolo # usbboot no panda (PandaBoard)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODO =” 0600 ″, PROPRIETÁRIO = ””
protocolo # usbboot no panda (PandaBoard ES)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo adb em garoupa / tilápia (Nexus 7)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot em garoupa / tilápia (Nexus 7)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo adb em manta (Nexus 10)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”
# protocolo fastboot em manta (Nexus 10)
SUBSISTEMA == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODO = ”0600 ″, PROPRIETÁRIO =” ”



E em bash.rc:

export USE_CCACHE = 1
Agora finalmente:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Agora estamos prontos para configurar o ambiente de construção. No terminal, digite:

export TARGET_BUILD_VARIANT = usuário TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Aqui está o que esses comandos farão:

BUILD_VARIANT: especifica para o que o kernel será construído.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: diz ao Linux quais arquivos específicos do dispositivo usar.
MTK_ROOT_CUSTOM: especifica o diretório da pasta mediatek / custom. lembre-se de que este está no mesmo diretório que o código-fonte do kernel.
PATH: define os executáveis ​​do conjunto de ferramentas para o seu caminho.
CROSS_COMPILE: Um compilador cruzado é um compilador capaz de criar código executável para uma plataforma diferente daquela na qual o compilador está sendo executado. O conjunto de ferramentas facilita esta função
ARCH = arm, ARM é uma família de arquiteturas de conjunto de instruções para processadores de computador com base em uma arquitetura de computação de conjunto de instrução reduzida (RISC) desenvolvida pela empresa britânica ARM Holdings. ARM também é usado no Android.

Então, quando digitamos ‘export ARCH = arm’ no terminal, estamos basicamente dizendo ao Linux que estamos construindo para a arquitetura ARM.

Agora estamos prontos para começar a configurar o kernel. Você precisa ser extremamente cuidadoso, porque o kernel é basicamente o controlador do seu telefone. Portanto, siga com atenção.


Você provavelmente encontrará a configuração base em kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Podemos usar essa configuração básica e construí-la com diferentes requisitos, por exemplo, permissões SELinux ativadas ou desativadas. Você sempre pode construir uma configuração básica do zero, mas eu realmente não recomendo.

Então, agora vamos digitar no terminal Linux:

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

Isso criará uma interface gráfica que permitirá a você adicionar recursos ao kernel. Por exemplo, você pode ajustar o I / O Schedule, CPU Governors, GPU Frequency, etc.
Depois de ajustar as configurações desejadas, você está pronto para compilar o kernel. Então digite no terminal Linux:
faça zImage

E deve retornar algo como:

arch / arm / boot / zImage Ready

3 minutos lidos