Можно ли создать автоматически растущий виртуальный диск tmpfs на рутованном Android 4.x? Если да, то как?
temp-files
eadmaster
источник
источник
Ответы:
Если вы делаете,
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
Из ссылки, которую вложил ОП, ключевая часть подвела его:
Акцент мой, вот что такое 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
, вы сокращаете системные ресурсы, особенно в случае смартфонов с ограниченными памятью и ресурсами!