9 votos

¿Es posible crear un RAMDisk / Ramdrive para Android 4.x?

¿Es posible crear un auto-crecimiento tmpfs ramdisk en un Android 4.x rooteado? Si es así, ¿cómo?

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?

8voto

Nils Puntos 218

Si haces un cat /proc/filesystems debería notar tmpfs . Así que si tienes acceso a la mount debería ser capaz de

  1. crear un directorio ( mkdir MYDIRECTORY )
  2. montar un sistema de archivos tmpfs allí ( 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.

0 votos

Ok, este camino es escribible por todas las aplicaciones: mount -o size=16M -t tmpfs tmpfs /data/local/tmp

0 votos

@eadmaster ¿qué parte de eso hace que se pueda escribir por todos? ¿el tamaño o el punto de montaje? (no me funciona...)

0 votos

@Michael que atributos ves para . si emite ls -Fal dentro del directorio montado?

3voto

Nick Pierpoint Puntos 7976

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 montado

El 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.

Editar

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é ?

  • Y si el usuario final se olvida de guardar los datos en el lugar correcto, pues se pierde al reiniciar.

0 votos

Así que la respuesta corta es: Sí, se puede. mount -t tmpfs .

0 votos

@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.

1 votos

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.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