Introduction au portage

Cette première section vous présentera les spécificités du portage d’Ubuntu Touch sur un appareil Android. Veuillez noter qu’elle a été rédigée à l’intention du grand public et non du développeur de portage expérimenté. Dans les sections suivantes, nous avons fait un effort de différenciation en gardant le texte principal plus concis afin de répondre aux besoins du lecteur plus expérimenté, tout en fournissant des liens vers des lectures complémentaires pour les moins expérimentés.

L’ensemble du guide est rédigé sous forme d’une séquence d’étapes décrivant comment pourrait se passer un portage idéal. Cependant, le portage est imprévisible et compliqué. Chaque appareil est différent et, en réalité, vous allez probablement itérer sur certaines étapes, en sauter d’autres et découvrir des défis nouveaux et non documentés.

Qu’est-ce qu’Ubuntu Touch ?

Ubuntu Touch est un système d’exploitation libre pour les appareils mobiles. Il peut être porté sur des appareils qui, à l’origine, étaient équipés d’un système d’exploitation Android. Hélas, la majorité de ces appareils dépendent dans une certaine mesure de logiciels propriétaires.

Pour être spécifique, les vendeurs d’appareils ont tendance à garder le code qui parle directement au matériel de l’appareil, les pilotes de bas niveau propriétaires des fabricants. Ces composants sont communément appelés les « vendor blobs ». Ils doivent être incorporés dans un portage d’Ubuntu Touch. Notez que ces composants sont spécifiques non seulement à chaque appareil, mais aussi à chaque version d’Android. Il est donc nécessaire d’utiliser la version correcte de ces composants lors de la création d’un portage.

C’est pourquoi Ubuntu Touch ne peut pas être entièrement créé à partir du code source de la plupart des appareils commerciaux. Au lieu de cela, le portage du système sur ces appareils implique l’intégration des blobs mentionnés précédemment dans le reste du système, qui peut être construit à partir du code source.

Le composant suivant d’Ubuntu Touch est un système de fichiers racine pré-compilé qui doit être installé sur l’appareil. Ce composant ne communique pas directement avec le matériel de l’appareil. Cette communication est plutôt assurée par une couche d’abstraction matérielle (« Hardware Abstraction Layer », ou HAL) qui doit être créée pour chaque appareil spécifique, car chaque appareil a son architecture matérielle spécifique. Ce composant est appelé Halium et est disponible en différentes versions (5.1 qui est largement obsolète, 7.1 et 9 à l’heure actuelle) correspondant à différentes versions d’Android.

Le projet Halium permet aux systèmes Linux de fonctionner sur du matériel Android. Il s’agit d’un effort conjoint de plusieurs systèmes d’exploitation mobiles, notamment Plasma mobile, Lune OS et UBports. Le portage UBports s’appuie sur le portage d’Halium. Par conséquent, vous utiliserez à la fois le guide de portage d’Halium et le guide de portage d’UBports. Parfois, il peut également être utile de tester avec l’un des autres systèmes d’exploitation pour déboguer un problème sous différents angles.

Halium est donc une partie indispensable d’un portage d’Ubuntu Touch et est disponible sous forme de logiciel libre. Le développement d’une nouvelle version d’Halium est une tâche considérable, c’est pourquoi seules quelques versions d’Halium sont disponibles. Chaque portage d’Ubuntu Touch doit être basé sur une des versions d’Halium disponibles et sur les blobs de la version d’Android correspondante. Voir les deux premières colonnes du tableau ci-dessous pour plus de détails.

Ainsi, un portage d’Ubuntu Touch est composé de ces composants :
  • Le système de fichiers racine (rootfs) d’Ubuntu Touch (UT)

  • Halium (contenu dans les images de démarrage et du système)

  • Les blobs des fabricants

En tant que porteur/euse, vous devez compiler Halium (c’est-à-dire halium-boot.img et system.img) et les installer avec le rootfs d’Ubuntu Touch afin de créer un portage d’Ubuntu Touch fonctionnel.

Halium est créé à partir du code source d’une version modifiée du système d’exploitation Android appelée LineageOS. Le code source requis est disponible en ligne et doit être téléchargé et configuré pour construire la version correcte d’Halium pour chaque portage d’appareil individuel. Le tableau ci-dessous indique les versions requises pour les différentes versions d’Halium.

Version d’Android

Version d’Halium

Lineage OS (LOS)

7.1

7.1

14.1

9.0

9.0

16.0

Aperçu du processus de portage

  • Préparatifs

    Au cours de cette première étape, vous choisirez un appareil cible, recueillerez des informations à son sujet et choisirez un poste de travail approprié (fixe ou portable) sur lequel vous pourrez travailler.

  • Configurer votre environnement de construction d’Halium et effectuer un test de construction

    Cette étape consiste à télécharger tous les codes sources pertinents et à obtenir les blobs des fabricants. Vous construirez ensuite l’image de démarrage d’Halium et l’image système selon le guide d’Halium pour vous assurer que toutes vos sources sont correctement configurées et fonctionnent à l’unisson.

  • Créer halium-boot.img et system.img pour Ubuntu Touch

    Vous devez maintenant modifier votre arborescence de sources, après quoi vous procéderez à la construction des fichiers halium-boot.img et system.img qui seront utilisés dans votre portage.

  • Installer et déboguer le processus de démarrage

    L’objectif de cette étape est de réussir à démarrer Ubuntu Touch. Vous travaillerez à partir de la ligne de commande.

  • Ouvrir, Unity 8, l’interface utilisateur graphique d’Ubuntu Touch

    Cette étape implique l’ajustement de certaines configurations et un débogage supplémentaire de votre compilation.

  • Configuration complète de l’appareil

    Vous devez maintenant continuer à déboguer la compilation et ajuster la configuration jusqu’à ce que toutes les fonctionnalités défectueuses soient corrigées. À l’issue de cette étape, vous disposerez d’un portage pleinement fonctionnel, mais il ne sera pas encore capable d’accepter les mises à jour OTA (Over The Air).

  • Construire l’image recovery.img d’Ubuntu Touch

    L’image de récupération d’Ubuntu Touch est une image de récupération légèrement modifiée qui est adaptée pour fonctionner avec l’installateur d’UBports

  • Configurer l’installateur d’UBports pour votre appareil

    Lorsque vous aurez terminé cette étape, vous aurez permis à toute personne possédant l’appareil en question d’installer et d’exécuter Ubuntu Touch sur celui-ci, y compris la possibilité de recevoir les mises à jour OTA dès qu’elles sont disponibles.

Les défis du processus de portage

Pour que les composants ci-dessus fonctionnent correctement ensemble, il faut toujours passer beaucoup de temps à les configurer et à les tester. Cependant, cela implique généralement aussi un certain nombre de modifications de certaines parties du code source, parfois même beaucoup en fonction de votre appareil cible.

Heureusement, il existe une communauté de porteurs qui sont impatients de voir Ubuntu Touch porté sur de nouveaux appareils. En cas de problème, vous devriez consulter les sources ci-dessous (Obtenir de l’aide) pour voir si d’autres avant vous ont résolu le problème. Il existe des groupes de discussion en ligne sur Telegram que vous pouvez rejoindre pour demander de l’aide, mais n’oubliez pas que les participants le font pendant leur temps libre.

Connaissances et compétences préalables

Les porteurs/euses sont de toutes tailles et de toutes formes, pour ainsi dire. Par conséquent, ce guide ne présuppose pas de connaissances ou de compétences approfondies dans un domaine particulier. Vous devez cependant, au minimum, être familiarisé avec certaines commandes courantes et être à l’aise pour travailler depuis le terminal sur votre ordinateur hôte. En outre, le guide est basé sur un ordinateur hôte fonctionnant sous Linux. Si vous avez quelques connaissances en programmation, cela vous sera utile à un moment donné, surtout si vous êtes familier avec le C / C++. De plus, vous devriez vous familiariser avec git, créer un compte Github et commencer à documenter vos étapes comme décrit dans ce guide et le guide de portage d’Halium dès le début.

Nous avons tenté de donner un certain nombre d’explications en cours de route, mais ce guide n’est pas une référence approfondie sur l’architecture et le fonctionnement interne d’Ubuntu Touch. L’acquisition d’une compréhension plus approfondie nécessitera par conséquent un certain nombre de recherches de votre part.

Obtenir de l’aide de la communauté

Si vous avez des problèmes, et vous en aurez, consultez une ou plusieurs des sources ci-dessous :

Conseils généraux

Plus vous serez rigoureux dans la prise de notes et la documentation de vos démarches, moins vous passerez de temps à revenir sur vos pas et à chercher votre chemin. Lorsque vous traitez des questions qui se posent en cours de route, il est préférable de les traiter une à une. Si vous essayez de corriger plusieurs choses à la fois, vous risquez de vous retrouver à essayer de deviner quels changements ont résolu un problème donné, ce qui conduit facilement à casser à nouveau le correctif en question.

Si vous n’êtes pas découragé après avoir lu ceci, nous vous souhaitons bonne chance !