Как сделать символическую ссылку на папку /cache при загрузке?

После рутирования и установки link2sd на моем HTC Explorer у меня по-прежнему возникают проблемы с нехваткой памяти.

В Google Play я не могу скачивать приложения больше 10-15M. Это потому, что папка /cache находится во внутренней памяти, которой катастрофически мало. В моем варианте Google Play пишет сразу в /cache, а не во вложенные папки.

Используя adb как root, я удалил /cacheи создал символическую ссылку /cache -> /mnt/sdcard/cache. Это нормально, но когда я перезагружаю телефон, символическая ссылка заменяется старой папкой.

Есть ли правильный способ решить эту проблему раз и навсегда?

Спасибо за любую подсказку, А

Теоретически, используя runparts busybox, и выдать это mount -o bind /mnt/sdcard/cache /cache... это в теории, так как никогда не пробовал ...

Ответы (2)

Увы, это невозможно.

По крайней мере, без перепрошивки таблицы разделов HTC (которая находится в разделе загрузчика, он же hboot). Похоже, что для проводника нет модифицированного hboot. Я знаю только переразбитые hboots для HTC Desire.

Причина:
/cache поддерживается отдельным блочным устройством на всех устройствах Android (т. е. точкой монтирования или разделом), он необходим для хранения файлов обновления прошивки (например, обязательно для зашифрованных телефонов). Поэтому, если вы переместите его, ничего не получится, потому что этот раздел все еще будет там и не освободит место для раздела /data. Если вы уменьшите раздел /cache, OTA-обновления больше не будут возможны (для этого вам придется использовать собственное восстановление).

Спасибо за уточнение -- не знал об этой особенности Проводника . Я все равно оставлю свой ответ там (хотя и добавлю примечание) для тех, кто не исследует наш сайт :)
РЕДАКТИРОВАТЬ: Все устройства Android имеют раздел /cache (он необходим для хранения файлов обновления прошивки для обновления Android, особенно на зашифрованных устройствах, когда восстановление должно получить доступ к файлу прошивки в открытом виде).
Это (было) ужасно. Google проделал тяжелую работу, чтобы изменить его в Android 4.0+, поэтому на последних устройствах это больше не проблема. Прочтите немного информации здесь: androidpolice.com/2011/11/18/…
Извините, я несколько неправильно понял ваш вопрос (я знаю, что он имеет только раздел /data размером 90 МБ): вы, конечно, можете автоматизировать символическую ссылку при загрузке: stackoverflow.com/questions/7873615/…

Вы можете взглянуть на DirectoryBind , который был разработан для таких вещей. Он заботится о настроенных пользователем «монтированиях» во время загрузки, а также по требованию, поэтому ничего не должно «исчезать» при загрузке.

По сути, он предназначен для сопоставления вещей из внутренней памяти / памяти телефона во внешнюю / SD-память - особенно для таких случаев, как ваш, когда внутренняя память заканчивается.

ПРИМЕЧАНИЕ. Согласно ответу ce4 , этот метод не принесет никакой пользы в отношении /dataпапки, так как /cacheиспользует собственный раздел (похоже, это относится ко всем устройствам Android - проверено на 7 разных устройствах от 5 разных производителей; согласно ce4 это особенно необходимо на зашифрованных устройствах, так как незашифрованный раздел требуется для хранения обновлений встроенного ПО для выполнения). Так что, если вы хотите увеличить объем хранилища на /data, это не относится к /cache. Но если вам просто нужно больше места в /cache, это должно быть прекрасно. Затем вы можете использовать исходное блочное устройство (куда /cache указывал ) для чего-то еще;)

ПРИМЕЧАНИЕ 2: AFAIK Google Playstore использует /data/localдля буферизации своих загрузок. На большинстве устройств это должен быть только каталог в /dataразделе, и поэтому с ним легко может работать DirectoryBind .

Дополнительный совет: проверьте с помощью dfкоманды из терминала, использует ли каталог, который вы хотите переместить из внутреннего хранилища во внешнее, отдельный раздел или нет.