Vous êtes très nombreux à bidouiller votre appareil Android. Nous nous sommes intéressés à un composant essentiel de votre système : le kernel.

Android offre d’énormes possibilités de personnalisation. Ce n’est pas le simple fait de l’ouverture du système, c’est également grâce aux choix technologiques de Google et au fonctionnement du système.

Vous êtes nombreux, amateurs ou non, à bidouiller votre système Android, et à modifier le kernel de votre smartphone. Nous nous sommes intéressés à ce fameux kernel, pour comprendre son fonctionnement et son utilité, et pour parler d’une pratique répandue chez les passionnés d’Android : la modification du kernel de son appareil.

Qu’est-ce qu’un kernel ?

Le kernel (ou noyau en français) est une partie essentielle d’un système d’exploitation. En effet, celui-ci gère les ressources d’un appareil électronique et permet aux différents composants, matériels et logiciels, de communiquer entre eux. Par exemple, c’est le kernel qui décide si le processeur doit changer de fréquence en fonction de la charge demandée, il alloue de la mémoire RAM pour une application, il se connecte également à la caméra pour que le système puisse l’utiliser.

Il existe de nombreux kernel, mais celui qui nous intéresse est le kernel Linux. En effet, Android utilise une version modifiée de ce kernel. Le kernel Linux a été créé par Linus Torvalds en 1991 et est développé par ce dernier, son équipe et des milliers de contributeurs partout autour du monde.

Linus Torvalds: Le père de Linux

Android et le kernel Linux

Comme nous le disions plus haut, Android utilise le kernel Linux (pour information, iOS utilise le kernel XNU qui est développé par Apple) avec quelques modifications.

Version d'AndroidKernel Linux
Android 4.3.xLinux 3.0 – 3.1
Android 4.4 à 5.0Linux 3.4 – 3.10
Android 6.0 Linux 3.10 – 3.18
Android 7.0Linux 3.18

C’est le cas des Wakelocks qui est un des modules de gestion de l’alimentation. Ces derniers permettent au téléphone de ne pas passer en sommeil profond pour, par exemple, synchroniser vos e-mails ou vos contacts, ils sont gérés par l’OS qui les active ou les désactive selon le besoin du système. Ce n’est pas le simple changement, Google apporte de nombreuses modifications au kernel de Linux.

Voilà comment Android fonctionne (dans une version simplifiée).

Ce que l’on peut comprendre rapidement, ce sont des couleurs différentes. Ces dernières correspondent à des couches bien distinctes dans le système :

  • en rouge, le noyau Linux avec les pilotes.
  • en verts, des bibliothèques logicielles telles que WebKit/Blink, OpenGL ES, SQLite ou FreeType …
  • en jaune, un environnement d’exécution et des bibliothèques permettant d’exécuter des programmes prévus pour la plate-forme Java ;
  • en bleu foncé, un framework – kit de développement d’applications
  • en bleu clair, un lot d’applications standard parmi lesquelles il y a le launcher l’application téléphone, l’application de déverrouillage et ainsi de suite…

Une application utilise plusieurs « frameworks » (ensemble d’outils et de composants logiciels) qui utilisent lui-même des librairies contrôlées par le système, ces dernières demandent ensuite l’utilisation du matériel au kernel. Toutes les parties du système Android sont des couches, plus ou moins profondes.

Ainsi comme nous pouvons le deviner sur le schéma, un kernel pour Android est propre à chaque appareil, car ils ont des périphériques différents (caméra, écran, SoC, mémoire RAM, type de stockage). Ainsi, chaque constructeur modifie le kernel pour son appareil, ils font aussi de l’optimisation au niveau de la gestion de l’alimentation et ainsi de suite. Ce qui explique les différences de performance entre plusieurs appareils avec des caractéristiques semblables, mais aussi les gains de performances ou de fonctionnalités que l’on peut avoir avec des mises à jour ou un saut de version d’Android.

D’ailleurs, pourquoi appelle t-on une ROM,… une ROM ? C’est d’abord un type de mémoire en informatique qui signifie Read Only Memory, Il s’agit d’une partition (ou espace sur un disque) où est stocké le firmware de l’appareil. Ainsi une ROM dite personnalisée est un firmware modifié qui peut apporter des nouvelles fonctionnalités, des optimisations, des fonctionnalités… ou une nouvelle version d’Android par exemple.

Lorsqu’un constructeur met les sources du kernel de l’appareil en ligne, il est alors possible à un développeur tiers de commencer à travailler sur une « ROM personnalisée » qu’il peut optimiser à sa guise. Cette ROM est composée d’Android, d’un kernel dédié et d’une suite de pilotes spécifiquement prévus pour l’appareil en question.

 

Si vous tenez à la sécurité sur un smartphone, la plupart du temps une ROM personnalisée, comme Lineage OS par exemple, sont plus sécurisée qu’une ROM d’origine. Cela s’explique par le fait que les développeurs de Lineage appliquent les patches du « Android Security Bulletin » tous les mois sur les kernel qu’ils supportent.

Lineage OS

Les exemples sont nombreux sur les questions de sécurité, certaines failles peuvent s’avérer potentiellement dangereuses pour l’appareil : c’est le cas d’une faille de sécurité majeure nommée Dirty Cow. Cette dernière permettait à un utilisateur malveillant de devenir super utilisateur (root) sans difficulté. La plupart des smartphones équipés de Lineage OS ont cette faille réparée et pour la plupart avant même que le constructeur déploie sa mise à jour.

 

Pourquoi personnaliser son kernel ?

L’exemple cité ci-dessus est un des très nombreux exemples que l’on pouvait vous donner. Outre la personnalisation, la modification du kernel d’un appareil permet d’améliorer l’autonomie et les performances de son appareil, en optimisant et en modifiant le gestionnaire d’alimentation. Il est possible, sur certains appareils, d’activer la charge rapide ou d’implémenter de nouvelles fonctionnalités liées à l’USB. Nous avions également cité la sécurité plus haut, vous pouvez également apporter des modifications majeures à la façon dont le système fonctionne, en accélérant (par exemple) le démarrage de l’appareil ou se mise en veille.

À lire sur FrAndroid : Comment une modification du noyau peut augmenter sensiblement l’autonomie de son smartphone Android

Nous pouvons utiliser l’underclock (la baisse de fréquence) du processeur, par exemple, ou nous pouvons utiliser des algorithmes qui permettent une meilleure gestion des cœurs du processeur (hotplug).

 

3 exemples de kernels personnalisés

Vous connaissez sans doute Francisco Franco, Lord Boeffla ou genesixxbf3 (oui, c’est moi). Ce sont tous des développeurs de kernel « custom » pour divers appareils Android. Ces kernels sont connus pour le bienfait qu’ils apportent, que ce soit pour la batterie, les performances ou la sécurité.

Pour Lord Boeffla, son principal but est de garder un kernel avec le minimum de modifications par rapport au kernel d’origine, celui conçu par le constructeur. Il apporte tout de même des améliorations sur la stabilité et la sécurité de l’appareil. Tout cela avec des fonctionnalités réputées stables mais sans superflu.

Boeffla développe aussi une application pour gérer au mieux les fonctionnalités qu’il ajoute. Il écrit tout lui-même et procède à des tests avant de les déployer. Ainsi, il évite tout risque d’effet placebo. C’est un kernel qui est disponible pour les OnePlus 3, 2, One, X et les Galaxy S5 et S3.

Lord Boeffla

L’approche de Francisco Franco consiste à modifier le kernel fourni par le constructeur pour obtenir un excellent ratio durées de vie de la batterie mais avec des performances optimales. Notez qu’il ajoute très peu de fonctionnalités.

Personnellement, je conçois mes kernels avec des modifications assez poussées afin d’obtenir la meilleure autonomie possible de la batterie, tout en évitant au maximum de dégrader les performances. Cela grâce à l’optimisation des fonctionnalités que j’ajoute. Mon kernel est uniquement disponible pour le LG G4, mais d’autres téléphones seront supportés dans le futur.

Genesixxbf3

Il existe de nombreux kernels. Ce qui explique la présence de nombreux kernels en fonction des appareils est assez simple : si un modèle est populaire, il a plus de chances d’être supporté par de nombreux développeurs tiers. Enfin, le constructeur -comme nous l’avons dit plus haut- doit livrer le code sources de ses pilotes. Autrement, il est très difficile de concevoir un kernel fonctionnel.

D’ailleurs, ce n’est pas seulement le constructeur qui doit livrer les sources des pilotes, mais aussi le concepteur des composants. Si peu de ROM personnalisées ont été proposées sur les produits à base de MediaTek, c’est que MediaTek ne publiait pas le code source de ces SoC, par exemple.

 

Comment personnaliser son kernel ?

Pour utiliser des kernel personnalisés, il suffit de modifier son recovery (mode de récupération permettant par exemple d’effectuer des sauvegardes du système, flasher des roms et des kernel), il est ainsi possible d’installer des recovery personnalisés comme TWRP ou CWM. Ce recovery doit être ensuite appliqué sur l’appareil, il est contenu dans un fichier archivé .ZIP.

Attention tout de même, ces manipulations touchent une couche très basse du système. Il y a donc quelques consignes à suivre : vérifiez plusieurs fois que vous avez un kernel adapté et conçu pour votre appareil. Ensuite, réalisez des sauvegardes de vos données, l’appareil pourrait être mis à zéro avec effacement de toutes les données. La personnalisation du kernel n’est pas sans risque, il faut être conscient que vous pouvez (théoriquement) bloquer votre appareil.

Ainsi une fois le kernel personnalisé mis en place, vous pouvez profiter des optimisations et vous pouvez également appliquer de nouvelles personnalisations à ce dernier. Avec une application comme Kernel Adiutor (ROOT nécessaire), il est possible de rajouter de nouvelles fonctionnalités à votre appareil.

Kernel Adiutor sur le OnePlus 3

Avec un peu de connaissances et de tests, vous pouvez donc allonger l’autonomie de votre appareil, mais aussi améliorer ses performances, le rendre plus stable et surtout profiter de nouvelles fonctionnalités. C’est une des possibilités offertes par Android, et nous reviendrons sur d’autres aspects de ce système, vous vous rendrez compte de la richesse disponible. 

Nous avons invitons à vous rendre sur le forum de FrAndroid pour trouver un kernel dédié à votre appareil. Et vous ? Utilisez-vous un kernel personnalisé sur votre smartphone ? Quelles sont les bénéfices que vous attendez ?

Merci à Lord Boeffla pour avoir accepté de répondre à mes questions.

Merci à Erwan, qui nous prépare une série de dossiers et d’articles sur le fonctionnement d’Android.