2012-02-11 14 views
10

¿Puedo escribir un sistema de archivos de espacio de usuario personalizado que se pueda ejecutar en dispositivos de fábrica no rooteados a través de las utilidades estándar disponibles?¿Controlador del sistema de archivos del espacio de usuario de Android en un dispositivo no rooteado?

Soy consciente de la existencia de fuse-android, sin embargo, por lo que he entendido, requiere un dispositivo rooteado. Si ese no es el caso, por favor corrígeme.

El objetivo que trato de lograr es crear un FS "falso" que en realidad esté montado en un archivo.

Respuesta

12

Tuve la misma necesidad hace algún tiempo y llegué al punto en el que tuve que admitir que eso no es posible en absoluto (principalmente). No debería ser un problema crear libfuse para Android, también el envoltorio de Java no es un problema.

El problema real es que la mayoría de los sistemas que he visto no están compilados con buildup de soporte de fusibles ni proporcionan módulos que pueden cargarse (lo que requeriría root, pero de todos modos).

Puede averiguar fácilmente si el fusible está habilitado leyendo/proc/filesystems. Debería enumerar el fusible, de lo contrario necesitarás root. Pero es muy probable que la mayoría de los dispositivos Android estén construidos sin soporte de fusibles.

Mis otras ideas fueron utilizar otro sistema de archivos para "simular" algo como fusible. Esto puede ser posible con nfs u otro sistema de archivos de red donde puede implementar el servidor usted mismo. Esto te permitiría escribir una mecha falsa, pero no creo que valga la pena. E incluso si muchos dispositivos tuvieran soporte para fusibles, las posibilidades de construcción son altas, no permitirían que lo instalaras como usuario, necesitarías acceso raíz ya que tu aplicación no tendría los privilegios para montar sistemas de archivos de fusibles. .

+1

Gracias, esa es * exactamente * la respuesta que necesitaba. Bounty bien gastado :) –

+0

No hay problema, me alegro de poder ayudar =) – Luminger

+0

me encuentro con el mismo problema. Pero de todos modos, creo que puedo hacerlo si supero los siguientes problemas.1: hacer que el kernel de Android sea capaz de cargar el módulo kernel (lo he hecho) 2: compilación cruzada del proyecto de fusibles (lo he hecho) 3: modprobe el fuse.ko en el kernel de Android (porque no tengo idea de dónde se conecta el ko en el fusible 2.9.0 , me detengo aquí). Así que, ¿alguien puede ayudarme? Aquí está el detalle del problema: http: //stackoverflow.com/questions/10477309/what-substitute-the-fuse-ko-as-the-kernel- modlue-in-fuse-2-9 –

1

Depende de su implementación. Lo que me parece es que desea tener un archivo físico que represente un sistema de archivos de espacio de usuario completo. Tal vez similar a un .iso montado. Si este es el caso, no puedo pensar en ninguna razón para necesitar root: simplemente crea/instala el archivo en algún lugar como/sdcard/y "monta" tu sistema de archivos encima.

Dicho esto, si quiere que dicho sistema de archivos sea accesible desde otras aplicaciones que no controla, necesitará root ya que su aplicación se ejecutará en un entorno limitado de Android de lo contrario.

+0

Ok, entonces si quiero que otras aplicaciones también lo tengan y que se muestre en el árbol general del sistema de archivos, no hay forma, ¿no? –

+0

De ninguna manera que yo sepa sin root, no. – NuSkooler

+0

@NuSkooler Necesito tener un archivo montado como un sistema de archivos solo para mi aplicación, no para otros. ¿Como es posible? Parece que sabes algo sobre este logro parcial que sería suficiente para mí. Por favor, cualquier sugerencia o consejo suyo es muy apreciada. Gracias de antemano – P5music

2

Luminger casi tiene la idea correcta. Esto es lo que encontré en mi Galaxy S3 (en Verizon):

Las fusibles apropiadas existen en/proc/filesystems. Así que algo debe estar usándolo, muy posiblemente el sistema. Sin embargo, cuando intento ejecutar 'fusermount', aparece "No se puede ejecutar - Permiso denegado".

Parece que todas las cosas de FUSE están ahí, pero no tengo idea de si realmente podría usarlo directamente (dropbox? Sshfs?) Sin rootear el dispositivo.

+0

También confirmo la presencia de la versión del proveedor en la pestaña Galaxy S. – user2284570

Cuestiones relacionadas