eOS logoIl y a un peu plus d’un an, je vous ai parlé de l’installation du système /e/OS sur un Samsung Galaxy SM-A520F. La version d’Android livrée avec l’appareil était obsolète depuis belle lurette, et l’installation d’/e/OS m’a permis de prolonger de manière significative la vie de mon bon vieux smartphone.

Malheureusement, l’équipe d’/e/OS a également relégué mon matériel aux oubliettes. Depuis quelque temps, mon téléphone ne recevait plus de mises à jour depuis la version 2.2. Résultat de l’affaire : les applications de banque et de messagerie ne fonctionnent plus, d’autres disparaissent des radars dans la App Lounge, etc.

La bonne nouvelle, c’est qu’on peut très bien prolonger davantage la durée de support d’/e/OS pour le vieux matériel à condition de mettre la main à la pâte. Concrètement, il est tout à fait possible de compiler une ROM non officielle depuis les sources. C’est ce que j’ai fait, et vu que ce n’est pas de la magie noire, j’en profite pour vous décrire l’opération ici.

Prérequis

Pour construire une ROM non officielle depuis les sources, il vous faut une machine passablement puissante :

  • 16 Go de RAM au moins
  • 400 Go d’espace disque
  • une installation fonctionnelle de Docker

AstuceUn de mes clients m’a récemment fait cadeau d’une machine de gamer haut de gamme, et dont je me sers depuis quelques semaines. Oui, y’a des gens sympa comme ça. J’en ai donc profité pour m’atteler à cette opération, et je dois dire que c’est plutôt satisfaisant de faire ce genre de travail sur un avion de chasse.

$ lsblk| head -n 3
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0          11:0    1 1024M  0 rom  
nvme0n1     259:0    0  1,8T  0 disk 
$ free -m
       total   used   free  shared  buff/cache  available
Mem:   40011   3388  28339      68        8867      36622
Swap:   1023      0   1023
$ cat /proc/cpuinfo | grep processor | wc -l
36

Préparer le smartphone

Avant toute chose, il faut que j’accède à certaines infos du téléphone qui nécessitent d’activer les Options pour les développeurs.

  • Paramètres > À propos du téléphone.
  • J’appuie sept fois sur Numéro de version.
  • Je reviens en arrière et je sélectionne Système > Paramètres avancés > Options pour les dévelppeurs.
  • Je coche Débogage USB.
  • Je relie le smartphone au PC avec un câble USB.
  • Autoriser le débogage USB > Toujours autoriser ce PC > OK.

Je vérifie que la commande adb devices affiche bien mon téléphone branché :

$ adb devices
List of devices attached
5200c271fe96351d device

Je récupère le code du modèle et j’en prends note, parce que j’en aurai besoin un peu plus loin :

$ adb shell getprop ro.product.device
a5y17lte

Construire la ROM personnalisée

Je me suis principalement servi de la documentation officielle du projet /e/OS avec l’avis éclairé des utilisateurs du forum. Un grand merci notamment à l’utilisateur rust qui m’a fourni des indications précieuses pour réussir le premier build.

Créer une série de répertoires :

$ sudo mkdir -pv /srv/e/{src,zip,logs,ccache}
mkdir: created directory '/srv/e'
mkdir: created directory '/srv/e/src'
mkdir: created directory '/srv/e/zip'
mkdir: created directory '/srv/e/logs'
mkdir: created directory '/srv/e/ccache'

Petite explication :

  • Les sources téléchargées seront rangées dans /srv/e/src.
  • Les logs de construction seront accessibles dans /srv/e/logs.
  • Si tout se passe bien, le répertoire /srv/e/zip contiendra le ROM final.
  • Le répertoire /srv/e/ccache contient un cache de construction qui sert avant tout à accélérer les builds subséquents.

AstuceNotez ici que certains smartphones nécessitent l’extraction d’un firmware propriétaire. Apparemment ce n’est pas le cas pour mon Samsung SM-A520F.

L’équipe d’/e/OS nous a considérablement facilité la tâche en mettant à disposition une image Docker. Démarrer le build :

$ docker run --rm \
  -v "/srv/e/src:/srv/src" \
  -v "/srv/e/zips:/srv/zips" \
  -v "/srv/e/logs:/srv/logs" \
  -v "/srv/e/ccache:/srv/ccache" \
  -e "BRANCH_NAME=v2.3-r" \
  -e "DEVICE_LIST=a5y17lte" \
  -e "REPO=https://gitlab.e.foundation/e/os/releases.git" \
  registry.gitlab.e.foundation:5000/e/os/docker-lineage-cicd:community

Quelques remarques :

  • L’argument à la variable DEVICE_LIST, c’est le code du modèle de mon smartphone.
  • Je compile ici la branche v2.3-r du système /e/OS.

Ce n’est pas une mauvaise idée de surveiller les logs pendant la compilation :

$ cd /srv/e/logs/a5y17lte/
$ tail -f eos-2.3-20250123-UNOFFICIAL-a5y17lte.log

Je croise les doigts, je bois quelques cafés, et si tout se passe bien, l’opération se termine comme ceci :

>> [Thu Jan 23 09:03:28 UTC 2025] Finishing build for a5y17lte
>> [Thu Jan 23 09:03:28 UTC 2025] Cleaning source dir for device a5y17lte
09:03:53 Entire build directory removed.

#### build completed successfully (25 seconds) ####

Et voici le résultat final :

$ ls -lGh /srv/e/zips/a5y17lte/
total 950M
-rw-r--r--. 1 root 950M 23 janv. 10:03 e-2.3-r-20250123-UNOFFICIAL-a5y17lte.zip
-rw-r--r--. 1 root   75 23 janv. 10:03 e-2.3-r-20250123-UNOFFICIAL-a5y17lte.zip.md5sum
-rw-r--r--. 1 root  107 23 janv. 10:03 e-2.3-r-20250123-UNOFFICIAL-a5y17lte.zip.sha256sum

Compiler /e/OS

Il ne reste plus qu’à installer cette ROM. Je redémarre le téléphone en mode Recovery :

$ adb reboot recovery

Une fois que TWRP s’affiche, je choisis successivement Advanced > ADB Sideload > Swipe to Start Sideload.

$ adb sideload e-2.3-r-20250122-UNOFFICIAL-a5y17lte.zip

J’appuie sur Reboot et je retrouve un système /e/OS à jour avec toutes mes applis qui fonctionnent parfaitement.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


10 commentaires

Raph · 28 janvier 2025 à 9 h 33 min

Bonjour,
Merci beaucoup pour ce retour ! Même si je ne suis plus concerné par cette problématique, la question s’était posé à un moment de construire une ROM sur mon poste. À l’époque, les documentations me semblaient plus complexes et beaucoup moins user-friendly, je n’avais pas osé sauter le pas. Vous présentez cela comme coulant de source en quelques lignes de commande avec des explications limpides, c’est encourageant et montre que ce n’est pas si galère que ça sous réserve d’avoir le matos.
Encore merci !

rican · 29 janvier 2025 à 13 h 42 min

Je me fais la même réflexion que « Raph » à propos d’e/os et je vous remercie de nous faire profiter de vos expériences. Je dispose moi-même d’un Samsung Galaxy A5 2017, mais j’ai abandonné et je suis repassé sur mon vieux XIAOMI, car malheureusement, aussi bien LineageOS que e/OS ont abandonné le développement sur le Galaxy alors que sur le XIAOMI je suis sur la version Android 14 (e/os 2.7, version U).
Je me suis également tourné vers PostMarketOS (Linux) et manque de chance le Galaxy A5 2017 n’est plus pris en charge même si quelques développeurs ont réussi à l’installer il a plusieurs mois.
Si jamais vous partiez sur cette piste (en tant qu’admirateur de Linux !) je veux bien vous accompagner car la compilation/débogage sous PostMarketOS est trop complexe pour moi.
Encore merci, Ricardo.

Emmanuel · 29 janvier 2025 à 23 h 25 min

Oui, un grand merci pour cette documentation !
Ma seule interrogation est comment déterminer la bonne branche/ le bon tag ?

    kikinovak · 30 janvier 2025 à 10 h 13 min

    J’ai posé cette question dans le forum. Un développeur a essayé de m’expliquer les branches et le cycle de support respectif dans AOSP, LineageOS et /e/OS, mais je pense que je n’ai pas un QI suffisant pour comprendre comment ça fonctionne. J’ai donc suivi bêtement le conseil d’un des gourous du forum qui m’a conseillé d’opter pour la branche v2.3-r pour l’instant.

max · 30 janvier 2025 à 6 h 25 min

Bonjour,
Merci pour le partage. Possédant moi meme ce telephone je désespérais de ne plus voir les mises a jour. Allez vous continuer a partager les roms sur ce site ? Combien de temps prend la compilation de la rom (je n’ai pas une machine de guerre a la maison 😉 )?

    kikinovak · 30 janvier 2025 à 10 h 10 min

    Sur ma station de travail ça m’a pris 1h30. Avec un processeur 36 cœurs, un disque NVMe et 40 Go de RAM. Et dans la mesure du possible je vais publier des ROM à jour, mais uniquement lorsque les applis cessent de fonctionner correctement. Je navigue à vue. 🙂

ricana · 30 janvier 2025 à 12 h 22 min

# Rom : which version of Android is /e/OS forked ?
Android 14 (U) / LOS 21
Android 13 (T) / LOS 20 (/e/-1.x-T branch).
Android 12 (S) / LOS 19.1 (/e/-1.x-S branch).
Android 11 (R) / LOS 18.1 (/e/-1.x-R branch).
Android 10 (Q) / LOS 17.1 (/e/-1.x-Q branch).
Android 9 (Pie) / LOS 16 (/e/-0.x-P branch).
Android 8 (Oreo) / LOS 15 (/e/-0.x-O branch).
Android 7 (Nougat) / LOS 14 (/e/-0.x-N branch).
La version v2.3.r est donc un Android 11 et LineageOS 18.1.
Le support du Galaxy A5 2017 est abandonné aussi bien sur LineageOS que sur e/OS, donc une compilation sur une nouvelle version est « pratiquement » mission impossible !

    kikinovak · 30 janvier 2025 à 16 h 39 min

    Merci beaucoup sur cette explication. Apparemment la version 2.3-r que j’ai compilée supportait encore mon modèle, mais il n’y avait pas de version officielle d’/e/OS correspondante. Une question complémentaire : comment est-ce que je fais pour voir si une certaine version de LineageOS supporte théoriquement un certain type de hardware ? J’imagine que dans le cas de mon téléphone, il suffit de voir s’il existe un répertoire a5y17lte quelque part dans les sources. Corrigez-moi si je me trompe.

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *