1 votes

Démarrer automatiquement Fairphone Open OS après le chargement latéral depuis TWRP

Après avoir écrit un code bash qui installe automatiquement LineageOS sur le Fair Phone 2 (FP2), j'implémente également l'installation «inverse» du système d'exploitation, de LineageOS à Fairphone Open OS. De Fairphone Open OS à LineageOS fonctionne parfaitement, cependant dans l'autre sens ne produit pas le comportement attendu.

Comportement attendu

Je m'attends à ce que le FP2 démarre avec succès dans une nouvelle instance de Fairphone Open OS après l'exécution :

sudo adb shell twrp sideload
sudo adb sideload 19.11.2-sibon-24df0be9-ota.zip
# terminer/arrêter le mode sideloading
sudo adb sideload /dev/null
adb reboot

Comportement observé

Cela ne fonctionne pas, car le téléphone reste bloqué dans une boucle de démarrage infinie jusqu'à ce que la connexion USB avec l'hôte soit déconnectée. Dans ce cas,

  • le téléphone démarre la nouvelle installation de Fairphone Open OS pendant environ une demi-seconde,
  • puis affiche le message "éteindre",
  • et redémarre dans le menu Android Recovery en affichant :

    Récupération Android Fairphone/FP2/FP2 9/21.03.0-rel.2-sibon-3cb25d6c userdebug/release-keys Utilisez les touches de volume et le bouton d'alimentation.

    Impossible de charger le système Android. Vos données peuvent être corrompues. Si vous continuez à recevoir ce message, vous devrez peut-être effectuer une réinitialisation des données d'usine et effacer toutes les données stockées sur cet appareil.

    Réessayer Réinitialiser les données d'usine

Si l'option Réessayer est sélectionnée, le téléphone redémarre, puis se répète en revenant à ce menu. Cependant, si Réinitialiser les données d'usine est sélectionné, la réinitialisation des données d'usine est exécutée avec succès et le téléphone démarre avec succès dans Fairphone Open OS.

Stratégie d'atténuation de l'erreur I

Étant donné que la réinitialisation d'usine "résout le problème", j'ai essayé d'automatiser cela. Cependant, je rencontre des difficultés à le faire. Le principal problème est que je n'ai plus le contrôle sur le téléphone dès que je le redémarre après avoir sideloadé le Fairphone Open OS dans TWRP. C'est parce qu'au cours du démarrage (jusqu'à l'échec/redémarrage en mode Récupération Android), le adb est non autorisé :

Liste des appareils connectés
somedeviceid    non autorisé

J'ai donc essayé d'effacer les données après le sideloading dans TWRP, mais avant de redémarrer, en utilisant :

adb shell twrp wipe data
adb shell twrp wipe cache
adb shell twrp wipe dalvik

Cependant, cela conduit également au comportement observé tel que décrit ci-dessus.

Stratégie d'atténuation de l'erreur II

Étant donné que l'effacement des données à partir du système TWRP n'équivaut pas à une réinitialisation d'usine du Fairphone Open OS, j'ai pensé que je pourrais redémarrer en mode fastboot et faire une réinitialisation d'usine à partir de là, comme cela est expliqué ici, en utilisant le code :

adb reboot bootloader
fastboot erase userdata
fastboot erase cache
fastboot reboot

Cependant, cela a briqué l'appareil. Je pense que cela l'a briqué car Fairphone Open OS remplace le système de récupération TWRP par son propre système Récupération Android, ce qui corrompt le système de récupération TWRP, puis le Fairphone Open OS a tenté de passer en mode récupération, mais cela était encore configuré sur le TWRP car il n'a pas été supprimé en raison de l'utilisation de fastboot entre-temps, mais le TWRP était corrompu. Cependant, après quelques essais et erreurs et quelques actions mal documentées, j'ai réussi à débriquer le TWRP d'une manière ou d'une autre, ce qui me ramène à essayer le comportement observé.

Stratégie d'atténuation de l'erreur III

J'ai essayé la fonctionnalité de réinitialisation comme décrit ici, depuis twrp après le sideloading, avant de redémarrer :

adb shell
recovery --wipe_data

Cela a donné comme sortie :

I:Le fichier Lun '/sys/class/android_usb/android0/f_mass_storage/lun0/file' n'existe pas, le mode de stockage USB est désactivé
TW_INCLUDE_CRYPTO := true
I: Fichier de luminosité trouvé à '/sys/class/leds/lcd-backlight/brightness'
I: Luminosité maximale 255 trouvée à partir de '/sys/class/leds/lcd-backlight/max_brightness'
I: TWFunc :: Set_Brightness: Réglage du contrôle de luminosité à 255
I: LANG: fr
I: TW_NO_LEGACY_PROPS := true

Cependant, cela a donné le même comportement observé décrit ci-dessus, nécessitant une réinitialisation d'usine manuelle avant que Fairphone Open OS ne démarre avec succès.

Question

Que pourrais-je faire pour sideloader et démarrer avec succès dans Fairphone Open OS en venant d'un système LineageOS sans que l'utilisateur ait à effectuer une réinitialisation d'usine manuellement ?

1 votes

Fastboot effacer supprime tout le système de fichiers de la partition. twrp efface les données supprime uniquement les fichiers du système de fichiers. mais passer d'une ROM à une autre (chiffrée) nécessite une partition fraîchement formatée avec un système de fichiers non crypté (ext4/f2fs) c'est pourquoi vous devez formater les données à la place (alias réinitialisation d'usine)

1voto

a.t. Points 237

Chemin vers la réponse

Parce que je n'ai pas clairement compris la différence entre la sélection, Effacer> Effacement avancé> Données> oui et Effacer>formater les données>oui Je n'ai pas testé de manière exhaustive/cohérente la deuxième option car je pensais que c'était la même que l'option Effacer> Effacement avancé> Données> oui.

Puisque j'ai déterminé expérimentalement qu'une réinitialisation aux paramètres d'usine résolvait le problème, je me suis concentrée sur automatiser cette option dans les contraintes données. En le faisant dans cette question, j'ai été de nouveau rappelée par l'option Effacer>formater les données>oui et fournie avec la commande adb dans un commentaire. Comme je n'avais pas encore trouvé de méthode de réinitialisation d'usine, j'ai essayé la commande sudo adb shell twrp format data manuellement, et cela a fonctionné. Ensuite, je l'ai essayé de nouveau dans le cadre automatisé avec : format_data=$(adb shell twrp format data) et cela a encore fonctionné. Cette réponse a été rendue possible grâce aux commentaires de alecxs.

Réponse

J'ai pu automatiser l'installation et le démarrage de Fairphone Open OS en utilisant la série de commandes suivante :

sudo adb shell twrp sideload
sudo adb sideload 19.11.2-sibon-24df0be9-ota.zip
sudo adb shell twrp format data
adb reboot

Cela a permis au téléphone de démarrer avec succès dans la nouvelle instance de Fairphone Open OS.

Remarque

La fin du mode de chargement latéral n'était plus nécessaire, donc les lignes suivantes ont été omises :

# terminer/finir le mode de chargement latéral
sudo adb sideload /dev/null

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X