Comment DIY Port TWRP pour Android

, vous pouvez essayer de travailler avec un arbre plus petit, comme celui-ci TWRP manifeste minimal . Cependant, il peut y avoir des situations où vous aurez besoin de plus de dépôts que ne le permet ce manifeste.



Note majeure avant la compilation: Si vous ajoutez ou modifiez des indicateurs, vous devrez faire nettoyer (ou faire clobber) avant de recompiler, sinon vos changements de drapeau ne seront pas inclus!

Une fois que vous avez le code source TWRP, nous devons modifier certains des indicateurs de construction pour votre appareil spécifique. Trouvez le BoardConfig.mk pour votre appareil - il se trouve généralement dans périphériques / fabricant / nom de code (par exemple, devices / lge / hammerhead / BoardConfig.mk)



La configuration de la carte doit inclure les paramètres d'architecture et de plate-forme - ceux-ci sont généralement déjà inclus si vous utilisez la configuration de l'appareil de quelqu'un d'autre. Mais si vous avez créé les vôtres, vous devrez les ajouter. C'est parce que sans eux, le démarrage de récupération peut segfault et il ne fera que flasher le logo TeamWin sur votre écran à plusieurs reprises.



Les drapeaux doivent être placés au bas de BoardConfig.mk, sous un titre de #twrp



Pour tout périphériques, vous devez indiquer à TWRP le thème à utiliser. L'indicateur TW_THEME est utilisé à la place de l'ancien indicateur DEVICE_RESOLUTION, ce qui signifie que TWRP utilise désormais la mise à l'échelle pour étirer n'importe quel thème.

Vos options sont: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi et watch_mdpi. Pour le mode portrait, vous souhaiterez probablement le thème hdpi de 720 × 1280 et plus, mais pour les appareils paysage, optez pour 1280 × 720 et plus.

Ainsi, votre section d'indicateur de construction + indicateur de thème devrait ressembler à ceci:



#twrp

TW_THEME: = portrait_hdpi

Quelques indicateurs de build supplémentaires que vous voudrez inclure dans cette section (crédits aux forums XDA):

  • RECOVERY_SDCARD_ON_DATA: = true (cela permet une gestion correcte de / data / media sur les appareils qui ont ce dossier pour le stockage (la plupart des appareils Honeycomb et des appareils livrés à l'origine avec ICS comme Galaxy Nexus). Cet indicateur n'est cependant pas requis pour ces types d'appareils. Si vous ne définissez pas cet indicateur et n'incluez pas non plus de références à / sdcard, / internal_sd, / internal_sdcard ou / emmc dans votre fstab, nous supposerons automatiquement que l'appareil utilise un stockage émulé.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - désactive des choses comme le partitionnement de la carte SD et peut vous faire gagner de l'espace si TWRP ne correspond pas à votre patition de récupération
  • TW_NO_BATT_PERCENT: = true - désactive l'affichage du pourcentage de batterie pour les appareils qui ne le prennent pas correctement en charge
  • TW_CUSTOM_POWER_BUTTON: = 107 - cartes personnalisées du bouton d'alimentation pour l'écran de verrouillage
  • TW_NO_REBOOT_BOOTLOADER: = true - supprime le bouton de redémarrage du chargeur de démarrage du menu de redémarrage
  • TW_NO_REBOOT_RECOVERY: = true - supprime le bouton de récupération de redémarrage du menu de redémarrage
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - permute le mappage des touches entre les axes X et Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - inverse les valeurs de l'écran tactile de l'axe y
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - inverse les valeurs de l'écran tactile de l'axe x
  • TWRP_EVENT_LOGGING: = true - active la journalisation des événements tactiles pour aider à déboguer les problèmes d'écran tactile (ne laissez pas cette option activée pour une version - cela remplira votre fichier journal très rapidement)
  • BOARD_HAS_FLIPPED_SCREEN: = true - retourne l'écran à l'envers pour les écrans montés à l'envers

Des indicateurs de build supplémentaires peuvent être trouvés en parcourant les fichiers Android.mk dans la source de récupération, mais ils ne sont généralement pas utilisés, il est donc inutile de les documenter.

Utilisation de Recovery.Fstab

TWRP 2.5 et supérieur prend en charge les nouvelles fonctionnalités de recovery.fstab, notamment la possibilité d'étendre les fonctions de sauvegarde / restauration de TWRP. Vous n'avez pas besoin d'ajouter des indicateurs fstab, car la plupart des partitions seront automatiquement gérées.

TWRP ne prend en charge que les fstabs v2 dans la version 3.2.0 et supérieure - dans les anciennes versions de TWRP, vous devrez utiliser l'ancien format de fstab. Voici un exemple de TWRP fstab pour un Galaxy S4:

Pour maximiser la compatibilité avec votre arbre de construction particulier, vous pouvez créer un twrp.fstab et utiliser PRODUCT_COPY_FILES pour le placer dans> etc> twrp.fstab.

Lorsque TWRP démarre et trouve twrp.fstab dans le disque virtuel, il le renommera en> etc> recovery.fstab.bak - en gros, il remplace le fstab de votre appareil par le fstab TWRP, ce qui étend la compatibilité.

Exemple de code:

PRODUCT_COPY_FILES + = périphérique / lge / hammerhead / twrp.fstab: récupération> racine> etc> twrp.fstab

Le fstab dans TWRP peut contenir des «indicateurs» pour chaque partition répertoriée dans le fstab.

Ces drapeaux sont ajoutés jusqu'à la fin de la liste des partitions dans le fstab, séparées par des espaces / espaces / tabulations. L'indicateur n'affectera que cette partition, mais pas les autres. Les drapeaux sont séparés par des points-virgules. Voici un exemple de code:

Examinons donc cela petit à petit. Le drapeau ici donnera un nom d'affichage de «Micro SDcard». L'indicateur wipeingui rendra cette partition disponible pour l'effacement dans le menu Advanced Wipe. L'indicateur amovible indique que cette partition n'est pas toujours présente, ce qui empêchera l'affichage des erreurs de montage.

Une liste complète des drapeaux (crédits à TeamWin) :

  • amovible - indique que la partition peut ne pas être présente, ce qui empêche l'affichage des erreurs de montage lors du démarrage
  • espace de rangement - indique que la partition peut être utilisée comme stockage, ce qui rend la partition disponible comme stockage pour la sauvegarde, la restauration, les installations zip, etc.
  • paramètres de stockage - une seule partition doit être définie comme stockage des paramètres, cette partition est utilisée comme emplacement de stockage du fichier de paramètres de TWRP
  • canneberge - indique que la partition peut être effacée par le système dorsal, mais peut ne pas être répertoriée dans l'interface graphique pour l'effacement par l'utilisateur
  • userrmrf - remplace le type de format normal d'effacement et autorise uniquement l'effacement de la partition à l'aide de la commande rm -rf
  • backup = - doit être suivi du signe égal, donc backup = 1 ou backup = 0, 1 indique que la partition peut être répertoriée dans la liste de sauvegarde / restauration tandis que 0 garantit que cette partition n'apparaîtra pas dans la liste de sauvegarde.
  • wipeingui - fait apparaître la partition dans l'interface graphique pour permettre à l'utilisateur de la sélectionner pour l'effacement dans le menu d'effacement avancé
  • essuyage pendant la réinitialisation en usine - la partition sera effacée lors d'une réinitialisation d'usine
  • ignorer - blkid est utilisé pour déterminer quel système de fichiers est utilisé par TWRP, cet indicateur obligera TWRP à ignorer / ignorer les résultats de blkid et à utiliser le système de fichiers spécifié dans le fstab uniquement
  • retentionlayoutversion - fait en sorte que TWRP conserve le fichier .layoutversion dans / data sur des appareils comme Sony Xperia S qui utilise / data / media mais qui a toujours une partition / sdcard séparée
  • lien symbolique = - oblige TWRP à exécuter une commande de montage supplémentaire lors du montage de la partition, généralement utilisée avec / data / media pour créer / sdcard
  • afficher = - définit un nom d'affichage pour la partition à lister dans l'interface graphique
  • nom de stockage = - définit un nom de stockage pour la partition à répertorier dans la liste de stockage GUI
  • nom de sauvegarde = - définit un nom de sauvegarde pour la partition à répertorier dans la liste de sauvegarde / restauration de l'interface graphique
    length = - généralement utilisé pour réserver un espace vide à la fin de la partition / data pour stocker la clé de déchiffrement lorsque le chiffrement complet de l'appareil Android est présent, le fait de ne pas définir cela peut entraîner l'impossibilité de chiffrer l'appareil
  • canencryptbackup = - 1 ou 0 pour activer / désactiver, permet à TWRP de crypter la sauvegarde de cette partition si l'utilisateur choisit le cryptage (s'applique uniquement aux sauvegardes tar, pas aux images)
  • userdataencryptbackup = - 1 ou 0 pour activer / désactiver, permet à TWRP de chiffrer uniquement la partie des données utilisateur de cette partition, certaines sous-fonctions telles que / data / app ne seraient pas chiffrées pour gagner du temps
  • sous-partition de = - doit être suivi du signe égal et du chemin de la partition dont il est une sous-partition. Une sous-partition est traitée comme une «partie» de la partition principale. Par exemple, TWRP fait automatiquement de / datadata une sous-partition de / data. Cela signifie que / datadata n'apparaîtra pas dans les listes de l'interface graphique, mais / datadata sera effacé, sauvegardé, restauré, monté et démonté à chaque fois que ces opérations sont effectuées sur / data.

Un bon exemple de l'utilisation de sous-partitions est les partitions efs 3x sur le LG Optimus G:

Cela regroupe les 3 partitions en une seule entrée «EFS» dans l'interface graphique TWRP permettant aux trois d'être sauvegardées et restaurées ensemble sous une seule entrée.

Avec TWRP 3.2.0 et supérieur qui utilise V2 Fstab, vous n'a pas besoin d'ajouter d'indicateur de construction . Le support V2 Fstab est automatique. V2 Fstab prend également en charge les jokers (le symbole *) qui peuvent être utiles pour les cartes USB OTG et micro-SD avec plusieurs partitions. Vous pouvez également continuer à utiliser le format Fstab V1, et il est tout à fait possible d’utiliser les types V1 et V2 dans le même Fstab.

Par exemple, voici une ligne V1 Fstab avec un joker destiné à un USB OTG:

Voici une ligne V2 Fstab pour le même appareil qui aboutit au même résultat:

De plus, vous pouvez inclure etc twrp.flags qui utilisent le format V1 Fstab, et ils peuvent être utilisés pour compléter le V2 Fstab avec des indicateurs TWRP, des partitions supplémentaires non incluses dans le V2 Fstab, ou des paramètres de remplacement dans le V2 Fstab.

Par exemple, un appareil Huawei peut avoir ce fstab V2 dans le etc recovery.fstab:

Il peut également inclure ces indicateurs:

Donc, ici, les deux premières lignes de TWRP.Flags ajouteront les partitions de démarrage et de récupération, qui n'étaient pas présents dans le V2 Fstab. Ensuite, la ligne / cust dans TWRP.flags indiquera à TWRP de permettre à l'utilisateur final de sauvegarder la partition (cust) et de lui donner un nom d'affichage.

La partition / misc est présente dans twrp.flags, et la partition / oeminfo indique à TWRP d'autoriser également la sauvegarde et de lui donner un nom d'affichage.

Nous avons besoin de la ligne / data car de nombreux appareils Huawei sont cryptés, mais utilisent des binaires Huawei spéciaux - nous utilisons donc les binaires Huawei pour décrypter automatiquement l'appareil en mode de récupération. Donc, ici, la ligne / data indiquera à TWRP d'utiliser / dev / block / dm -0, et non / dev / block / bootdevice / by-name / userdata, qui est généralement utilisé pour un montage «correct».

Enfin, il y a / system_image, de sorte que TWRP inclura une option pour créer une image système dans les menus Sauvegarde et Restauration.

Le github officiel de TeamWin devrait également contenir les derniers exemples d'arborescences de périphériques pour les périphériques dotés d'un port TWRP officiel. Le github TeamWin peut être trouvé ICI .

Une fois Omni ou CM synchronisé, et que vous avez configuré vos indicateurs TWRP, vous devez créer une source ./build/envsetup.sh

Et vous voudrez «déjeuner» l'appareil, de sorte que vous pouvez faire quelque chose comme «déjeuner omni_hammerhead.eng».

Après un déjeuner réussi, la plupart des appareils utiliseront cette commande:

Vous devez remplacer le # in –j # par le nombre de cœurs +1. Donc, si vous avez un dual core, c'est –j3, un quadcore sera –j5, etc. Remplacez le # par le nombre de cœurs +1, donc si vous avez un dual core c'est -j3 et un quad core devient -j5, etc.

En outre, les appareils Samsung typiques auront besoin de ceci:

En effet, la plupart des appareils Samsung incluent la récupération comme un disque supplémentaire dans le démarrage, au lieu de sur une partition de récupération distincte (que la plupart des autres périphériques utilisent).

À présent, TWRP devrait être compilé pour votre appareil et, espérons-le, cela fonctionne dans un environnement d'émulateur. Vous devez toujours tester d'abord votre port TWRP dans un environnement d'émulateur, afin de ne pas risquer de déranger votre appareil.
Téléchargez cet ensemble de fichiers de configuration de périphérique.

Compilez une image de récupération à l'aide de ces fichiers de périphérique. Dans le SDK Android, cliquez sur Outils -> Gérer les AVD. Cliquez sur Nouveau. Configurez-le comme suit:

Cliquez ensuite sur OK.

Une fois que vous avez votre AVD et votre image de récupération, vous pouvez démarrer TWRP dans l'émulateur en accédant à votre dossier android-sdk / tools et en exécutant cette commande:

Notez que ADB ne fonctionne pas tout de suite. Environ 10 à 15 secondes après la fin du démarrage de TWRP, ADB sera mis en ligne. Nous démarrons ADB via init.rc donc même si TWRP ne démarre pas en raison d'une erreur de code que vous avez peut-être commise, ADB devrait toujours fonctionner. Prendre plaisir!

Appareils TWRP et A / B (crédits à TeamWin):

Du point de vue TWRP, les appareils A / B ne sont pas très différents des appareils classiques, mais les développeurs semblent hésiter à travailler sur ces appareils. Je vais essayer de faire la lumière sur ce sujet et j'espère que cela servira de guide pour le portage de TWRP sur des appareils A / B.

Tout d'abord, voyons ce qu'est un appareil A / B et en quoi il est différent. Les périphériques A / B ont des doublons de nombreuses partitions sur le périphérique. Un périphérique A / B a 2 partitions système, 2 partitions de démarrage, 2 partitions fournisseur, 2 partitions modem / micrologiciel, etc. Un seul emplacement est utilisé à la fois. Au début du démarrage, les premières étapes du bootloader lisent une petite quantité de données appelées BCB ou Bootloader Control Block et décident s'il faut démarrer les partitions A ou les partitions B. Lorsqu'une mise à jour OTA est disponible, les données de l'emplacement actif sont copiées depuis l'emplacement inactif et corrigées / mises à jour. Par exemple, si vous êtes actuellement sur l'emplacement A, votre appareil téléchargerait la mise à jour et copierait la partition système existante depuis l'emplacement A et la corrigeait / mettrait à jour avec les nouvelles mises à jour dans l'emplacement B.Une fois la copie et la mise à jour terminées, le BCB est mis à jour et l'appareil redémarre à l'aide de l'emplacement B.La prochaine fois qu'une mise à jour est disponible, la partition système de l'emplacement B est copiée dans l'emplacement A et mise à jour, le BCB est mis à jour et nous redémarrons sur l'emplacement A. Lors de l'affichage des partitions sur l'appareil, vous verrez quelque chose comme ceci:

Notez les partitions à double démarrage, système et fournisseur dans la liste ci-dessus, mais une seule partition de données utilisateur.

Bien qu'il n'y ait techniquement aucune exigence à ma connaissance, tous les périphériques A / B livrés jusqu'à présent n'ont pas de partition de récupération distincte. Au lieu de cela, l'image de démarrage contient la récupération dans son disque virtuel. L'important est de savoir que l'image de démarrage contient désormais également la récupération. Par souci d'exhaustivité, la partition système est un système de fichiers racine complet. Pendant le démarrage, si le noyau est invité à démarrer pour la restauration, il extraira le disque virtuel dans la partition de démarrage. Si le chargeur d'amorçage ne dit pas au noyau de démarrer pour la restauration, le noyau montera la partition système appropriée (A ou B) car la partition système est un système de fichiers racine complet. Cela signifie que la partition système sur ces périphériques est montée sur / au lieu de sur / system et que la partition système contient tous les fichiers qui auraient normalement été dans le disque mémoire de l'image de démarrage et un sous-dossier / system.

Du point de vue TWRP, il y a 3 choses que vous devez faire pour un appareil A / B. Tout d'abord, vous devez définir

Code:

Enfin, une fois que vous entrez dans TWRP, vous voudrez probablement vous assurer que bootctl hal-info répond correctement sans erreur. Habituellement, le binaire bootctl nécessite une bibliothèque propriétaire ou même quelques services pour fonctionner correctement. Si bootctl ne fonctionne pas correctement, vous ne pourrez pas non plus changer de logement correctement dans TWRP.

En plus du réglage

Code:

AB_OTA_UPDATER: = vrai

vous pouvez également définir:

Code:

BOARD_USES_RECOVERY_AS_BOOT: = vrai

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = vrai

Si vous définissez

Code:

BOARD_USES_RECOVERY_AS_BOOT: = vrai

puis make recoveryimage ne fonctionnera plus et à la place vous devrez faire bootimage. Je ne recommande pas de définir l'un ou l'autre de ces indicateurs pour les arborescences de build TWRP uniquement. Ces indicateurs seront probablement nécessaires pour les développeurs qui construisent des ROM complètes pour les périphériques A / B.

Installation / clignotement de TWRP sur des appareils A / B:

Étant donné que tous les périphériques A / B connus n'ont pas de partition de récupération distincte, vous devrez éventuellement flasher TWRP sur la partition de démarrage. Sur les Pixel 1 et 2, nous utilisons le démarrage rapide pour démarrer temporairement TWRP sans faire clignoter TWRP. Nous fournissons ensuite un zip pour permettre aux utilisateurs de flasher TWRP sur les deux emplacements. Vous pouvez télécharger l'un de ces zips sur notre site Web et mettre à jour le zip si nécessaire pour prendre en charge vos appareils. Finalement, nous ajouterons des outils à TWRP pour permettre aux utilisateurs de récupérer des fichiers flash sur ces appareils sans avoir besoin d'utiliser des zips.

Récemment, j'ai travaillé sur le Razer Phone. Le téléphone Razer ne prend malheureusement pas en charge le démarrage rapide. Au lieu de cela, les utilisateurs doivent déterminer leur emplacement de démarrage actuellement actif en utilisant

Code:

pour entrer dans TWRP. Une fois dans TWRP, ils peuvent ensuite accéder à la page de redémarrage et revenir à leur emplacement initialement actif, effectuer une sauvegarde, puis installer TWRP. L'utilisation de l'emplacement inactif permet aux utilisateurs d'obtenir une bonne sauvegarde non modifiée de leur appareil avant d'installer TWRP.

Notes complémentaires:

Si vous souhaitez obtenir TWRP officiellement pris en charge pour votre appareil afin qu'il puisse être automatiquement installé avec l'application TWRP, et vous voulez vraiment le faire afin que les autres propriétaires du même appareil puissent profiter du support TWRP officiel et c'est la bonne chose à faire, vous devrez envoyer les informations suivantes à TeamWin:

  1. Fichiers de configuration de périphérique pour compiler TWRP à partir de la source pour votre appareil - ne pas remballer un recovery.img à la main , ils doivent le compiler à partir des sources.
  2. Une fois que TeamWin a créé une copie de TWRP, ils vous l'enverront pour validation. Une fois que vous l'aurez validé, TeamWin créera une image de travail pour votre appareil et l'ajoutera à l'application TWRP officielle.
13 minutes de lecture