9 votes

Est-il possible de créer un RAMDisk / Ramdrive pour Android 4.x ?

Est-il possible de créer un disque virtuel tmpfs à croissance automatique sur un Android 4.x enraciné ? Si oui, comment ?

8voto

Nils Points 433

Si vous faites un cat /proc/filesystems vous devriez remarquer tmpfs . Donc si vous avez accès à la mount vous devriez être en mesure de

  1. créer un répertoire ( mkdir MYDIRECTORY )
  2. monter un système de fichiers tmpfs à cet endroit ( mount -t tmpfs tmpfs MYDIRECTROY )

Par défaut, un montage tmpfs utilisera la moitié de la RAM disponible sur votre système. Ainsi, au lieu d'une "croissance automatique", vous pouvez penser à un "rétrécissement automatique", c'est-à-dire que plus vous l'utilisez, moins il y a de RAM disponible. Dans le pire des cas, votre système pourrait commencer à échanger de la mémoire (ce que vous ne voulez pas). Vous pouvez utiliser les options pour utiliser une taille de RAM différente pour ce montage.

2017-02-28 Mise à jour : En raison des restrictions imposées par Android, vous devez choisir un point de montage en dessous d'une écriture possible pour toutes les Apps. Comme une carte SD.

3voto

Nick Pierpoint Points 7976

Dans le lien que l'OP a joint, la partie clé résume la situation :

tmpfs est supporté par le noyau Linux à partir de la version 2.4[3]. tmpfs (précédemment connu sous le nom de shmfs) est basé sur la technologie code ramfs utilisé pendant le démarrage

C'est moi qui souligne, c'est le but du RAMDisk ! Il permet au noyau de monter temporairement le système de fichiers racine, et de continuer à exécuter les scripts nécessaires au démarrage.

La même chose s'applique dans le cas d'Android. boot.img qui est flashé sur le /boot La partition, que ce soit par Odin, fastboot, Kies, Sony Update Software, Heimdall, etc, contient le "code ramfs", qui a une structure de répertoire contenant, les pertinents sont inclus :

  • /dev pour les fichiers de dispositifs
  • /sbin pour les binaires du système
  • /sys pour l'utilisation de l'interaction avec les fichiers du dispositif après /proc est monté

Le script de démarrage lit la structure du répertoire ramfs et le monte après avoir réussi à monter le fichier /system au tout début du démarrage.

En relation avec le mot-clé de la question du PO :

créer un système d'auto-croissance ...

Il ne s'accroît pas automatiquement, il est plutôt limité par la structure ramfs et la quantité de RAM disponible, et plus important encore, il disparaît au redémarrage !

La confusion vient du fait que l'on utilise indifféremment "RAMDisk" et "RAMDrive", techniquement un RAMDrive, est un espace swap dans la partition swap native, communément trouvé sur le bureau de Linux Si vous pensez à l'époque du DOS, où RAMDrive était utilisé pour simuler un lecteur de disque résidant en mémoire, et où les programmes étaient copiés sur ce disque et chargés plus rapidement ne pas exécuter plus rapidement plutôt que de charger à partir des anciens lecteurs de disques MFM/RLL ( Vous avez déjà vu la liste des répertoires DOS défiler très lentement sur ces disques ? ) ceci, était aussi connu sous le nom de RAMDisk ! (Pour aggraver les choses, à l'époque, différents fabricants produisaient RAMDRIVE.SYS ou même RAMDISK.SYS !)

Dans le cas d'un point de vue du noyau Linux, tant pour les ordinateurs de bureau que pour Android, RAMDisk est tmpfs mais il n'est pas destiné aux utilisateurs normaux pour stocker des données/documents, etc. car il est exclusivement destiné à l'usage du noyau lui-même !

編集

Pour noter le commentaire de @nil ci-dessous, vous pouvez le monter, oui, mais cela a un coût, les ressources allouées à l'espace de travail. tmpfs est divisée par deux et utilise la moitié de la quantité de RAM restante. D'un point de vue réaliste, ce n'est pas une voie idéale à suivre du point de vue de l'exécution d'Android sur les appareils.

C'est là que le /sdcard entre, pour magasin les données/documents de l'utilisateur pour cette seule raison, c'est pourquoi j'ai omis de mentionner que vous le pouvez, mais là encore, por qué ?

  • Que se passe-t-il si l'utilisateur final oublie d'enregistrer les données au bon endroit - car elles sont perdues au redémarrage !

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X