Ist es möglich, eine automatisch wachsende tmpfs-Ramdisk auf einem verwurzelten Android 4.x zu erstellen ? Wenn ja, wie?
temp-files
eadmaster
quelle
quelle
Antworten:
Wenn Sie eine machen
cat /proc/filesystems
, sollten Sie tmpfs bemerken . Wenn Sie also Zugriff auf denmount
Befehl haben, sollten Sie dazu in der Lage seinmkdir MYDIRECTORY
)mount -t tmpfs tmpfs MYDIRECTROY
)Standardmäßig verwendet ein tmpfs-Mount die Hälfte des verfügbaren RAM auf Ihrem System. Anstatt "automatisch zu wachsen", können Sie es sich als "automatisch verkleinern" vorstellen - dh je mehr Sie es verwenden, desto weniger RAM steht zur Verfügung. Im schlimmsten Fall beginnt Ihr System möglicherweise mit dem Austausch (was Sie nicht möchten). Sie können Optionen verwenden, um eine andere RAM-Größe für diesen Mount zu verwenden.
28.02.2017 Update: Aufgrund der von Android auferlegten Einschränkungen sollten Sie einen Einhängepunkt unterhalb eines für alle Apps beschreibbaren auswählen. Wie eine SD-Karte.
quelle
mount -o size=16M -t tmpfs tmpfs /data/local/tmp
ls -Fal
innerhalb des gemounteten Verzeichnisses ausgeben ?ls -Fal
im gemounteten Verzeichnis gibt keine Ausgabe. Ich bekomme gerade die Aufforderung zurück. Wenn ich das Verzeichnis vom Elternteil aufliste, bekomme ichdrwxrwxrwt root root 2014-04-06 20:18 tmp
Aus dem Link, den das OP beigefügt hat, fasste der Schlüsselteil es zusammen:
Hervorheben von mir, darum geht es bei der RAMDisk! Dadurch kann der Kernel das Root-Dateisystem vorübergehend bereitstellen und die erforderlichen Skripts beim Start weiter ausführen.
Gleiches gilt in diesem Fall von Android. Jeder einzelne
boot.img
, der auf die/boot
Partition geflasht wird , sei es von Odin, Fastboot, Kies, Sony Update Software, Heimdall usw., enthält den "Ramfs-Code", der eine Verzeichnisstruktur enthält, die relevante enthält sind inklusive:/dev
für Gerätedateien/sbin
für System-Binärdateien/sys
für die Verwendung der Interaktion mit den Gerätedateien nach dem/proc
MountenDas Startskript liest die Verzeichnisstruktur von ramfs und stellt sie bereit, nachdem sie
/system
in der sehr frühen Phase des Startvorgangs erfolgreich bereitgestellt wurde .Wie in Bezug auf das Schlüsselwort des OP in der Frage:
Es wächst nicht automatisch per se, sondern ist durch die RAMFS-Struktur und die verfügbare RAM-Größe begrenzt, und was noch wichtiger ist, es verschwindet beim Neustart!
Die Verwirrung entsteht durch das austauschbare Mischen von "RAMDisk" mit "RAMDrive", technisch gesehen ein RAMDrive, ein Swap-Bereich in der nativen Swap-Partition, der häufig unter Desktop-Linux zu finden ist. Wenn Sie an die alte DOS-Ära denken, in der RAMDrive verwendet wurde , um ein im Speicher befindliches Laufwerk und Programme zu simulieren, die beim Kopieren auf diese Festplatte kopiert und schneller geladen werden, nicht schneller ausgeführt werden , anstatt von den alten MFM / RLL-Laufwerken geladen zu werden ( siehe DOS-Verzeichnisliste, scrollen Sie auf diesen Laufwerken sehr langsam ? ) das war auch als RAMDisk bekannt! (Um die Sache noch schlimmer zu machen, produzierten damals verschiedene Hersteller RAMDRIVE.SYS oder sogar RAMDISK.SYS!)
Im Hinblick auf den Linux-Kernel, sowohl Desktop als auch Android, ist RAMDisk tmpfs , aber nicht für normale Benutzer zum Speichern von Daten / Dokumenten usw. gedacht, da dies ausschließlich für die Verwendung durch den Kernel selbst bestimmt ist!
Bearbeiten
Um den Kommentar von @ nil unten zu vermerken, können Sie ihn ja mounten, aber er ist mit Kosten verbunden, die dem zugewiesenen Ressourcen werden
tmpfs
halbiert und verbrauchen die Hälfte des verbleibenden RAM-Speichers. Realistisch gesehen ist dies kein idealer Weg, um aus der Sicht von Android, das auf Geräten ausgeführt wird, weiterzumachen.Hier kommt das ins
/sdcard
Spiel, um Benutzerdaten / Dokumente allein aus diesem Grund zu speichern. Deshalb habe ich die Tatsache weggelassen, dass Sie es können, aber andererseits, warum ?quelle
mount -t tmpfs
.mount -t tmpfs
nach dem Lesen der Ramfs (mit einem Barebone-Init-Skript) gestartet und ausgeführt wird. Sobald dieser gemountet ist, wird der Rest des Systems wie nach dem Start aufgerufen, bei dem es sich um die Android-Umgebung handelt. Wenn Sie dies später tun,adb shell
reduzieren Sie beispielsweise die Systemressourcen, insbesondere bei Smartphones mit begrenztem Speicher und begrenzten Ressourcen!