Почему статистика сообщает об отсутствии места в / (root), но о наличии свободного места в / system?

На моем телефоне Samsung Galaxy S4 Android 4.4.2 с root-доступом и чипсетом armv7l, если я запускаю оболочку, я могу использовать команду stat, но некоторые устройства сообщают о странных сообщениях. В частности, /устройство показывает нулевой размер, нулевые блоки вместо того, чтобы /systemсообщать допустимые числа:

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

Глядя на свои маунты, я вижу эти две записи:

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

Почему мой корневой раздел показывает, statчто у него нет свободного места, и есть ли способ надежно определить, сколько места доступно из команды оболочки или через точку входа C, например, statvfs()которая также сообщает об отсутствии свободного места для моего приложения.

Ответы (2)

statсообщает 0 пробелов/блоков на /, потому что / = виртуальный диск, который находится в оперативной памяти, оперативная память не является блочным устройством. Ваш фактический ramdrive живет в хранилище с вашим ядром dt.img на указанном разделе emmc, помеченном как boot .

Объединенный виртуальный диск, двоичный файл ядра и dt.img (двоичный файл дерева устройств) вместе известны как ваш boot.img.

Загрузочный образ также содержит некоторые фактические каталоги [настоящие], которые функционируют как заполнители, обычно это /data /dev /proc /system.

Также ваш виртуальный диск содержит необходимые конфигурации *.rc и *.sh и сценарии оболочки, необходимые для загрузки вашего устройства и установки/подключения вашей операционной системы. Виртуальный диск также содержит конфигурацию политики selinux вашего устройства, файлы sepolicy и контекста, и, наконец, ваш виртуальный диск содержит каталог /sbin, в котором живет демон adb и обычно двоичные файлы Charger, Healthd и ueventd, а также любые двоичные файлы, специфичные для производителя, связанные со службами, обычно безопасность. Виртуальный диск / оперативный диск является временным и сбрасывается из памяти при выключении питания или перезагрузке и перезагружается в назначенное место в памяти при повторной загрузке устройства.

Думайте об этом как о Windows. На том же жестком диске 1 ТБ. Вы можете одновременно использовать C:\ и D:\ на одном диске. Вы не можете просто искать свободное место для всех.

На андроиде есть разделы на mmc

/кэш/данные/система и т. д.

каждый имеет свой собственный поиск информации для каждого.

Я приложу несколько скриншотов с моего 16GB N7000 и его разделов. Возможно, эти фотографии вас куда-то приведут.

(Нажмите на изображение, чтобы увеличить)

IMG: кошачьи перегородки IMG: маунты для кошек IMG: кошачьи маунты

Это не объясняет, почему statсообщает об отсутствии места, но я могу записывать файлы в корневую фс, она не заполнена, далеко не так.
Я знаю, что не ответил на статистику rootfs, но вопрос не в том, чтобы прочитать ее еще раз ... есть ли способ надежно определить, сколько места доступно ...
Это все еще нуждается в правке!