Entrar en modo seguro desde adb shell

Mi pregunta es similar a esta , pero no necesariamente tengo un dispositivo apagado.

¿Cómo puedo ingresar al 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 haría el sistema Android real cuando selecciona el modo seguro en el menú de reinicio. Sin embargo, ni siquiera sé qué hace Android con el sistema al seleccionar el modo seguro.

Respuestas (1)

Nota: La solución se prueba en 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 iniciarse en modo seguro o en modo normal.

Cuando se arranca en el sistema operativo Android, siempre que tenga acceso a la raíz, el valor se puede cambiar 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 personalizada , se montan los datos y, opcionalmente, la partición del sistema, haga

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

Cabe señalar que , si nunca ha arrancado en modo seguro desde el último restablecimiento de fábrica, persist.sys.safemodeno se encontrará el archivo.

Android restablece el contenido de dicho archivo en cada reinicio, por lo que no debe preocuparse por quedarse atascado en el modo seguro. Sin embargo, con el propósito de cumplir con los requisitos de seguridad, cambie el valor 0o vacíe el archivo (NULL), en caso de que alguna vez se quede atascado.

En pocas palabras, la propiedad que configura se almacena en un archivo, por lo tanto, permanece persistente cuando apaga el dispositivo. Puede ver su valor dentro del archivo desde el modo de recuperación, siempre que no haya reiniciado Android nuevamente después de editar la propiedad. Ahora, una vez que comience a iniciar el sistema operativo Android, Android et al lee el archivo y, en función del contenido, prepara el modo seguro/normal para usted. Después de leer el archivo, restablece el contenido del archivo, por lo que la próxima vez que reinicie, siempre estará en modo normal.

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

Obtuve una buena pista del código fuente de ShutdownThread.java de que el modo seguro requiere que se configure una propiedad del sistema. Sin embargo, llegué a la conclusión final usando un comentario de pylerSM y una publicación de ZiT777.

Puedes probar esto por tu cuenta. Configure el accesorio, reinicie el dispositivo pero extraiga la batería en el logotipo OEM. Inicie la recuperación y verifique el contenido del archivo. Ahora inicie Android normalmente, pero ejecute adb shell getprop | grep persist.sys.safemodeo de adb shell su -c echo /data/property/persist.sys.safemodeforma continua durante la animación de arranque. Vería que el valor cambia de 1 a nada (NULL). // De hecho, no es necesario reiniciar por completo para iniciar en modo seguro. Una vez que se configura el accesorio, incluso un restablecimiento parcial se iniciaría en modo seguro.
¿ El nombre cambió de Android 6+ tal vez a persist.sys.sm_mode ?