LINUX.ORG.RU
решено ФорумMobile

Android 4.4 Как поменять внутренний (/data/media) и внешний накопители?

 


0

1

Устройство galaxy note 10.1, если это имеет значение. Прошивка 4.4.2.
Купил карточку, т.к. встроенной памяти стало не хватать.
Опции в настройках чтобы махнуть их местами нету (бывает в некоторых телефонах).

Пытался накостылять скриптик в /etc/init.d, который бы монтировал все в нужные места. Сначала выяснилось что скрипты из /etc/init.d не выполняются вообще и для их, так сказать, активации надо было запустить какой-то бубен. Бубен сработал, скрипт выполняется, но, такое ощущение что слишком рано, Android потом часть монтирует поверх, как было.

Проблема еще в том, что нет полного понимания как используется sdcardfs (через которую и монтируется /data/media) и как она работает. У меня нагуглилось только общее описание, для чего нужна и что она похеривает права, чтобы приложения работали с накопителем как с карточкой.
Задачу осложняет (и понимание тоже) то, что одна и та же исходная директория /data/media монтируется в разные места, но с одними параметрами,а содержимое этих мест отличается.

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

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от anonymous

Спасибо. Не помогло. Ничего вообще не изменилось. Вывод mount такой же, как и до установки и применения утилиты. Лог в утилите пустой, не понятно работает ли.

ls-h ★★★★★
() автор топика

Без глубокой модификации прошивки никак. Начинается все с того что надо чутка инит*рц подшаманить...Да и не понятно зачем, eMMC (внутренняя память) сильно быстрее СДкарточки, даже класса 10+

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Без глубокой модификации прошивки никак.

Прямо совсем? Печаль!

а и не понятно зачем, eMMC (внутренняя память) сильно быстрее СДкарточки, даже класса 10+

Но место на быстрой памяти кончается так же, как и на медленной.

ls-h ★★★★★
() автор топика

Подписался на тред. Добрые кетайцы в мобилке разбили флешку на два раздела, при чём под систему отвели пару гигов. Место закончилось, ничего не поставить и даже не проапгрейдить уже установленне - нет места на устройстве.

anonymous
()
Ответ на: комментарий от Jetty

Сначала почему-то подумал что надо прошивку пересобирать. Потом еще раз перечитал. Так его (init.rc) можно отредактировать, разве нет? Куда копать?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

прошивку пересобирать єто верно :-)
С другой стороны если есть рут и есть кехес или секонд-бут, то его можно модифицированный подложить в процессе загрузки. А так вообще єти файли зашиты как кусок рамдиска в бут имидж, так что только перепаковка бут имиджа, если он есть... Ну и да, там еще с подписями факап получится(если секурная загрузка).

Jetty ★★★★★
()
Ответ на: комментарий от anonymous

Отписался от треда. Не будет тут толку.

anonymous
()

2 Jetty, no-dashi, everest2014, anonymous
А ларчик просто открывался. Хотя, конечно, нужно было найти правильный финт.
Я сначала пытался монтировать карточку в /storage/emulated/0, /data/media или в /mnt/sdcard, это не приводило к успеху, а приводило к разным глюкам.

Нужно:
1. На карточке создать раздел extчего_нибудь
2. На разделе - директорию, например, content
3. В ней надо создать директории 0, legacy и obb и дать им права и владельца, какие выставлены у соответствующих директорий в /data/media (для самой content наверное тоже лучше выставить, но я так не делал)
4. Сделать так, чтобы init.d скрипты выполнялись, для этого есть костыль, легко гуглится
5. В init.d добавить скрипт перед всеми, который должен:
- отмонтировать точки монтирования /data/media (на момент запуска скрипта она уже используется, потом монтировать не надо, Android сделает это сам)
- можно проверить фс на карточке
- смонтировать ext с карточки куда-нибудь, например, /data/extsd
5. /data/media заменить на симлинк на /data/extsd/content для этого, вероятно, понадобится перезагрузится в recovery и сделать это там (просто так /data/media не удалить, т.к. resource busy).

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Jetty

Вроде все хорошо, понаблюдаю еще. Так и задача была заменить /data/media, и только. Для приложений там (/data) места вполне хватит, это всякие закачки/киношки занимали основное место.

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)
Ответ на: комментарий от ls-h

карта тормознее унутрянки, говорили уже, нет? поздравляю.

everest2014
()
Ответ на: комментарий от everest2014

потрошил андроида 4.4.4, fstab присутствует

А его редактирование влияет на что-то? Я свои эксперименты начал с него. Пришел к выводу что он вообще не используется, чего не напиши - ничего не меняется.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от everest2014

Разве что циганщину. Сток не засунешь.

Jetty ★★★★★
()
Ответ на: комментарий от everest2014

файлы /system/etc/vold.fstab и /fstab.phone_platform_name разные по синтаксису и назначению файлы. Файл vold.fstab начиная с 4.3 не используется. То что гнусмас забыл убрать этот файл из билда ничего не значит. Разве что их корявый софт(но не дженерик андроид) как-то использует этот файл (но зачем???)

Jetty ★★★★★
()
Ответ на: комментарий от everest2014

Зачем мне думать зачем нужен фстаб, если ты дупля не отваливаешь в том о чем пытаешься спорить или очевидить... Признайся ты ведь не знаешь в чем разница еих двух файлов, правда?

Jetty ★★★★★
()
Ответ на: комментарий от everest2014

git log это единственное средство выяснения истины когда ты изучаешь AOSP. Увы это реальность... но, кстати, реально этот вопрос описан чуток на sources.android.com . И ответ конкретно на этот вопрос там есть...

Jetty ★★★★★
()
20 января 2015 г.

Cast Jetty, no-dashi, everest2014.

Оказалось что с моими костылями работает почти все, но не все.
Долго не пользовался планшетом, поэтому пишу только сейчас.

Проблема обнаружилась с установкой приложений.
Если приложение использует obb файлы, то скачивание приложения вешается по непонятной причине.
С приложениями, которые не используют obb все в порядке.

Что интересно, косяк явно связан с символьной ссылкой. Даже если никуда ничего не монтировать, а просто сделать симлинк /data/media на /data/media123 то результат такой же.

Решение в виде другого костыля в init.d:


#!/system/bin/sh
busybox umount /mnt/shell/emulated
busybox mount -o remount,rw /
busybox mkdir /extcard
busybox mount /dev/block/mmcblk1p2 /extcard
busybox mkdir /extcard/content
busybox chmod 777 /extcard/content
busybox chown 1023:1023 /extcard/content
/system/bin/sdcard -u 1023 -g 1023 -l -r /extcard/content /mnt/shell/emulated &

Да, оказывается есть утилитка, которую можно вызвать с нужными параметрами и она все смонтирует.
Проверил все что смог придумать - работает.

ls-h ★★★★★
() автор топика

facepalm
нельзя так
На MTK устройствах можно отредактировать разделы и отдать внутреннюю память (где музычка, картиночки) под /data, тем самым расширив его
А внутрненнюю память заменить SD-картой

ubuntuawp ★★
()
12 марта 2015 г.

Fuse

ls-h, а куда вообще засунули определение точек монтирования? Где прописано это /data/media?
Как мне, к примеру, узнать, что /storage/sdcard0 подмонтирован именно в /data/media, а не куда там либо ещё?

С этим fuse что-то совсем всё непрозрачно.

EXL ★★★★★
()
3 июля 2016 г.
Ответ на: комментарий от ls-h

Прошу помощи

Здравствуйте, уважаемые знатоки. Уже третий день веду бой со своим Китайским прибором 3 в 1 Навигатор, видеорегистратор, радар-детектором MA 75 Android 4.4.2. Процессор Alwinner A33

[img]https://img-fotki.yandex.ru/get/60682/23038880.1/0_11da6e_2a13e6ac_-6-L.jpg[/img]

7 inch GPS Navigation Android GPS DVR Camcorder 16GB Allwinner A33 Значит проблема в следующем: решил я увеличить объем памяти за счет внутренней памяти 16 Gb под приложения по второму способу из этой ссылки:Деление карты памяти на разделы — способ 2 (через ПК) Но после этого у меня начались вообще какие-то странные вещи: Появилась память около 250 Мб, а на ней уже папка «Прочее» около 11 Гб. [img]https://img-fotki.yandex.ru/get/145691/23038880.2/0_11da83_a3c21e1b_L.jpg[/img]

[img]http://s.4pda.ru/wrongurl/https://img-fotki.yandex.ru/get/153157/23038880.1/0_11da82_68310f8c_L.jpg[/img]

Вот что показывает прога MinitooI Partition Wizard ProfessionaI 9.1 на компе:

[img]https://img-fotki.yandex.ru/get/56520/23038880.2/0_11da95_4437e0e_L.jpg[/img]

Вот что показывает ES проводник:

[img]https://img-fotki.yandex.ru/get/113961/23038880.1/0_11da6f_fa66c7d8_L.jpg[/img]

Вот что показывает Storage Space:

[img]https://img-fotki.yandex.ru/get/109793/23038880.1/0_11da70_4e6a3b02_L.jpg[/img]

[img]https://img-fotki.yandex.ru/get/131807/23038880.1/0_11da71_4859d216_L.jpg[/img]

[img]https://img-fotki.yandex.ru/get/100269/23038880.1/0_11da72_58ad325f_L.jpg[/img]

[img]https://img-fotki.yandex.ru/get/28032/23038880.1/0_11da73_3034ee7c_L.jpg[/img]

[img]https://img-fotki.yandex.ru/get/51827/23038880.1/0_11da74_ce9e5bc6_L.jpg[/img]

Значит что сделано: 1.Перепробовал все возможные варианты файловых систем: Fat32, NTFS, Ext3, 4 2.Делал hard reset 3. Разобрал в поисках встроенной флешки, чтобы помучить через карт-ридер - не нашел 4.Пытался найти фалы через root ES проводник: vold.fstab и init.d - не нашел 5. Замучился хоть выкидывай, ведь щас даже навител не поставить,карты то куда скидывать.

maxxx-on
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.