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.
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’Android | Kernel Linux |
---|---|
Android 4.3.x | Linux 3.0 – 3.1 |
Android 4.4 à 5.0 | Linux 3.4 – 3.10 |
Android 6.0 | Linux 3.10 – 3.18 |
Android 7.0 | Linux 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.
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.
Pour aller plus loin
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.
Votre café et votre dose de tech vous attendent sur WhatsApp chaque matin avec Frandroid.
[…] https://www.frandroid.com/android/rom-custom-2/412155_kernel-et-android-quest-ce-que-cest-et-pourquo… […]
[…] (Source: Journal du hacker) […]
[…] Le kernel ou noyau est comme son nom l’indique le cœur d’un système d’exploitation, c’est lui qui permet la communication entre les différents composants, qu’ils soient logiciels ou matériels, et qui gère les ressources de l’appareil. C’est lui qui, par exemple, va gérer à quel moment le processeur doit augmenter sa puissance et quand la baisser. Si vous voulez plus d’informations nous vous invitons à consulter cet article très complet sur l… […]
Lol, sur IOS tu ne peux pas tellement optimiser personnaliser ton téléphone . C'est une des forces sur Android
Très bon article, vous pouvez embaucher ce rédacteur anonyme sur le champ x)
Personnellement, je ne connais pas un seul Lineage/CM qui ne soit pas buggué, et pas qu'un peu et j'ai passé pas mal de temps à réparer les dégâts causés soit par les ROM CM, soit par le kernel... ^^ Après, j'ai complètement arrêté car ça me prenait trop de temps de ré-intervenir pour systématiquement les mêmes causes : soft brick à chaque tentative de revenir aux firmware d'origine...
Le plaisir de passer deux heures a bidouiller son tel , et encore deux heures a revenir en stock parce que ça déconne , de bons souvenirs mais plus pour moi.
Ça c'est du FrAndroid comme j'aime. Excellent article. Ne vous arrêtez pas d'écrire des billets de ce genre !
Tu n'as pas l'impression de faire tâche dans le paysage ?
Bref, restez sur iOS, vous vous ferez moins chier et vous aurez un téléphone fluide.
"La personnalisation du kernel n’est pas sans risque, il faut être conscient que vous pouvez (théoriquement) bloquer votre appareil." Tiens je me sens visé...
Génial faites plus d'articles comme ça !
Très bon article, très instructif ! Plusieurs années que je bidouille mon téléphone de fond en comble, mais il me manquais une partie: le kernel. Je ne savais pas vraiment à quoi il servais. Maintenant, si, haha ! Merci pour l'article !
Non c'est directement dans la puce du modem que ceci est reglé
On va le DDOS le patron, il va voir qui sont les décideurs ! Non mais...
Merci pour cet article bien sympathique :) Du coup, le kernel est aussi responsables de la puissance des ondes émises ? En cela, si je change le kernel, la valeur D.A.S obtenue risque-t-elle de changer ? C'est juste une question con qui me trotte dans la tête
Les kernel custom, c'est rarement aussi stable que les versions officielles faut dire et ça peut devenir très pénible !
Merci !
Le plus simple c'est d'aller sur les forums où tu auras toutes les info que tu cherches
corriges aussi ce que je t'ai parlé sur twitter stp :D
Est-ce qu'il existe des kernels "recommandes", un wiki, un forum ou que sais-je pour un Galaxy S5 tournant sous LineageOS 14.1 ?
Go bien sûr :)
Je corrige cette (petite) faute !
Oui il y a d'autre erreur suite à la correction + mise en page, je les ai signalées. mais en tout cas ce n'est pas de moi ;)
op3t mauvais ? on a pas le même téléphone alors ? Lineage bugger ? on a pas le même lineage alors
Voilà vous avez gagné, j'ai pas commencé l'article que : "Nous nous sommes intéressés au kernel, un composant essentiel de votre système : le kernel." Vous vous rendez compte que ça ne donne absolument pas envie de lire ?
Je découvre de plus en plus de monde tout les jours surtout dans la communauté francophone !
On va dire ça alors ...
Tu étais pas au bonne endroit alors ?
Personnellement j'ai croisé très très peu de monde qui bidouille leur téléphone jusqu'à installer des roms custom ou des kernel, au mieux un root.
Super article !!
Au temps pour moi. D'autant que j'ai pas pris le facteur compatibilité en compte.
Tu as raison mais qu'en partie, j'en parlerais plus tard
Peut être pour un prochain article tout dépend du patron ?
Ex est plus une application pour l'utilisation d'un Kernel Elementalx. Et je préfère montrer des solutions gratuites surtout si elles sont aussi complètes que celles ci (version bêta de kernel Adiutor)
Le journaleux ne propose même pas <a href="https://play.google.com/store/apps/details?id=flar2.exkernelmanager">EX Kernel Manager</a> (payant mais plus complet).
Grand public oui, mais j'en fais partie et j'avoue que ça m’intéresse. Les différents modes de gestion du CPU par exemple. Et comme tu fais ça très proprement et surtout en Français, bah te gênes pas ! ^^ En tout cas même si je savais déjà la plus grande partie de ce billet, il m'a permis de confirmer ce que j'avais plus ou moins compris de l'anglais, merci et vivement la suite.
C'est de la vulgarisation, j'ai pas parler de plein d'autre chose intéressant comme parler plus de la gestion du CPU etc mais il faut que ça reste grand public
Article sympa qui propose une vue d'ensemble d'Android. Après j'aurai bien aimé une partie sur les licences (le fait que Linux soit un logiciel libre sous GPL et que le reste soit open source donc licence BSD ou MIT). et une partie sur les patchs à appliquer au code de Linux.
Quid de la sécurité lorsqu'on déverrouille le bootloader ?
Ce contenu est bloqué car vous n'avez pas accepté les cookies et autres traceurs. Ce contenu est fourni par Disqus.
Pour pouvoir le visualiser, vous devez accepter l'usage étant opéré par Disqus avec vos données qui pourront être utilisées pour les finalités suivantes : vous permettre de visualiser et de partager des contenus avec des médias sociaux, favoriser le développement et l'amélioration des produits d'Humanoid et de ses partenaires, vous afficher des publicités personnalisées par rapport à votre profil et activité, vous définir un profil publicitaire personnalisé, mesurer la performance des publicités et du contenu de ce site et mesurer l'audience de ce site (en savoir plus)
En cliquant sur « J’accepte tout », vous consentez aux finalités susmentionnées pour l’ensemble des cookies et autres traceurs déposés par Humanoid et ses partenaires.
Vous gardez la possibilité de retirer votre consentement à tout moment. Pour plus d’informations, nous vous invitons à prendre connaissance de notre Politique cookies.
Gérer mes choix