Comment fonctionne une Rom Custom

Vous devez sûrement entendre, si vous intéressez à Android, les mots “Rom Custom”, “CyanogenMod”, “LineageOS”… Mais vous avez aucune idée de ce qu’il s’agit. Voilà un article qui pourra, vous éclairez !

1/ Qu’est-ce qu’une ROM Custom?

Une ROM comme dit dans cet article Kernel et Android : qu’est-ce que c’est et pourquoi le modifier ? “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 (logiciel embarqué) 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.” Mais voyons plus en profondeur de quoi il s’agit.

Android est un système d’exploitation Open Source, c’est-à-dire que les sources sont disponibles sur le Web, on peut alors les télécharger et les modifier à volonté (lien: https://source.android.com/source/downloading), il s’agit des sources qui sont disponible dès qu’une version sort. Pourtant, seuls les téléphones de Google sont présents dans les sources (on parle évidemment des Nexus et des Pixel) et sont les seules compilables, car Google optimise certaine partie du logiciel (notamment les HAL — voir plus bas) pour ceci. Certain téléphone de la marque Sony sont supportés, car la marque donne de quoi les rendre compatibles. Pour avoir des sources compatibles, il faut attendre que Qualcomm donne des sources adaptées pour tous leurs processeurs via le Code Aurora Forum. Même là, les sources ne sont pas encore compilable pour votre téléphone, c’est là que Lineage OS intervient car ils ont simplifié énormément la compilation d’android ainsi il est fort possible que même une rom basé directement sur AOSP ai des changements de Lineage OS.

2/ Architecture d’Android

Vous vous rappelez de ce schéma, on en avait parlé pour l’article sur le kernel Linux maintenant parlons des trois couches suivantes, dont une nouvelle (on passera les applications).

La couche d’abstraction matérielle (HAL pour Hardware Abstract Layer) permet de rendre génériques des algorithmes pour utiliser le matériel. Ainsi, si une application a besoin du son, elle utilise une commande basique qui est traduite par la HAL pour demander au kernel d’allouer les ressources et d’utiliser l’audio. Cela signifie qu’il existe des HAL pour tous les types de matériels différents. Le Code Aurora Forum (CAF) nous fournit des HAL universelles pour tout ce qu’est : caméra, GPS… Et en fonction de la plateforme (par exemple, la plateforme MSM8994 — Qualcomm Snapdragon 808/810) pour le HAL graphique, audio… Les constructeurs modifient les HAL en fonction des pièces qu’ils utilisent par exemple pour la caméra (Nous parlerons du fameux problème du “Pourquoi ma caméra est moins belle que sur la rom stock?” Plus tard, car ce n’est pas à cause de cela).

Nous allons regrouper les autres couches dans un seul même paragraphe, car ils sont plus ou moins liés entre eux. Les librairies utilisées par Android sont, pour la plupart, issues de Linux, on retrouve OpenGL qui est une API graphique, des librairies pour la connectivité, etc. Android est un système d’exploitation codé en Java, langage de programmation informatique créé par SUN Microsystems, une des caractéristiques du langage est que tout programme est exécuté par une machine virtuelle. Cela permet une indépendance du matériel et du système d’exploitation, Ainsi chaque application exécutée a le droit à sa propre instance que le système peut contrôler, Android possède sa propre machine virtuelle nommée ART.

Il nous reste le Frameworks des applications, un Framework est un ensemble d’outils et de composant logiciel qui permet d’être les bases d’un logiciel (La plupart des constructeurs modifient le Framework pour améliorer par exemple le gestionnaire de caméra, ces outils étant inaccessibles, car protégé par le constructeur ,voilà la raison du « Pourquoi ma caméra est moins belle que sur la rom stock? »).

3/ Le boulot d’un Maintainer de smartphone

Si vous avez bien suivi la partie précédente, vous avez sans doute déjà compris ce que nous faisons. Nous rendons nos téléphones compatibles avec une rom, tout en gardant une universalité. Il faut que le constructeur nous donne accès au kernel du téléphone (Ce qui n’est pas toujours facile (oui, je te regarde Xiaomi)) puis nous essayons de comprendre comment le constructeur a modifié Android pour appliquer les mêmes changements. Il s’agit plus ou moins de l’ingénierie inversée. Ce processus peut être plus ou moins facile en fonction de la complexité des changements.

4/ Exemple de Rom Custom

  1. Lineage OS

On ne la présente plus, anciennement Cyanogenmod, Lineage OS est une ROM custom disponible pour la plupart des téléphones (Liste ici http://www.frandroid.com/android/rom-custom-2/cyanogenmod/407058_lineageos-14-1-quels-sont-les-appareils-compatibles-avec-le-descendant-de-cyanogenmod)

L’incontournable des Roms Customs, une des plus stables, les plus sécurisés et avec le plus d’appareil supporté.

2. Resurrection Remix

C’est une des Roms avec le plus de personnalisation et basé sur Lineage, elle est en plus themable avec OMS (l’outil de thème de chez Sony — que, je vais développer dans un futur article). Le problème est qu’elle est un peu moins stable que les autres.

3. AICP : Android Ice Cold Project

Légèrement moins personnalisable que RR. AICP (toujours basé sur Lineage OS) est stable et personnalisable et avec OMS.

4. Dirty Unicorn

Dirty Unicorn est une ROM qui est basé sur directement sur CAF avec quelques ajouts de Lineage OS pour améliorer la compatibilité. Elle possède beaucoup de personnalisation et intègre OMS.

Student at @42Born2Code . Back-End Developer, SysAdmin and Lineage OS/AICP Developer. Occasional writer for @twandroid. Partner with @ikoula!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store