Cómo hacer que los enlaces simbólicos funcionen dentro de /almacenamiento/emulado en 4.4.4

Creé un enlace simbólico de /storage/sdcard1/somefoldera /data/media/0/somefolder, pero las aplicaciones tratan el enlace simbólico como un archivo y no como una carpeta (y fallan porque están codificados para buscar archivos dentro de una carpeta en esta ruta).

Las aplicaciones root que acceden al enlace simbólico desde Works /data/media/0/somefoldery lo tratan como una carpeta, las aplicaciones no root usan un punto de montaje fusionado en /storage/emulated/0/somefoldersu lugar porque no tienen permiso para mirar dentro /data/media.

No es posible vincular directamente al punto fusionado (error de enlace de dispositivo cruzado). El permiso de punto de enlace simbólico en el punto fusionado es 770para a en app_ID:1028lugar de 777como root:rootsi fuera de /data/media, no es posible cambiar los permisos usando la raíz en el punto fusionado. /storage/sdcard1/somefolderes 777_

El exploit depurado se debe evitar el mayor tiempo posible y los puntos de montaje no serán visibles en todo el sistema.

¿Qué debe cambiarse para que el enlace simbólico funcione desde el punto fusionado? ¿Cómo afectará al resto del sistema?

Respuestas (2)

Android protege los puntos de montaje desde que salió Android 4.2. Ya mencionaste el truco de depuración, así que asumo que conoces esta restricción.

Esto puede parecer obvio, pero primero debe comprobar si el sistema de archivos que se utiliza en el almacenamiento externo emulado y en el almacenamiento externo real admiten enlaces simbólicos. Si su tarjeta SD está formateada como FAT32, que no admite enlaces simbólicos, no pasará nada y deberá formatear el almacenamiento externo a algo como ext2/3/4 o yaffs.

El error de 'enlace de dispositivo cruzado' puede solucionarse usando ln -s /data/media/0/somefolder /storage/sdcard1/somefolderen lugar de ln /data/media/0/somefolder /storage/sdcard1/somefolder. Esto creará un enlace simbólico en lugar de un enlace físico, por lo que puede abarcar sistemas de archivos y dispositivos de almacenamiento. Tienes que hacer esto como root o de lo contrario no funcionará.

Si los permisos son un problema, es posible que deba solucionar el 'problema de la tarjeta SD externa'. Este problema hace que la tarjeta SD externa real sea de solo lectura en las versiones de Kitkat. Los detalles están en esta página . Todo se reduce a la edición /system/etc/permissions/platform.xmlpara que las aplicaciones con el WRITE_EXTERNAL_STORAGEpermiso también puedan escribir en el almacenamiento externo 'real'. Esto se puede hacer instalando esta aplicación o haciendo lo siguiente:

  1. Inicie su administrador de archivos favorito con derechos de acceso raíz habilitados. Puede usar cualquier aplicación que prefiera que pueda ejecutarse de forma elevada en su dispositivo. Por ejemplo, la aplicación 'Root Explorer' o 'Total Commander' o 'File Manager' de CyanogenMod servirán.

  2. Navegue hasta el siguiente archivo:

/sistema/etc/permisos/plataforma.xml

  1. Busque las líneas android.permission.WRITE_EXTERNAL_STORAGE y android.permission.WRITE_MEDIA_STORAGE. Estas son secciones XML. Debe hacer que se vean exactamente como las cadenas a continuación:
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r" />
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>
<permission name="android.permission.WRITE_MEDIA_STORAGE" >
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>

Guarde el archivo plataforma.xml. Es necesario establecer los permisos de archivo en 644 (rw-/r–/r–) antes de reiniciar el dispositivo móvil. Ahora reinicie su dispositivo Android.

Los créditos van a poolmaker@XDA

Lo siento, pero no te entendí bien, pero si quieres liberar más espacio en la memoria interna mediante la creación de enlaces simbólicos. ¿Por qué no pruebas Link2SD? Ahora puede vincular incluso los datos privados de cualquier aplicación a una tarjeta SD externa. sin causar ningún problema además de, pero NO ENLACE NINGUNA APLICACIÓN DEL SISTEMA A LA tarjeta SD externa, ya que causará efectos negativos en su teléfono. Es muy recomendable tener una tarjeta SD con escritura y lectura de alta velocidad.

Link2SD hace trampa en la depuración y no permite la vinculación arbitraria, de las últimas pruebas que hice con él, ¿podría mostrarme un ejemplo de cómo mover arbitrariamente /sdcard/arbitrary_folder a /storage/sdcard1/arbitrary_folder con Link2SD con archivos en esta carpeta? ¿Queda disponible en ambas ubicaciones para que las aplicaciones codificadas puedan leer en esta ruta no convencional? ¿Cómo me permitirá link2sd hacer que los enlaces simbólicos funcionen en el punto de montaje fusionado?