67 votos

¿Cómo puedo ejecutar un script al arrancar?

Estoy acostumbrado a ejecutar scripts al iniciar en Linux, pero no estoy seguro de cómo hacerlo en Android. Me gustaría iniciar mi demonio SSH al arrancar, para poder conectarme siempre. ¿Cómo puedo ejecutar un script arbitrario al arrancar en Android? Sería preferible hacerlo fuera de Dalvik.

1voto

PlanZ Puntos 1

Forma simple (funcionando):

  1. Prepara tus comandos post-arranque en un script, digamos /system/xbin/post-boot (establece permisos de ejecución)

  2. Agrega la ruta del script personalizado anterior al final de /system/etc/init.qcom.post_boot.sh, por ejemplo,

    # echo /system/xbin/post-boot >> /system/etc/init.qcom.post_boot.sh

¡Listo!

(Si no puedes encontrar el qcom.post_boot.sh (dispositivos Qualcomm), busca algún script de post_boot)

1voto

Jack Wade Puntos 231

Las cosas eran simples antes de Android 5 cuando SELinux no estaba aplicando. Podías poner tu código en cualquier script o reemplazar un binario con un script que se ejecutaba con privilegios de root al arrancar. Otro método era definir un servicio init personalizado específicamente para ejecutar scripts en lotes desde algún directorio.

Basándose en estos enfoques, los desarrolladores de ROM personalizadas introdujeron diferentes fenómenos pseudo-init.d como /etc/init.d/, /etc/install-recovery.sh, /etc/init.qcom.post_boot.sh, /system/bin/debuggerd, /data/init.sh, /data/local/userinit.sh, /data/local/init.d/, etc.

Sin embargo, un proceso que se ejecuta con UID 0 pero en un contexto SELinux restringido es bastante indefenso. Un servicio iniciado en el archivo init.rc con el contexto u:r:init:s0 ni siquiera puede ejecutar un script de shell desde /system/bin/, por lo que la política SELinux debe ser parcheada para inyectar un contexto sin restricciones, por ejemplo, Magisk define u:r:magisk:s0. Después de eso, es posible ejecutar un script directamente como servicio init o desde un directorio similar a init.d.

Para más detalles, consulta ¿Cómo ejecutar un ejecutable al arrancar y mantenerlo en funcionamiento?

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