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)