Можно ли создать автоматически растущий виртуальный диск 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
, вы сокращаете системные ресурсы, особенно в случае смартфонов с ограниченными памятью и ресурсами!