2015-04-12 3 views
5

я написал следующий скрипт:Как монтировать раздел ext4 на внешний диск на андроид и сделать его RW доступным для всех приложений

alias mount='/system/xbin/busybox mount' 
set -e 
set -x 

MNT=sda1 

function mkdir_ext() { 
    if [ ! -d $1 ]; then 
    mkdir -p $1 
    fi 
    chown $2 $1 
    chmod $3 $1 
} 

mkdir_ext /storage/emulated/$MNT root:media_rw 777 
mount -t ext4 /dev/block/$MNT /storage/emulated/$MNT 

mkdir_ext /data/media/$MNT root:media_rw 777 
sdcard -u 1023 -g 1023 /storage/emulated/$MNT /data/media/$MNT 

После выполнения команды выше, установите отчеты:

[email protected]:/sdcard # mount|grep sda 
/dev/block/sda1 /storage/emulated/sda1 ext4 rw,seclabel,relatime,data=ordered 0 0 
/dev/fuse /data/media/sda1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0 

Я работаю через ssh удаленно, используя rooted ssh/sftp daemon, и во время входа в систему под управлением пользователя я могу указать файлы в /storage/emulated/sda1.

Из того, что я понимаю, андроид не зависит от регистра в отношении файловых систем по дизайну, поэтому файловая система должна быть сплавлена.

Проблема в том, что я вижу пустой каталог в /data/media/sda1. Даже незнакомцем является то, что, если я перейду к /storage/emulated/sda1 с устройства с правами root с помощью bash shell X, я также вижу пустой каталог.

Я пробовал другие другие приложения, и я попытался также использовать sdcard_rw вместо media_rw (с uid/gid 1015 вместо 1023), ничего не работает.

Как получить ext4 для работы для всех приложений на основе Minix NEO X8-H? Использование чего-либо, кроме ext4, не является опцией, накопитель 4TB уже содержит важные данные. В качестве примечания стороны, sda1 представляет собой небольшой раздел размером 1 ГБ.

+0

Ни Android, ни ext4 не чувствительна к регистру, хотя некоторые другие файловые системы и схемы эмуляции, которые он использует для таких вещей, как «внешнее запоминающее устройство» может быть так. Возможно, вы сталкиваетесь с тем, что каждый родословный процесс на Android имеет уникальный набор монтировок - поэтому то, что вы делаете в процессе setuid, опускающемся из одного приложения, не обязательно должно отражаться в другом или в adb. –

+0

Вы говорите, что доступ к внешнему USB-накопителю из всех приложений невозможен? – Flavius

+0

Не обязательно, но больше того, что вы, возможно, до сих пор не смогли установить для всех. Что означает «mount» в качестве вывода в оболочках, где он недоступен? –

ответ

2

Я предполагаю, что ваше устройство уходит корнями из того, что вы сделали до сих пор, поэтому не пойдет на это. Хотя я не могу быть уверен, что это ваш вопрос, я объясню, как я решил подобную проблему.

Настоящие версии андроида с целью улучшения безопасности устройства теперь используют (несколько наполовину арсид) функцию создания монтировок, выполняемых большинством процессов, не видимых для других процессов. Работа вокруг этого разочаровывает специфику устройства, однако, похоже, Minix NEO X8-H использует встроенный в стиле «ванильный» сборник для android. Поэтому у вас есть хороший шанс использовать StickMount для установки USB-накопителя, он должен позволить глобальному подключению устройств USB к любой файловой системе, поддерживаемой вашим ПЗУ (который должен включать ext4, если вы уже установили его раньше).

Я не тестировал это на своем устройстве, поэтому не могу гарантировать, что он будет работать, но имел успех с рядом других устройств Android, поэтому это, безусловно, стоит того.

0

Я использую SD-карту mkfs -t ext4 /dev/sdf2 и вставляю в телефон samsung s4 anrdoid.

adb shell 
su 
mount /dev/block/mmcblk1p2 /root 

Я не смогу установить эту SD-карту, у меня есть Google, но нет решения.

Последнее, я нашел, что это может быть успешным :)))

mk2fs -t ext4 /dev/sdf2 
and ... 
Смежные вопросы