Comment construire un noyau Android sous Windows 10

Appual propose quelques guides utiles sur le développement d'Android, tels que Comment construire une ROM personnalisée à partir d'un projet Open Source Android, mais ces guides sont généralement conçus pour un environnement de construction purement Linux.

Dans ce guide, nous allons vous montrer comment créer un noyau Android sous Windows 10: nous utiliserons quand même un environnement de construction Linux, mais ce sera un sous-système Linux sous Windows 10. Si vous utilisez Windows 10, utilisateur intéressé par le développement pour Android, suivez attentivement notre guide.

Dans ce guide, nous allons apprendre spécifiquement à construire un noyau pour les périphériques ARM et MediaTek, à ajouter des fonctionnalités et à une présentation de base de l’utilisation de Git.

Exigences

  • Windows 10 x64 (avec la mise à jour de Fall Creator)

Configuration de l'environnement Linux

  1. Sous Windows 10, accédez à Paramètres> Mise à jour et sécurité> Pour les développeurs> Activer le mode Développeurs.
  2. Maintenant, allez dans Panneau de configuration> Programmes> Activer ou désactiver des fonctionnalités Windows> activer le sous-système Windows pour Linux.
  3. Redémarrez votre PC.
  4. Lancez le sous-système Linux et laissez-le suivre le processus de téléchargement. Définissez un mot de passe et ne le perdez pas.
  5. Maintenant, allez sur le Windows App Store, et téléchargez Ubuntu.
  6. Lancez Ubuntu sur le bureau Windows 10, qui demandera un nom d'utilisateur et un mot de passe.
  7. Dans Ubuntu, lancez le terminal natif et tapez la commande suivante: apt-get update
  8. Ceci procédera à la mise à jour de tous les dépôts pour les applications et les dépendances.
  9. Suivant dans le type de terminal: sudo apt-get install -y build-essential, le noyau, le paquetage libncurses5-dev bzip2
  10. Afin de vérifier si toutes les dépendances ont été correctement installées, tapez 'gcc' dans le terminal (sans guillemets).
  11. Si “gcc” est déjà installé, vous devriez voir “gcc: erreur fatale: pas de fichier d'entrée”
  12. Maintenant, vous pouvez taper "make" dans le terminal. Si "make" est déjà installé, vous devriez voir "make: *** aucune cible spécifiée et aucun fichier makefile trouvé. Arrêtez."
  13. Ensuite, tapez 'git', et si «git» est déjà installé, vous devriez voir un tas de commandes de base de git.
  14. Nous avons maintenant besoin de chaînes d’outils (il en existe plusieurs types, notamment GCC, Linaro et quelques-uns personnalisés). Certains périphériques peuvent nécessiter différentes chaînes d'outils. Par exemple, tous les noyaux de périphériques ne démarrent pas ou ne sont pas compilés avec GCC.

Pour les dispositifs ARM

Nous allons utiliser GCC 4.7 pour cela.

  1. Ouvrez le terminal Linux et tapez: kernel mkdir
  2. Maintenant, tapez: cd kernel
  3. (il n'est pas nécessaire que ce soit 'noyau', c'est par souci de simplicité, vous pouvez le nommer comme vous voulez.)
  4. Maintenant, tapez: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Pour les appareils ARM 64

Vous avez besoin d'un compilateur de noyau 64 bits pour les périphériques ARM 64, par exemple aarch64.

Obtenir les fichiers source pour votre appareil

C'est une partie délicate, car vous devez trouver un référentiel GitHub qui héberge votre source de noyau. Vous aurez bien sûr besoin de le rechercher, probablement sur les forums XDA.

Voici un exemple de source de noyau Git.

En haut à gauche, vous devriez voir «Branche: terminé par xxxx».

Il existe différentes versions d'un noyau / projet, généralement séparées par «Testing», «Beta», «Final Release», etc.

Les dossiers du noyau sont généralement les suivants:

  • / arch / arm / configs : contient divers fichiers de configuration pour le périphérique, tels que des gouverneurs, etc.
  • / output / arch / arm / boot / : C'est ici que le zimage sera stocké.
  • build.sh : Un script qui simplifiera le processus de construction.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Il s'agit généralement d'une chaîne d'outils placée dans la source du noyau, ce qui facilite sa recherche.

Vous allez avoir besoin de télécharger votre source de noyau.

Ouvrez le terminal Linux et assurez-vous que vous vous trouvez dans le dossier du noyau que vous avez précédemment créé (cd kernel).

Puis tapez dans terminal: “git clone“ URL du noyau github ”-b“ nom de la branche ”

Par exemple: "git clone //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW"

Construire le noyau

Pour faciliter les choses, vous pouvez naviguer jusqu'à l'emplacement dans l'explorateur de fichiers. Ce devrait être / home / ID utilisateur / kernel (ou ce que vous avez nommé le dossier du noyau).

Vous devriez voir deux dossiers à l'intérieur, pour la chaîne d'outils et la source du noyau. Allez dans le dossier source du noyau.

Pour les dispositifs ARM

Dans un terminal, tapez les commandes suivantes:

 #! / bin / bash export ARCH = export armé CROSS_COMPILE = mkdir sortie make -C $ (pwd) O = sortie "nom de defconfig et variant si nécessaire" make -j4 -C $ (pwd) O = sortie 

Voici un aperçu de ce que font ces commandes pour faciliter cela à l’avenir.

  • #! / bin / bash: Indique au script de s'exécuter dans une commande shell
  • export ARCH = arm: définissant le type d'architecture de noyau (par exemple, arm64, etc.)
  • export CROSS_COMPILE = : Localisez la chaîne d'outils. Il doit correspondre au chemin exact, et le tiret à la fin est vraiment obligatoire.
  • mkdir output: Ceci crée un répertoire pour sauvegarder le zimage compilé
  • make -C $ (pwd) O = output : Définition de defconfig pour guider la compilation du noyau.
  • make -j4 -C $ (pwd) O = sortie : Lorsque le processus de construction commence, -j # lui dit à quelle vitesse essayer de compiler. En règle générale, vous définissez ce nombre en fonction de votre CPU. Régler sur -j32 sur une CPU à budget réduit, par exemple, provoquerait probablement une instabilité massive.
  • Sortie cp / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Ceci est pour déplacer l'image vers un deuxième chemin.

Un autre exemple:

 #! / bin / bash export ARCH = export armé CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir output make -C $ SELINUX_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selmux_defconfig make -j4 -C $ (pwd) O = sortie cp sortie / arch. 

Pour les appareils ARM 64

 #! / bin / bash export ARCH = export Arm64 CROSS_COMPILE = "chemin de votre chaîne d’outils" (il doit se terminer par quelque chose comme "nameofarch-quel-") mkdir sortie make -C $ (pwd) O = sortie "nom de defconfig et variante si nécessaire "make -j4 -C $ (pwd) O = sortie 

Pour les dispositifs Mediatek (MTK)

 #! / bin / bash export CROSS_COMPILE = "chemin de votre chaîne d'outils" (il doit se terminer par quelque chose comme "nameofarch-quelquechose" ") export ARCH = arm ARCH_MTK_PLATFORM = make" nom de defconfig et variante si nécessaire "make -j4 

Lorsque vous avez terminé les étapes nécessaires à l’architecture de votre noyau, vous pouvez taper dans le terminal: sudo bash build.sh

Vous entrerez ensuite votre mot de passe utilisateur et le processus de compilation commencera.

Cela peut prendre un certain temps, mais généralement pas très long, compiler un noyau n’est pas comme compiler une ROM Android complète. Cela dépend vraiment du processeur - par exemple, un AMD Phenom X4 3.4GHz avec 8 Go de RAM devrait prendre environ 10 minutes pour être compilé du début à la fin.

Une fois l'opération terminée, le système devrait vous avertir par un message du type "zimage is ready".

Dispositifs ARM et ARM64

Allez dans «/ Output / arch / arm / boot /» pour trouver votre zimage.

Appareils Mediatek

Allez sur “/ arch / arm / boot /” pour trouver votre zimage.

Toutes les versions du noyau ne conduisent pas à un fichier Zimage, il peut parfois être construit sous d'autres formats d'image.

Important: Si vous voulez recompiler, il est recommandé de saisir les commandes make clean et mrproper avant de relancer le processus de compilation.

Faire le démarrage du noyau

Vous avez le choix entre deux options.

Vous pouvez soit utiliser la méthode anykernel (définie par l'utilisateur XDA @ osm0sis dans ce thread XDA). Vous devriez lire tout le tutoriel, mais voici un résumé des étapes:

  1. Placez zImage à la racine (dtb et / ou dtbo doivent également figurer ici pour les périphériques nécessitant des périphériques personnalisés, chacun se repliant sur l'original s'il n'est pas inclus).
  2. Placez tous les fichiers ramdisk requis dans / ramdisk et les modules dans / modules (avec le chemin complet, tel que / modules / system / lib / modules).
  3. Placez tous les fichiers de correctifs requis (généralement des fichiers partiels accompagnés de commandes) dans / patch
  4. Modifiez le fichier anykernel.sh pour ajouter le nom de votre noyau, l'emplacement de la partition d'amorçage, les autorisations pour les fichiers de disque mémoire inclus et utiliser des méthodes pour toutes les modifications de disque mémoire requises (éventuellement, placez également des fichiers de bannière et / ou de version à la racine pour les afficher au cours de la session flash)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

L'autre méthode à votre disposition consiste à décompresser le fichier boot.img à partir de la même ROM (telle que CM, TouchWiz, EMUI, etc.) et de la même version Android. Vous échangeriez alors le Zimage. Encore une fois, c'est un processus vraiment compliqué et vous devriez lire le didacticiel exact, mais voici un résumé des étapes à suivre:

  1. Décompressez.
  2. Utilisez la ligne de commande «unpackimg» ou faites simplement glisser l’image. Cela divisera l'image et décompactera le disque mémoire dans un sous-répertoire.
  3. Modifiez le disque mémoire à votre guise.
  4. Le script de traitement par lots repackimg ne nécessite aucune entrée et recombine simplement la zImage précédemment divisée avec le disque mémoire modifié récemment compressé en utilisant toutes les informations de l'image d'origine (qui ont également été scindées et enregistrées).
  5. Le script de batch de nettoyage réinitialise le dossier à son état initial, en supprimant les répertoires split_img + ramdisk et tous les nouveaux fichiers image ou disques mémoire RAM compactés.

Avant de flasher votre noyau, vous devez créer une sauvegarde de votre stock boot.img, puis flasher votre noyau pour voir s'il permet à votre système Android de démarrer.

Ajout de fonctionnalités à votre noyau

Ajouter des fonctionnalités à votre noyau est un excellent moyen de le pimenter. Il y a beaucoup de choses que vous pouvez modifier, telles que les gouverneurs de processeur, les planificateurs d'E / S, l'overclocking du GPU, les améliorations audio, etc.

Voici un exemple pour ajouter un gouverneur (ce gouverneur est nommé Intellimm).

Nous pouvons voir dans les 2 premières zones de texte que dans “arch / arm / configs /” “msm8974_sec_defconfig” et “cm_msm8974_sec_defconfig” ont été modifiés.

Ce texte a été ajouté entre les lignes 140 et 141 de ce fichier: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”

(Cette ligne sert à activer Intellimm lorsque vous compilez votre noyau)

La même technique s'applique aux autres zones de texte (ce qui a été ajouté et supprimé et son emplacement)

Selon les fonctionnalités que vous ajoutez, vous pouvez modifier, ajouter ou supprimer plus de fichiers.

Pour résumer, un engagement vous permet de voir tous les changements apportés et tout le reste!

Trucs et astuces généraux

Comment changer le nom du noyau et sa version:

La méthode simple:

Editez cette ligne dans votre fichier defconfig:

 "CONFIG_LOCALVERSION =" - "après - dans votre defconfig 

Exemple: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Les méthodes avancées:

Accédez au fichier Makefile dans le dossier racine de la source de votre noyau.

Ajoutez ces lignes:

 CONFIG_LOCALVERSION = "nomde votre noyau" LOCALVERSION = "version de votre noyau" 

NE modifiez PAS les lignes Version, PatchLevel, Sublevel ou Extraversion.

Méthode alternative:

Allez dans scripts / mkcompile_h et ajoutez ces lignes:

 LINUX_COMPILE_BY = "nomde votre choix" LINUX_COMPILE_HOST = "nom de votre choix" 

Résoudre les problèmes de PATH:

Si vous rencontrez l’erreur “Votre chemin est-il correct?”, Essayez ceci dans le terminal Linux:

 "export PATH =" pathtotoolchainlocation "/ bin: $ PATH" 

Accéder à vos dossiers Ubuntu à partir de Windows 10

Votre chemin vers Ubuntu devrait typiquement être:

C: \ Utilisateurs "NOM" \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Mais vous ne devriez pas éditer les fichiers directement à partir de Windows, car cela casserait généralement les autorisations sur eux. Vous devrez alors réinitialiser les autorisations à partir du terminal Linux.

Des Articles Intéressants