2 votos

¿Cómo ejecutar el comando `chmod` en el arranque en Android 10?

Tengo un dispositivo Android 10 cuyo bootloader está desbloqueado. He descargado su firmware, lo he modificado y he conseguido el adb shell rooteado en recovery. Los siguientes son los pasos para ello:

  1. Descargar AIK

  2. Extrae recovery.img y modifica ramdisk/default.prop de la siguiente manera:

    ro.secure=0 ro.adb.secure=0 security.perf_harden=0 ro.debuggable=1 persist.sys.usb.config=adb,mtp

  3. Reemplazar split_img/recovery.img-zImage con kernel permisivo (construido a partir de las fuentes del kernel)

  4. Vuelve a empaquetarlo y a flashearlo en el dispositivo.

  5. Reinicia a recovery y ejecuta adb shell. Estará rooteado.

Quiero añadir un simple chmod 666 /dev/diag y he montado el sistema con la opción de montaje de recuperación de stock y luego traté de hacer lo siguiente:

  1. Escribe el comando chmod al final de init.rc.
  2. He intentado crear nuevos scripts rc en la carpeta /system/etc/init/. El nuevo rc script sólo tiene escrito el comando chmod.
  3. He intentado añadir (por ejemplo, echo "chmod 666 /dev/diag" >> /system/etc/init/cameraserver.rc) el comando chmod en otros archivos rc de la carpeta /system/etc/init/.

Todos no pudieron cambiar los permisos requeridos. init.rc los cambios se pierden tras el reinicio. Otros archivos/cambios persisten después de reiniciar pero no cambia el permiso del puerto diag.

Por otro lado, pude hacer una aplicación de sistema con cambios en la carpeta /system/app/.

¿Hay algo más que pueda probar para ejecutar el comando chmod después de que el teléfono arranque?

1 votos

echo "chmod 666 /dev/diag" >> /system/etc/init/cameraserver.rc no funcionará. Debe proporcionar un init desencadenar ( on ... ). Simple es editar el ueventd.rc (debe ser del proveedor, no de AOSP) que crea /dev/diag nodo del dispositivo. Reemplace la declaración pertinente dentro de ese archivo para establecer el modo de permiso que desee.

2 votos

Si es una opción para ti: tasker puede reaccionar ante el evento BOOT_COMPLETED y ejecutar, por ejemplo, un comando de terminal como Root, del tipo ! chmod 666 /dev/diag (el signo de exclamación le indica que ejecute el comando como Root).

1 votos

@IrfanLatif on property:sys.boot_completed=1 event me ayuda a cambiar los permisos de /dev/diag pero no me ayuda a cambiar los permisos de /vendor/bin/diag_mdlog.. ¿Alguna sugerencia? He mirado en ueventd.rc y no hay cambios relacionados con diag..

2voto

Jack Wade Puntos 231

echo "chmod 666 /dev/diag" >> /system/etc/init/cameraserver.rc no funcionará. Es necesario proporcionar un init desencadenar también. Por ejemplo:

~# echo "on boot" >/etc/init/dev_diag_chmod.rc
~# echo "    chmod 666 /dev/diag" >>/etc/init/dev_diag_chmod.rc
~# chown 0.0 /etc/init/dev_diag_chmod.rc
~# chmod 0644 /etc/init/dev_diag_chmod.rc
~# chcon u:object_r:system_file:s0 /etc/init/dev_diag_chmod.rc

Pero incluso un enfoque simple es editar el ueventd.rc (que es leído y ejecutado por el administrador de dispositivos de Android) proporcionado por el proveedor (desde /dev/diag es una interfaz específica del hardware) que crea el nodo del dispositivo. Reemplace la declaración pertinente dentro de ese archivo para establecer el modo de permiso, el propietario y el grupo que desee. Por ejemplo, puedes reemplazar

/dev/diag    0660    system    system

Con:

/dev/diag    0666    system    system

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