Ist es möglich, eine automatisch wachsende tmpfs-Ramdisk auf einem verwurzelten Android 4.x zu erstellen ? Wenn ja, wie?
Ist es möglich, eine automatisch wachsende tmpfs-Ramdisk auf einem verwurzelten Android 4.x zu erstellen ? Wenn ja, wie?
Antworten:
Wenn Sie eine machen cat /proc/filesystems, sollten Sie tmpfs bemerken . Wenn Sie also Zugriff auf den mountBefehl haben, sollten Sie dazu in der Lage sein
mkdir 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.
mount -o size=16M -t tmpfs tmpfs /data/local/tmp
ls -Falinnerhalb des gemounteten Verzeichnisses ausgeben ?
ls -Falim 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:
tmpfs wird vom Linux-Kernel ab Version 2.4 unterstützt. [3] tmpfs (früher als shmfs bekannt) basiert auf dem beim Booten verwendeten Ramfs-Code
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 /bootPartition 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/sysfü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 /systemin der sehr frühen Phase des Startvorgangs erfolgreich bereitgestellt wurde .
Wie in Bezug auf das Schlüsselwort des OP in der Frage:
Erstellen Sie eine automatisch wachsende ...
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!
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 tmpfshalbiert 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 /sdcardSpiel, um Benutzerdaten / Dokumente allein aus diesem Grund zu speichern. Deshalb habe ich die Tatsache weggelassen, dass Sie es können, aber andererseits, warum ?
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 shellreduzieren Sie beispielsweise die Systemressourcen, insbesondere bei Smartphones mit begrenztem Speicher und begrenzten Ressourcen!