LINUX.ORG.RU
ФорумMobile

Exfat и отказ приложений работать с ним(exfat отлично видится системой).

 , , ,


1

1

Добрый день. Подскажите, есть ли возможность заставить приложения видеть exfat microsd флешку, либо обмануть их и внушить что она не exfat либо какой другой рабочий вариант? Через файловый менеджер все видится, но приложения говорят что она отключена. Я мало подкован в этих делах и хотелось бы минимум кодинга если это вообще возможно. Спасибо.

Похоже, что ФМ умеет монтировать флеш, а другие нет

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

Программа Paragon ntfs и HFS, на 4pda пользователь SER666 довел до ума. Нет, никто из них не умеет монтировать, просто проводник ее видит, а плеер/ридер и т.д нет. Никто вообще похоже.

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

Неблагодарный труд, да. Молодец. Но не проще было бы воспользоваться exfat-fuse? И да, у проводника есть системные привилегии, а у прочего нет, так?

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

Вот что мне посоветовали на 4pda:

Мой опыт работы с fuse подсказывает, что может помочь параметр umask=000 в монтировании (но user_id, group_id и др. тоже могут иметь значение). Цель - примонтировать так, чтобы права доступа в выхлопе ls -l /data/media/0/ParagonexFAT не сильно отличались от других директорий в /data/media/0. Если есть возможность - внесите этот параметр umask в интерфейсе парагона. Если нет, вам нужно самому разобраться, что конкретно делает парагон, и запустить все это самому с нужными параметрами. Для этого может помочь команда ps и данные программы в /data/data/

Может мне кодеры отсюда помогут это все осуществить?

newphonebass
() автор топика

парагон монтирует в папку «хитрыми» путями, поэтому программы не видят карту как примонтированную, нужно использовать другой способ монтирования, например как тут https://github.com/Lurker00/Android-fs

это тоже с 4pda, но тему сейчас не найти, лучше всего работает через init.d, какая версия андроида кста

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

У тебя есть поддержка init.d? Я просто для себя скрипт на основе его делал, а из архива только бинарники нужны были тогда. Если init.d нет, можно по гайду сделать http://xeonhacker.blogspot.ru/2014/12/mod-enable-initd-scripts-support-on.html

скрипт монтирования позже выложу

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

Инит.д есть. Хорошо. Я уже прошил тот архив и в рекавери писалось о как раз моей архитектуре. Все норм, мне не откатываться, просто дождаться вашего скрипта?

newphonebass
() автор топика
Ответ на: комментарий от ser666

У меня теперь в /etc два install-recovery, отличия в размере и у второго цифра 2 в конце. Может и вправду откатиться, а бинарники самому закинуть? Вы только скажите куда.

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

Можешь показать содержимое обоих файлов.

cat /system/etc/init.d/99mountfs

#!/system/bin/sh

/system/xbin/supolicy --live "allow sdcardd unlabeled dir { append create execute write relabelfrom link unlink ioctl getattr setattr read rename lock mounton quotaon swapon rmdir audit_access remove_name add_name reparent execmod search open }"
/system/xbin/supolicy --live "allow sdcardd unlabeled file { append create write relabelfrom link unlink ioctl getattr setattr read rename lock mounton quotaon swapon audit_access open }"
/system/xbin/supolicy --live "allow unlabeled unlabeled filesystem associate"
/system/xbin/supolicy --live "allow sdcardd unlabeled filesystem { getattr mount remount unmount }"
/system/xbin/supolicy --live "allow vold unlabeled filesystem { getattr mount remount unmount }"
/system/xbin/supolicy --live "allow init unlabeled filesystem { getattr mount remount unmount }"

FS=($(/system/xbin/probe /dev/block/mmcblk1p1))

case "${FS[0]}" in
    "exFAT")
        MOUNTCMD="/system/xbin/mount.exfat"
    ;;
    "NTFS")
        MOUNTCMD="/system/xbin/ntfs-3g"
    ;;
esac

$MOUNTCMD -o rw,uid=1023,gid=1023,umask=0000,noatime /dev/block/mmcblk1p1 /mnt/media_rw/sdcard1
start fuse_sdcard1
vdc volume mount /storage/sdcard1

нужно соответственно 3 бинарника положить в /system/xbin, так же нужен установленный superSU (supolicy от него), возможно нужно откорректировать пути для твоего девайса, ну и проверки фс для монтирования в ro тут нет (всё лень доделать)

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

Они громоздкие очень, я их cut'ом пытаюсь спрятать, но не выходит.

В архиве 4 файла. Мне все равно закидывать как вы и сказали 3? Суперсу есть. А без

проверки фс для монтирования в ro тут нет

это будет работать? Она на что то серьёзно влияет, проверка? И вы написали 2 кода, второй я закину в инит.д, с первым что делать?

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

http://pastebin.com/

можно и 4, хуже не будет

это не 2 кода, первое путь к файлу показывает

просто если на фс будут ошибки (например вытащить карточку не отмонтировав, баги в проге) она не будет примонтирована в режиме только-для-чтения и в итоге может полететь

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

Спасибо за помощь, но увы я далек от этого. Может когда-то будет время/желание, напишите и это.

newphonebass
() автор топика
Ответ на: комментарий от ser666

(например вытащить карточку не отмонтировав, баги в проге)

Ну, первую проблему, я думаю, смогу предупредить. На счёт второй, получается эти баги могут писаться на карту когда не нужно, когда она не в ro, и этим могут вывести ее из строя, верно?

newphonebass
() автор топика

Привет! Я щас с телефона - поищи мою тему «Не-форкнутый драйвер exfat». Драйвер оттуда не скачивай, а вот опциии монтирования - возьми. Или же найди статью NTFS в Debian Wiki, но лучше у меня, у меня подробней расписано

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

вспомнил зачем скрипт писал - в оригинально используется переменная SECONDARY_STORAGE, посмотри есть ли она у тебя (у меня не было)

ну и проверь все пути монтирования, проще всего вставить флешку с фат32 и выхлоп mount

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

SECONDARY_STORAGE

Где смотреть? Что значит выхлоп? Друзья, пожалуйста, я далек от этих терминов и прочего. Возможно, я ошибся форумом, но мне нужно добиться распознавания карты системой. Спасибо.

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

В 4.4.2 уже, емнип, все процессы запускаются в отдельном mount namespac'е. Пробовал тыкать mount namespace separation в SuperSU?

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

в эмуляторе терминала набрать env и посмотреть список переменных

выхлоп - то, что программа выводит тебе на экран

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

Посмотрел выхлоп по mount - у меня sdcard0, все в скрипте поменял на sdcard0. Переменной не нашел после ввода env. Он так и должен быть беспорядочно написан, скрипт, или может что то с новой строки? Ну, я имею ввиду может когда вы его вставляли его структура изменилась и это теперь мутит воду?

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

Привет!

В 2007 году мне пришла в голову гениальная мысль - перенести /home/username/.wine на раздел NTFS! Там места больше!

А на прежнее место поставить симлинк, или добавить в системные переменные export WINEPREFIX=/windows/linux/wine

В 2009 трюк работать перестал. Wine стал говорить error: /windows/linux/wine is not owned by you. Это пришло обновление для NTFS-3G. Несмотря на то, что права на запись есть, они были какие-то неправильные. В поисках решения проблемы я нашёл https://wiki.debian.org/ru/NTFS. Просто добавил в /etc/fstab это:

/dev/sda1 /windows ntfs-3g rw,uid=1000,gid=1000,dmask=0002,fmask=0003 0 0

И всё стало работать как надо!

А потом появилась файловая система exfat. У неё три драйвера: fuse, samsung и nofuse (форк Самсунг). Рекомендуется использовать первый и последний, так как средний сложен в использовании.

Одна из сложностей - после втыкания флешки нельзя ни записывать, ни удалять. А если записывать от root, то потом уже в винде не хватает прав на работу с этим файлом! Я это решил тем же способом, каким решал проблему с NTFS. Но так как перезагружаться для применения изменений в /etc/fstab - не очень хорошая идея, то я сделал так:

mount
// посмотреть название флешки и куда она подключена, например /dev/sdb1 в /media/username/disk
sudo umount /media/username/disk
sudo mkdir /mnt/flash
sudo mount -t exfat /dev/sdb1 -o rw,uid=1000,gid=1000,dmask=0002,fmask=0003 /mnt/flash

В твоём случае -t exfat поменять на -t fuse-exfat Как и в случае с Wine, у тебя есть права на запись, но они какие-то неправильные. А вот правильные.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 4)
Ответ на: комментарий от ZenitharChampion

в андроид версии 4.4 нельзя просто примонтировать раздел (точнее можно, но виден он будет только руту, мешает selinux), да и тут проблема в основном не чтоб просто примонтировать, с этим успешно справляется и парагоновский, а чтоб программы видели это именно как флешку, а не как папку

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

Ой, я две три запустил - отказ, я больше не проверял. Neutron music player, golden dict.

newphonebass
() автор топика
Ответ на: комментарий от ser666

Может мне не стоило тот архив прошивать, а просто нужно было бинарники закинуть? Там еще этот install recovery 2, я не помню или он был до прошивки архива.

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