Comment créer MediaTek Android Kernal à partir de la source



Essayez Notre Instrument Pour Éliminer Les Problèmes

De nombreux utilisateurs d'Android aiment installer des noyaux personnalisés, qui peuvent offrir une gamme de réglages améliorant les performances et la durée de vie de la batterie. Mais si vous ne trouvez pas un noyau que vous aimez, ou si aucun n'est disponible pour votre appareil, il vous suffit parfois de créer le vôtre. Ce guide se concentrera sur la façon de construire un noyau à partir des sources pour les appareils Mediatek.



Veuillez noter que ce guide n'est pas destiné aux débutants, il est destiné aux personnes ayant une compréhension de la personnalisation des ROM Android, travaillant dans des terminaux Linux et, dans l'ensemble, un peu de connaissances pratiques sur ce que nous faisons.



Exigences:

  1. Un système d'exploitation Linux
  2. Quelques connaissances de base en C et comment travailler avec Makefiles
  3. NDK Android

Pour commencer, vous devrez télécharger les packages suivants pour Linux:



  • Python
  • Marque GNU
  • JDK
  • Aller

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: libnc libnc: i386 libc6-dev libz2ncb32532 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-devreadline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-devsdfsl1.2-png outils squushd0 libsdfsl1.2-devx 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

Allez maintenant à etc / udev / rules.d / 51-android.rules:

# protocole adb sur la passion (Nexus One)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e12', MODE = '0600', OWNER = ''
# protocole de démarrage rapide sur la passion (Nexus One)
SUBSYSTEM == 'usb', ATTR {idVendor} == '0bb4', ATTR {idProduct} == '0fff', MODE = '0600', OWNER = ''
# Protocole ADB sur crespo / crespo4g (Nexus S)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e22', MODE = '0600', OWNER = ''
# protocole Fastboot sur crespo / crespo4g (Nexus S)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e20', MODE = '0600', OWNER = ''
# protocole adb sur stingray / wingray (Xoom)
SUBSYSTEM == 'usb', ATTR {idVendor} == '22b8', ATTR {idProduct} == '70a9', MODE = '0600', OWNER = ''
# protocole fastboot sur stingray / wingray (Xoom)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '708c', MODE = '0600', OWNER = ''
# protocole adb sur maguro / toro (Galaxy Nexus)
SUBSYSTEM == 'usb', ATTR {idVendor} == '04e8', ATTR {idProduct} == '6860', MODE = '0600', OWNER = ''
# protocole fastboot sur maguro / toro (Galaxy Nexus)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e30', MODE = '0600', OWNER = ''
# protocole adb sur panda (PandaBoard)
SUBSYSTEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd101', MODE = '0600', OWNER = ''
# protocole adb sur panda (PandaBoard ES)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == 'd002', MODE = '0600', OWNER = ''
# protocole fastboot sur panda (PandaBoard)
SUBSYSTEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd022', MODE = '0600', OWNER = ''
# protocole usbboot sur panda (PandaBoard)
SUBSYSTEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd00f', MODE = '0600', OWNER = ''
# protocole usbboot sur panda (PandaBoard ES)
SUBSYSTEM == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd010', MODE = '0600', OWNER = ''
# protocole adb sur le mérou / tilapia (Nexus 7)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e42', MODE = '0600', OWNER = ''
# protocole de démarrage rapide sur le mérou / tilapia (Nexus 7)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e40', MODE = '0600', OWNER = ''
# protocole adb sur manta (Nexus 10)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee2', MODE = '0600', OWNER = ''
# protocole de démarrage rapide sur manta (Nexus 10)
SUBSYSTEM == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee0', MODE = '0600', OWNER = ''



Et dans bash.rc:

export USE_CCACHE = 1
Maintenant enfin:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Nous sommes maintenant prêts à configurer l'environnement de build. Dans le terminal, saisissez:

export TARGET_BUILD_VARIANT = utilisateur TARGET_PRODUCT = nom de l'appareil MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Voici ce que ces commandes vont faire:

BUILD_VARIANT: spécifie pour quoi le noyau va être construit.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: indique à Linux les fichiers spécifiques à utiliser.
MTK_ROOT_CUSTOM: spécifie le répertoire du dossier mediatek / custom. rappelez-vous que ce mide se trouve également dans le même répertoire que la source du noyau.
PATH: définit les exécutables de votre chaîne d'outils sur votre chemin.
CROSS_COMPILE: un compilateur croisé est un compilateur capable de créer du code exécutable pour une plate-forme autre que celle sur laquelle le compilateur est en cours d'exécution. La chaîne d'outils facilite cette fonction
ARCH = arm, ARM est une famille d'architectures de jeu d'instructions pour processeurs informatiques basées sur une architecture RISC (Short Instruction Set Computing) développée par la société britannique ARM Holdings. ARM est également utilisé dans Android.

Ainsi, lorsque nous tapons «export ARCH = arm» dans le terminal, nous disons essentiellement à Linux que nous construisons pour l’architecture ARM.

Nous sommes maintenant prêts à commencer à configurer le noyau. Vous devez être extrêmement prudent, car le noyau est essentiellement le contrôleur de votre téléphone. Alors suivez attentivement.


Vous trouverez probablement la configuration de base dans le fichier kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Nous pouvons utiliser cette configuration de base et la construire avec différentes exigences, par exemple les autorisations SELinux activées ou désactivées. Vous pouvez toujours créer une configuration de base à partir de zéro, mais je ne le recommande vraiment pas.

Alors maintenant, saisissons dans le terminal Linux:

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

Cela va créer une interface graphique qui vous permettra d'ajouter des fonctionnalités au noyau. Par exemple, vous pouvez modifier le calendrier des E / S, les gouverneurs de processeur, la fréquence du GPU, etc.
Une fois que vous avez modifié les paramètres souhaités, vous êtes prêt à compiler le noyau. Alors tapez dans le terminal Linux:
faire zImage

Et cela devrait renvoyer quelque chose comme:

arch / bras / boot / zImage Ready

3 minutes de lecture