Est-il possible de créer un ramdisk tmpfs à croissance automatique sur un Android 4.x enraciné? Si oui, comment?
temp-files
eadmaster
la source
la source
Réponses:
Si vous faites cela,
cat /proc/filesystems
vous devriez remarquer tmpfs . Donc, si vous avez accès à lamount
commande, vous devriez pouvoirmkdir MYDIRECTORY
)mount -t tmpfs tmpfs MYDIRECTROY
)Par défaut, un montage tmpfs utilisera la moitié de la RAM disponible sur votre système. Donc, plutôt que de "croître automatiquement", vous pouvez le considérer comme "rétrécissant automatiquement" - c'est-à-dire que plus vous l'utilisez, moins la RAM sera disponible. Dans le pire des cas, votre système peut commencer à échanger (ce que vous ne voulez pas). Vous pouvez utiliser des options pour utiliser une taille de RAM différente pour ce montage.
Mise à jour du 28/02/2017: En raison des restrictions imposées par Android, vous devez choisir un point de montage en dessous d'un inscriptible pour toutes les applications. Comme une carte SD.
la source
mount -o size=16M -t tmpfs tmpfs /data/local/tmp
ls -Fal
dans le répertoire monté?ls -Fal
dans le répertoire monté ne donne aucune sortie. Je reçois juste l'invite. Si je liste le répertoire du parent, je reçoisdrwxrwxrwt root root 2014-04-06 20:18 tmp
Du lien que l'OP a inclus, la partie clé l'a résumé:
Soulignez le mien, c'est à cela que sert le 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.
Il en va de même dans ce cas d'Android, tous ceux
boot.img
qui sont flashés sur la/boot
partition, que ce soit par Odin, fastboot, Kies, Sony Update Software, Heimdall, etc., contient le "code ramfs", qui a une structure de répertoires contenant des éléments pertinents. sont inclus:/dev
pour les fichiers de périphérique/sbin
pour les binaires système/sys
pour l'utilisation de l'interaction avec les fichiers du périphérique après le/proc
montageLe script de démarrage lit la structure du répertoire ramfs et la monte après avoir correctement monté le
/system
dans la toute première étape de démarrage.Comme par rapport au mot clé du PO dans la question:
Il ne se développe pas automatiquement en soi, 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 de l'inter-mélange de "RAMDisk" avec "RAMDrive" de manière interchangeable, techniquement un RAMDrive, est un espace de swap dans la partition de swap native, communément trouvé sur le bureau Linux Si vous pensez à l'ancienne ère DOS, où RAMDrive était utilisé , pour simuler un lecteur de disque résidant en mémoire, et les programmes lorsqu'ils sont copiés sur ce disque, et chargés plus rapidement ne s'exécutent pas plus rapidement , plutôt que de charger à partir des anciens lecteurs de disque MFM / RLL ( Voir la liste des répertoires DOS défiler très lentement sur ces lecteurs) ? ) cela, était également 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 du point de vue du noyau Linux, à la fois de bureau et d'Android, RAMDisk est tmpfs , mais n'est pas destiné aux utilisateurs normaux pour stocker des données / documents, etc. car cela est exclusivement destiné à l'usage du noyau lui-même!
Éditer
Pour noter le commentaire de @ nil ci-dessous, vous pouvez le monter oui, mais il a un coût, les ressources allouées au
tmpfs
sont divisées par deux et utilisent la moitié du reste de la quantité de RAM restante. De manière réaliste, ce n'est pas une avenue idéale pour poursuivre du point de vue d'Android fonctionnant sur des appareils.C'est là
/sdcard
qu'intervient, pour stocker les données / documents utilisateur pour cette seule raison, d'où la raison pour laquelle j'ai omis le fait que vous pouvez, mais là encore, pourquoi ?la source
mount -t tmpfs
.mount -t tmpfs
après avoir lu les ramfs (qui a un script d'initialisation barebones), une fois qu'il est monté, le reste du système s'affiche comme dans le post-démarrage, qui est l'environnement Android. De plus, en faisant cela par la suite, par exempleadb shell
, vous réduisez les ressources système, en particulier dans le cas des smartphones avec une mémoire et des ressources limitées!