9 votos

Entrando en modo seguro desde adb shell

Mi pregunta es similar a este pero no tengo necesariamente un dispositivo de apagado.

¿Cómo puedo entrar en el modo seguro de Android (o hacer que arranque en modo seguro la próxima vez) desde mi imagen de recuperación?

Supongo que es posible imitar las acciones que el sistema Android real haría al seleccionar el modo seguro en el menú de reinicio. Sin embargo, ni siquiera sé qué es lo que el modo seguro hace que Android haga con el sistema.

14voto

Firelord Puntos 161

Nota: La solución se prueba en el Android 4.2.1, 5.0.2 y 5.1.1.


El valor de la propiedad del sistema persist.sys.safemode determina si el teléfono debe arrancar en modo seguro o en modo normal.

Cuando se inicia en el sistema operativo Android, siempre que se tenga acceso a root, el valor puede cambiarse como

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

Cuando se inicia en una costumbre recuperación dado los datos y opcionalmente, la partición del sistema está montada, hacen

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

Es para ser observó que si no has arrancado en modo seguro desde el último reinicio de fábrica, el archivo persist.sys.safemode no se encontraría.

Android reinicia el contenido de dicho archivo cada vez que se reinicia, así que no tienes que preocuparte por quedarte atascado en el modo seguro. Sin embargo, para el propósito de requisito de seguridad, cambia el valor a 0 o vaciar el archivo (NULL), si alguna vez te quedas atascado.

En resumen, la propiedad que has establecido se almacena en un archivo, por lo tanto permanece persistente cuando apagas el dispositivo. Puedes ver tu valor dentro del archivo desde el modo de recuperación, siempre que no hayas arrancado en Android de nuevo después de editar la propiedad. Ahora, una vez que comiences a arrancar en el sistema operativo Android, Android et al lee el archivo, y basado en el contenido, prepara el modo seguro/ordinario para ti. Después de leer el archivo, reinicia el contenido del archivo, así que la próxima vez que reinicies, siempre estará en modo ordinario.

En mis experimentos, noté que Android arrancaría en modo seguro incluso si el valor es cualquier número entero positivo o negativo o incluso un valor decimal.

Tengo una buena pista del código fuente de ShutdownThread.java que el modo seguro requiere una propiedad del sistema para ser fijado. Sin embargo, llegué a la conclusión final usando un comentario por pylerSM y un post de ZiT777.

1 votos

Puedes probarlo por tu cuenta. Poner el prop, reiniciar el dispositivo pero sacar la batería en el logo OEM. Arranca en recovery y comprueba el contenido del archivo. Ahora arranca en Android normalmente pero ejecuta adb shell getprop | grep persist.sys.safemode o adb shell su -c echo /data/property/persist.sys.safemode continuamente durante la animación de arranque. Verá que el valor cambia de 1 a nada (NULL). // De hecho, el reinicio completo no es necesario para arrancar en modo seguro. Una vez que el prop se establece, incluso un reinicio suave podría arrancar en modo seguro.

0 votos

El nombre cambió de Android 6+ quizás a persist.sys.sm_mode ?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X