Можно ли создать автоматически растущий виртуальный диск tmpfs на рутованном Android 4.x? Если да, то как?
Можно ли создать автоматически растущий виртуальный диск tmpfs на рутованном Android 4.x? Если да, то как?
Ответы:
Если вы делаете, cat /proc/filesystemsвы должны заметить tmpfs . Так что, если у вас есть доступ к mountкоманде, вы сможете
mkdir MYDIRECTORY)mount -t tmpfs tmpfs MYDIRECTROY)По умолчанию tmpfs-mount будет использовать половину доступной оперативной памяти в вашей системе. Таким образом, вместо «автоматического увеличения» вы можете думать об этом как об «автоматическом сжатии» - т.е. чем больше вы используете его, тем меньше оперативной памяти будет доступно. В худшем случае ваша система может начать замену (что вам не нужно). Вы можете использовать опции, чтобы использовать другой размер RAM для этого монтирования.
2017-02-28 Обновление: из-за ограничений, наложенных Android, вы должны выбрать точку монтирования ниже доступной для записи всем приложениям. Как SD-карта.
mount -o size=16M -t tmpfs tmpfs /data/local/tmp
ls -Falв смонтированном каталоге?
ls -Falв смонтированном каталоге ничего не выдает. Я просто получаю подсказку обратно. Если я перечислю каталог от родителя, я получуdrwxrwxrwt root root 2014-04-06 20:18 tmp
Из ссылки, которую вложил ОП, ключевая часть подвела его:
tmpfs поддерживается ядром Linux начиная с версии 2.4 и выше. [3] tmpfs (ранее известный как shmfs) основан на коде ramfs, используемом при загрузке
Акцент мой, вот что такое RAMDisk! Это позволяет ядру временно смонтировать корневую файловую систему и продолжить выполнение необходимых сценариев при запуске.
То же самое применимо в этом случае Android, каждый из которых, boot.imgкоторый передается в /bootраздел, будь то Odin, fastboot, Kies, Sony Update Software, Heimdall и т. Д., Содержит «код ramfs», который имеет структуру каталогов, содержащую соответствующие включены:
/dev для файлов устройства/sbin для системных двоичных файлов/sysдля использования взаимодействия с файлами устройства после /proc монтированияСценарий загрузки считывает структуру каталогов ramfs и монтирует ее после успешного монтирования /systemна самой ранней стадии загрузки.
Что касается ключевого слова ОП в вопросе:
создать авто-растущий ...
Само по себе оно не растет автоматически, скорее, оно ограничено структурой ramfs и объемом доступной оперативной памяти, и что более важно, оно исчезает при перезагрузке!
Путаница возникает из-за взаимозаменяемости «RAMDisk» с «RAMDrive» взаимозаменяемо, технически RAMDrive, это пространство подкачки в собственном разделе подкачки, обычно встречающееся в настольном Linux. Если вы думаете о старой эпохе DOS, где RAMDrive использовался для имитации дискового накопителя, находящегося в памяти, и программ, когда они копируются на этот диск и загружаются быстрее, а не выполняются быстрее , чем загрузка со старых дисков MFM / RLL (Вы когда-нибудь видели, как список каталогов DOS очень медленно прокручивается на этих дисках ? ) это также было известно как RAMDisk! (Что еще хуже, тогда разные производители выпускали RAMDRIVE.SYS или даже RAMDISK.SYS!)
В случае точки зрения ядра Linux, как настольного компьютера, так и Android, RAMDisk - это tmpfs , но он не предназначен для обычных пользователей для хранения данных / документов и т. Д. , Поскольку он предназначен исключительно для использования самим ядром!
Чтобы отметить комментарий @ nil ниже, вы можете смонтировать его да, но он идет с затратами, ресурсы, выделяемые на него, tmpfsделятся пополам и используют половину оставшегося объема из оставшегося объема оперативной памяти. Реально говоря, это не идеальный путь, чтобы продолжать с точки зрения Android, работающего на устройствах.
Вот /sdcardтут- то и возникает необходимость хранить пользовательские данные / документы только по этой причине, поэтому я и упустил тот факт, что вы можете, но опять же, почему ?
mount -t tmpfs,
mount -t tmpfs после чтения ramfs (который имеет сценарий инициализации barebones), после того, как он смонтирован, остальная часть системы запускается как после загрузки, то есть в среде Android. Кроме того, делая это впоследствии, например adb shell, вы сокращаете системные ресурсы, особенно в случае смартфонов с ограниченными памятью и ресурсами!