Warum meldet stat keinen Speicherplatz auf / (root), aber verfügbaren Speicherplatz auf /system?

Wenn ich auf meinem gerooteten Android 4.4.2 Samsung Galaxy S4-Telefon mit armv7l-Chipsatz eine Shell starte, kann ich den statBefehl verwenden, aber einige Geräte melden seltsame Meldungen. Insbesondere /zeigt das Gerät Nullgröße, Nullblöcke, wo /systemgültige Zahlen gemeldet werden:

root@jfltevzw:/ # stat /
stat /
  File: /
  Size: 0           Blocks: 0          IO Block: 4096   directory
Device: 1h/1d   Inode: 1           Links: 31
Access: (0755/drwxr-xr-x)  Uid: (    0/ UNKNOWN)   Gid: (    0/ UNKNOWN)
Access: 1970-01-01 00:00:00.000000000
Modify: 2015-04-25 00:48:54.000000000
Change: 2015-04-25 00:48:54.000000000

root@jfltevzw:/ # stat /system
stat /system
  File: /system
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: b310h/45840d    Inode: 2           Links: 25
Access: (0755/drwxr-xr-x)  Uid: (    0/ UNKNOWN)   Gid: (    0/ UNKNOWN)
Access: 1970-01-01 00:00:00.000000000
Modify: 2015-01-10 01:52:27.000000000
Change: 2015-01-10 01:52:27.000000000

Wenn ich auf meine Reittiere schaue, sehe ich diese beiden Einträge:

/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
rootfs / rootfs rw,relatime 0 0

Warum zeigt meine Root-Partition via an stat, dass kein Speicherplatz verfügbar ist, und gibt es eine Möglichkeit, zuverlässig zu bestimmen, wie viel Speicherplatz über einen Shell-Befehl oder über einen C-Einstiegspunkt verfügbar ist, der statvfs()meiner Anwendung auch keinen verfügbaren Speicherplatz meldet?

Antworten (2)

statmeldet 0 space/blocks on / weil / = ramdisk die im ram lebt, ram ist kein blockgerät. Ihr tatsächliches Ramdrive lebt im Speicher mit Ihrem Kernel und dt.img auf einer bestimmten emmc-Partition mit der Bezeichnung boot .

Die Kombination aus Ramdisk, Kernel-Binärdatei und dt.img (Gerätebaum-Binärdatei) wird gemeinsam als boot.img bezeichnet

Das Boot-Image enthält auch einige tatsächliche Verzeichnisse [real], die als Platzhalter fungieren, normalerweise sind dies /data /dev /proc /system

Außerdem enthält Ihre Ramdisk die erforderlichen *.rc- und *.sh-Konfigurations- und Shell-Skripte, die zum Booten Ihres Geräts und zum Einrichten/Hochfahren Ihres Betriebssystems erforderlich sind. Die Ramdisk enthält auch die Selinux-Richtlinienkonfiguration, Sepolicy- und Kontextdateien Ihres Geräts. Schließlich enthält Ihre Ramdisk das /sbin-Verzeichnis, in dem sich der adb-Daemon befindet, und normalerweise die Binärdateien von Charger, healthd und ueventd sowie alle herstellerspezifischen Binärdateien, die sich auf Dienste beziehen Sicherheit. Die Ramdisk/das Ramdrive ist temporär und wird beim Herunterfahren oder Neustarten aus dem Arbeitsspeicher gelöscht und beim erneuten Hochfahren des Geräts an die vorgesehene Stelle im Arbeitsspeicher geladen.

Betrachten Sie es als Windows. Auf der gleichen 1 TB Festplatte. Sie können C:\ und D:\ gleichzeitig auf demselben Laufwerk verwenden. Sie können nicht einfach nach dem freien Platz von allen suchen.

Auf Android gibt es Partitionen auf mmc

/cache /data /system usw.

jeder hat seine eigene Informationsansicht für jeden.

Ich werde einige Screenshots von meinem 16 GB N7000 und seinen Partitionen anhängen. Vielleicht führen dich diese Bilder irgendwohin.

(Klicken Sie auf das Bild, um es zu vergrößern)

IMG: Katzenpartitionen IMG: Katzenhalterungen IMG: cat mountstats

Dies erklärt nicht, warum statkein Speicherplatz gemeldet wird, aber ich kann Dateien in das Root-fs schreiben, es ist nicht voll, weit davon entfernt.
Ich weiß, dass ich die rootfs-Statistik nicht beantwortet habe, aber die Frage ist nicht, dass ich sie noch einmal gelesen habe ... gibt es eine Möglichkeit, zuverlässig festzustellen, wie viel Speicherplatz verfügbar ist ...
Das muss noch bearbeitet werden!