Configuration d’Ubuntu Touch

Dans la section précédente, vous avez ajusté un fichier de configuration directement dans le fichier rootfs d’UBports. Le fichier rootfs contient un certain nombre d’autres fichiers de configuration avec des paramètres standards qui ne sont pas nécessairement compatibles avec votre appareil. Ceux-ci doivent être modifiés pour s’adapter à votre appareil. Le fichier rootfs lui-même est en lecture seule et identique pour tous les appareils. Vous ne pouvez pas modifier le fichier rootfs lui-même. À la place, la bonne façon d’ajuster la configuration consiste à utiliser des fichiers de recouvrement, comme décrit ci-dessous.

Fichiers de superposition

Note that as a rule of thumb, the method described below applies if the file you need to edit can be found in the /etc directory (or a subdirectory of this) on your device. You should not attempt to overwrite files located elsewhere using this method. Note also that it is not possible to transfer executable files using this method, and that you cannot insert new files either. The only thing this method does is to overwrite a file that is already present in the build. Thus, by following the steps described here you can replace existing configuration files with ones that are tailored specifically to your device.

It is also worth noting that, as of writing, there are a number of legacy files in the mentioned directories that serve no purpose but exist there simply pending removal. Therefore, make sure you are overwriting files that are actually used by the system as your changes otherwise will have no effect.

Dans le répertoire de votre appareil, créez un sous-répertoire nommé « ubuntu ». Rassemblez dans ce répertoire les fichiers que vous souhaitez injecter dans votre version.

Les dossiers pertinents sont par exemple (mais cette liste est incomplète) :
  • 70-android.rules (les règles udev pour votre appareil, voir la section précédente)

  • android.conf (pour la mise à l’échelle de l’affichage, voir ci-dessous)

  • touch.pa (pour la configuration/initialisation du son via Pulseaudio, voir ci-dessous)

Ces fichiers sont ensuite injectés en ajoutant un bloc de code au fichier device.mk dans le répertoire de votre appareil. Pour les trois fichiers ci-dessus, ajoutez le code suivant

### Ubuntu Touch ###
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/ubuntu/70-android.rules:system/halium/lib/udev/rules.d/70-android.rules \
    $(LOCAL_PATH)/ubuntu/android.conf:system/halium/etc/ubuntu-touch-session.d/android.conf \
    $(LOCAL_PATH)/ubuntu/touch.pa:system/halium/etc/pulse/touch.pa
### End Ubuntu Touch ###

Explication :

La chaîne précédant les deux points “$(LOCAL_PATH)/ubuntu/70-android.rules” indique le chemin d’accès au fichier source à injecter. La chaîne qui suit les deux points “system/halium/lib/udev/rules.d/70-android.rules” indique l’endroit où vous souhaitez le placer sur l’appareil.

Les étapes générales à suivre sont donc les suivantes :
  1. Copiez le fichier que vous souhaitez modifier dans le répertoire “ubuntu” que vous avez créé dans l’arborescence des sources de votre appareil.

  2. Modifiez le fichier selon vos besoins.

  3. Ajoutez une ligne à la section PRODUCT_COPY_FILES de votre fichier device.mk comme indiqué ci-dessus.

  4. Reconstruisez votre fichier system.img et installez-le avec le fichier rootfs d’UBports.

Note

Les chemins cibles des fichiers mentionnés ci-dessus ne sont pas choisis au hasard. Vous devez utiliser les chemins spécifiés.

Note

Lorsque vous indiquez le chemin d’accès cible “system/halium/etc/myfilename”, votre fichier “myfilename” se retrouvera dans le répertoire “/etc” de votre appareil (c’est-à-dire sans le préfixe “system/halium”)

Reconstruction de system.img

Lorsque vous aurez fait les ajustements nécessaires et préparé votre source comme décrit ci-dessus, vous devrez reconstruire votre fochier system.img : mka systemimage. Lorsque vous reconstruisez l’image système après de petits changements comme ceux-ci, vous n’avez pas besoin de faire mka clean en premier. Cependant, les changements dans PRODUCT_PROPERTY_OVERRIDES peuvent ne pas être détectés par le système de compilation. Allez dans votre dossier de sortie, entrez dans le dossier système et supprimez build.prop afin de le régénérer.

Les règles udev

Extrayez le fichier 70-android.rules que vous avez créé dans la section précédente en utilisant adb pull ou scp et copiez-le dans le répertoire “ubuntu” de l’arborescence des sources de votre appareil. Effectuez les étapes 3 et 4 ci-dessus.

Mise à l’échelle de l’affichage

Il existe deux variables qui définissent la mise à l’échelle du contenu pour Unity 8 et les applications sur Ubuntu Touch : GRID_UNIT_PX et QTWEBKIT_DPR.

Il existe également d’autres options disponibles qui pourraient vous être utiles en fonction du facteur de forme de votre appareil. Celles-ci sont traitées ci-dessous et tous ces réglages sont expliqués en détail dans la section de référence sur les Paramètres d’affichage.

Tous ces paramètres sont devinés par Unity 8 si aucun d’entre eux n’est défini. Il existe de nombreux cas, cependant, pour lesquels la déduction est fausse (par exemple, les écrans de téléphone à très haute résolution seront identifiés comme des ordinateurs). Pour définir manuellement une valeur pour ces variables, modifiez tout simplement le fichier sous etc/ubuntu-touch-session.d/android.conf en les spécifiant. Par exemple, voici le fichier pour la tablette Nexus 7

$ cat /etc/ubuntu-touch-session.d/flo.conf
GRID_UNIT_PX=18
QTWEBKIT_DPR=2.0
NATIVE_ORIENTATION=landscape
FORM_FACTOR=tablet

La section Paramètres d’affichage détaille les méthodes de dérivation des valeurs pour ces variables.

Une fois que vous aurez ajusté le fichier android.conf aux paramètres d’affichage nécessaires pour votre appareil, ce fichier devrait pouvoir être intégré à votre compilation.

Créez le fichier android.conf dans votre répertoire “ubuntu” et entrez les paramètres que vous avez déterminés et testés dans la section précédente. Complétez les étapes 3 et 4 ci-dessus, en prenant soin de vous rappeler la note sur la façon de Recompiler le fichier system.img.

Appliquer les correctifs Apparmor au noyau

Qu’est-ce qu’Apparmor ?

Commencez par télécharger le correctif Apparmor rétroporté correspondant à la version du noyau de votre appareil. Votre version du noyau est spécifiée au début de votre fichier defconfig du noyau, c’est-à-dire celui que vous avez modifié dans la section Modifier la configuration du noyau ci-dessus.

Vous devez maintenant supprimer tout votre sous-répertoire BUILDDIR/kernel/VENDOR/MODEL/security/apparmor et le remplacer par celui que vous avez téléchargé. Puis reconstruire halium-boot.

Si vous obtenez des erreurs lors de la construction, vous devrez les résoudre une par une, en modifiant votre code source si nécessaire. Notez que vous ne devez modifier le code dans le sous-répertoire apparmor que si cela est possible. Si vous modifiez le code ailleurs, il est fort probable que cela ne fera qu’aggraver vos problèmes.

Cherchez de l’aide si nécessaire auprès d’une des sources mentionnées dans la section Obtenir de l’aide de la communauté.

Configuration du son

Le fichier touch.pa fourni, situé dans le répertoire /etc/pulse de votre appareil, doit être ajusté. Extrayez le fichier et copiez-le dans votre répertoire “ubuntu”.

Localisez la ligne

load-module module-droid-discover voice_virtual_stream=true

et remplacez-la avec ceci

load-module module-droid-discover rate=48000 quirks=+unload_call_exit

À la fin du fichier, ajoutez ceci

### Automatically load the audioflinger glue
.ifexists module-droid-glue-24.so
load-module module-droid-glue-24
.endif

Complétez maintenant les étapes 3 et 4, en prenant soin de vous rappeler la note sur la façon de Reconstruire le fichier system.img.

Configuration supplémentaire

Travaux en cours

Pour l’instant, reportez-vous à la foire aux questions sur le portage et à la liste de vérifications du portage.