Construction de l’amorce d’UBports (ubports-boot)

Ubuntu Touch utilise Upstart plutôt que Systemd comme processus d’initialisation. De ce fait, il n’est pas pleinement compatible avec Halium et ne peut donc pas utiliser la version standard hybris-boot d’Halium. Pour cette raison, nous avons besoin de construire une amorce ubports-boot.

Ajout des sources à l’arborescence d’Halium

La première chose qu’il est nécessaire de faire est d’ajouter les sources d’ubports-boot à votre arborescence d’Halium. Vous pouvez choisir de le faire en l’ajoutant à vos fichiers manifestes locaux (recommandé) ou simplement en le clonant au bon endroit.

Aujout au fichier manifeste local

Créez un nouveau fichier dans .repo/local_manifests nommé ubports-boot.xml. Ajoutez ce qui suit au fichier :

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
    <project name="ubports/ubports-boot" path="halium/ubports-boot" remote="hal" revision="master" />
</manifest>

Maintenant, faites seulement un repo sync pour télécharger la nouvelle source.

Clonage manuel

Vous pouvez aussi choisir de cloner manuellement le répertoire ubports-boot dans votre arborescence. Il devrait être placé dans BUILDDIR/halium/ubports-boot.

Si vous partagez votre code et les instructions de construction, veuillez indiquer que vous avez fait cela.

Inclusion dans le système de construction

Normalement, le système de construction d’Android ne sait pas ou trouver ubports-boot. Pour corriger cela, ouvrez le fichier BUILDDIR/build/core/main.mk dans un éditeur de texte. Trouvez le commentaire # Specific projects for Halium et ajoutez halium/ubports-boot à la liste de subdirs

subdirs += \
        halium/hybris-boot \
        halium/ubports-boot

Correction des montages

À faire

Il s’agit d’un contournement pour ubports/ubports-boot #1 et ubports/ubports-boot #2. Cela ne devrait pas être considéré comme une solution permanente. Soyez prêt à revenir sur ce point plus tard lorsque ces problèmes auront été corrigés.

Le fichier initramfs de l’image ubports-boot reçoit un paramètre en ligne de commande, datapart=, qui le redirige vers le dispositif de bloc qui est normalement monté dans /data sur Android. Ce paramètre est automatiquement intégré dans l’image au moment de la construction en cherchant /data dans le fichier fstab par défaut de votre appareil et en utilisant sa source. Malheureusement, cette source est généralement un nœud dans /dev/block/bootdevice/by-name ou quelque chose d’autre de bizarre, ce qui est uniquement disponible dans le fichier initramfs d’un Android. Pour résoudre cela, Halium utilise le script fixup-mountpoints, avec lequel vous êtes probablement familiarisé(e) à présent.

Le fichier initramfs d’ubports-boot n’utilise pas le script fixup-mountpoints et ne met pas non plus les dispositifs de bloc à la bonne place pour un montage sans modification. Pour cette raison, nous allons devoir éditer le fichier fstab de votre appareil.

La première étape de ce processus consiste à déterminer où se trouve votre fichier fstab. La plupart du temps, il est à l’intérieur de BUILDDIR/device/MANUFACTUER/CODENAME/rootdir/etc et il est appelé soit fstab. qcom soit fstab. devicename. Ouvrez le fichier pour le modifier.

Une fois le fichier ouvert, remplacez le src, ou premier attribut, du point de montage /data par ce que vous mettez dans fixup-mountpoints pour /data, mais sans le dossier /block. Par exemple, sur le Moto G5 Plus, le dispositif de bloc est /dev/block/mmcblk0p54, donc j’ai mis /dev/mmcblk0p54 à cet endroit. Modifiez également le type en ext4 si ce n’est pas déjà fait.

Maintenant, supprimez toutes les options context= de tous les dispositifs de blocs dans le fichier. Enregistrez et quittez.

Pour exemple, consultez cette proposition sur universalsuperbox/android_device_motorola_potorola_potter. Il n’est pas nécessaire de retirer l’indicateur « wait », il s’agissait d’un accident.

Modification du fichier init.rc

Certains services Android entrent en conflit avec ofono sous la version 16.04 et feront redémarrer votre appareil sans avertissement, environ 30 à 60 secondes après son démarrage. Nous devrons désactiver ces services jusqu’à ce que le problème soit résolu.

Pour ce faire, ouvrez le fichier init. rc par défaut de votre appareil (il s’agit probablement d’init. qcom. rc ou d’init.[nom de code]. rc), commentez toutes les instructions import et ajoutez disabled à des services comme rild, qti et autres qui s’interfacent avec la radio. La plupart d’entre eux ont une ligne user radio. Par exemple, consultez la modification 7875b48b sur UniversalSuperBox/android_device_motorola_potter

Modification de la configuration du noyau

Ubuntu Touch a besoin d’une configuration de noyau légèrement différente de celle d’Halium, intégrant l’activation d’Apparmor. Fort heureusement, nous disposons d’un joli script pour cela, check-kernel-config. Il est disponible dans le répertoire ubports-boot. Exécutez-le simplement sur votre configuration comme ci-dessous

./halium/ubports-boot/check-kernel-config path/to/my/defconfig -w

Vous devrez peut-être le faire deux fois. Cela va probablement corriger les choses les deux fois. Lancez ensuite le script sans l’indicateur -w pour voir s’il y a d’autres erreurs. S’il y en a, corrigez-les manuellement. Une fois terminé, lancez le script sans le l’indicateur -w` une fois de plus pour vous assurer que tout est correct.

Construction de l’image

Une fois qu’ubports-boot est en place, vous pouvez le construire assez simplement. Vous devrez également reconstruire system.img en raison de nos changements.

  1. Allez dans votre répertoire BUILDDIR d’Halium via cd
  2. source build/envsetup.sh
  3. Exécutez breakfast ou lunch, en fonction de celui que vous utilisez pour votre appareil
  4. mka ubports-boot
  5. mka systemimage

Continuez

Maintenant qu’ubports-boot est construit, vous pouvez passer à l”: doc:installing-16-04.