На моем телефоне 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()
которая также сообщает об отсутствии свободного места для моего приложения.
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 и его разделов. Возможно, эти фотографии вас куда-то приведут.
(Нажмите на изображение, чтобы увеличить)
УильямКФ
stat
сообщает об отсутствии места, но я могу записывать файлы в корневую фс, она не заполнена, далеко не так.Аббас Эльмас
Повелитель огня