¿Es posible crear un auto-crecimiento tmpfs ramdisk en un Android 4.x rooteado? Si es así, ¿cómo?
Ok, este camino es escribible por todas las aplicaciones: mount -o size=16M -t tmpfs tmpfs /data/local/tmp
¿Es posible crear un auto-crecimiento tmpfs ramdisk en un Android 4.x rooteado? Si es así, ¿cómo?
Si haces un cat /proc/filesystems
debería notar tmpfs . Así que si tienes acceso a la mount
debería ser capaz de
mkdir MYDIRECTORY
)mount -t tmpfs tmpfs MYDIRECTROY
)Por defecto, un montaje tmpfs utilizará la mitad de la RAM disponible en su sistema. Así que en lugar de "auto-crecimiento" puedes pensar en ello como "auto-encogimiento" - es decir, cuanto más lo uses, menos RAM estará disponible. En el peor de los casos tu sistema podría empezar a intercambiar (lo que no quieres). Puedes usar las opciones para usar un tamaño de RAM diferente para ese montaje.
2017-02-28 Actualización: Debido a las restricciones impuestas por Android se debe elegir un punto de montaje por debajo de una escritura para todas las Apps. Como una tarjeta SD.
Ok, este camino es escribible por todas las aplicaciones: mount -o size=16M -t tmpfs tmpfs /data/local/tmp
@eadmaster ¿qué parte de eso hace que se pueda escribir por todos? ¿el tamaño o el punto de montaje? (no me funciona...)
Del linky que el OP ha adjuntado, la parte clave lo resume:
tmpfs está soportado por el kernel de Linux a partir de la versión 2.4.[3] tmpfs (anteriormente conocido como shmfs) está basado en el código ramfs utilizado durante el arranque
El énfasis es mío, ¡de eso se trata el RAMDisk! Permite que el kernel monte temporalmente el sistema de archivos Root, y que continúe ejecutando los scripts necesarios al arrancar.
Lo mismo ocurre en este caso de Android, todos y cada uno de los boot.img
que se destina a la /boot
partición, ya sea por Odin, fastboot, Kies, Sony Update Software, Heimdall, etc, contiene el "código ramfs", que tiene una estructura de directorios que contiene, se incluyen los pertinentes:
/dev
para los archivos de los dispositivos/sbin
para los binarios del sistema/sys
para el uso de la interacción con los archivos del dispositivo después de /proc
ha montadoEl boot-up script lee la estructura de directorios ramfs y la monta después de montar con éxito el /system
en la fase inicial del arranque.
Como en relación con la palabra clave del PO en la pregunta:
crear un auto-crecimiento ...
No crece automáticamente, sino que está limitado por la estructura ramfs y la cantidad de RAM disponible, y lo que es más importante, ¡desaparece al reiniciar!
La confusión viene de mezclar indistintamente "RAMDisk" con "RAMDrive", técnicamente una RAMDrive, es un espacio de intercambio en la partición de intercambio nativa, comúnmente encontrado en Linux de escritorio Si estás pensando en la antigua era del DOS, donde se utilizaba el RAMDrive, para simular una unidad de disco residente en memoria, y los programas cuando se copiaban a ese disco, y se cargaban más rápido no se ejecuta más rápido en lugar de cargar desde las antiguas unidades de disco MFM/RLL ( ¿Has visto alguna vez que el listado de directorios del DOS se desplaza muy lentamente en esas unidades? ) esto, ¡también se conocía como RAMDisk! (Para empeorar las cosas, en aquel entonces, diferentes fabricantes producían RAMDRIVE.SYS o incluso RAMDISK.SYS)
En el caso del punto de vista del kernel de Linux, tanto de escritorio como de Android, RAMDisk es tmpfs pero no está pensado para que los usuarios normales almacenen datos/documentos, etc., ya que eso es exclusivamente para el uso del propio núcleo.
Para anotar el comentario de @nil más abajo, se puede montar sí, pero tiene un coste, los recursos asignados al tmpfs
se reduce a la mitad y utiliza la mitad de lo que queda de RAM. Siendo realistas, no es una vía ideal para perseguir desde el punto de vista de la ejecución de Android en los dispositivos.
Ahí es donde el /sdcard
entra, para almacenar datos/documentos del usuario sólo por esa razón, de ahí que haya omitido el hecho de que se pueda, pero de nuevo, por qué ?
@Nils ¡No he dicho que sí! Eso se hace desde el momento en que el kernel ha arrancado y ejecuta mount -t tmpfs
después de leyendo el ramfs (que tiene un barebones init script), una vez que está montado, entonces el resto del sistema trae como en el post-boot, que es el entorno Android. Además, al hacer eso después, por ejemplo adb shell
En el caso de los teléfonos inteligentes con memoria y recursos limitados, se están reduciendo los recursos del sistema.
No, montar un tmpfs no utilizará la RAM. El uso comenzará cuando pongas archivos en él - al menos esto es lo que hacen mis servidores Linux. Y Android funciona con Linux...
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.
2 votos
¿Para qué necesitas esto?
0 votos
Almacenamiento temporal de varios archivos de documentos
0 votos
¿Qué hay de malo en utilizar la tarjeta SD?
1 votos
La tarjeta SD no se limpia automáticamente cuando se apaga...
3 votos
@geffchang ¿qué más da por qué necesita esto? resulta que yo también lo necesito, por una razón totalmente diferente.
4 votos
Y en mi caso, la razón es el almacenamiento temporal (Android puede matar mi proceso sin avisar en casi cualquier momento) sin necesidad de tocar la flash (ciclos de borrado limitados, mayor uso de energía, más lento, etc.)