8 votes

Entrer en mode sans échec à partir du shell adb

Ma question est similaire à celui-ci mais je n'ai pas nécessairement un appareil éteint.

Comment puis-je accéder au mode sans échec d'Android (ou le faire démarrer en mode sans échec la prochaine fois) à partir de mon image de récupération ?

Je suppose qu'il est possible d'imiter les actions du système Android réel lorsque vous sélectionnez le mode sans échec dans le menu de redémarrage. Cependant, je ne sais même pas ce que la sélection du mode sans échec fait faire au système Android.

14voto

Firelord Points 23064

Note : La solution est testée sur Android 4.2.1, 5.0.2 et 5.1.1.


La valeur de la propriété du système persist.sys.safemode détermine si le téléphone doit démarrer en mode sécurisé ou en mode normal.

Lorsque l'on démarre dans le système d'exploitation Android, avec un accès Root, la valeur peut être modifiée comme suit

adb shell su -c 'setprop persist.sys.safemode 1'
adb shell su -c 'echo "1" > /data/property/persist.sys.safemode' #alternative 

Lorsque l'on démarre dans un récupération Étant donné que les données et, éventuellement, la partition système sont montées, faites ce qui suit

adb shell busybox printf "1" > /data/property/persist.sys.safemode         #works if recovery has Busybox. If Android OS has busybox then system/xbin/busybox would work
adb shell echo "1" > /data/property/persist.sys.safemode                   #alternative
adb shell chmod 600 /data/property/persist.sys.safemode                    #required; changes the permission of file to rw-------, identical to rest of the files under /data/property

Il doit être a noté que si vous n'avez jamais démarré en mode sans échec depuis la dernière réinitialisation d'usine, le fichier persist.sys.safemode ne serait pas trouvé.

Android réinitialise le contenu de ce fichier à chaque redémarrage, vous n'avez donc pas à vous inquiéter de rester bloqué en mode sans échec. Cependant, pour des raisons de sécurité, changez la valeur en 0 ou vider le fichier (NULL), si jamais vous êtes bloqué.

En bref, la propriété que vous définissez est stockée dans un fichier, et reste donc persistante lorsque vous arrêtez l'appareil. Vous pouvez voir votre valeur dans le fichier à partir du mode de récupération, à condition de ne pas avoir redémarré Android après avoir modifié la propriété. Maintenant, une fois que vous commencez à démarrer dans Android OS, Android et al lit le fichier, et en fonction du contenu, prépare le mode sûr/ordinaire pour vous. Après avoir lu le fichier, il réinitialise le contenu du fichier, de sorte que la prochaine fois que vous redémarrez, il sera toujours en mode ordinaire.

Lors de mes expériences, j'ai remarqué qu'Android démarrait en mode sans échec même si la valeur est un nombre entier positif ou négatif ou même une valeur décimale.

J'ai obtenu un bon indice du code source de ShutdownThread.java que le mode sans échec requiert une propriété système à régler. Cependant, je suis arrivé à la conclusion finale en utilisant un commentaire par pylerSM et un poste de ZiT777.

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