Android mount network drive
Ладно, отвечаю сам себе. При помощи приложения Explorage удалось таки запустить эту гугловскую файловую оболочку и увидеть подключенные по SMB ресурсы. Теперь возникла новая проблема — с подключенных через это приложение дисков не желают запускаться видео файлы. Копировать можно, а при запуске на просмотр возникает ошибка. Пробовал двумя разными плеерами, и ни в какую.
И еще нет никакого способа изменить или удалить добавленные подключения. Единственный способ, который сработал — остановить приложение и почистить данные. В этом случае удаляются все подключения. Возможно, потребуется ребут.
В общем, странное это изделие.
Сообщение отредактировал Rushmore — 10.07.17, 16:52
Буквально летом я настраивал все это дело, после прошивки не могу вспомнить как расширивал сетевую папку.
На данный момент, папка видится в устройстве, но её не видит Poweramp.
Закину несколько сцылок, возможно окажется инфо полезным, тут здесь
Парни, вопрос актуален, как рассшарить сетевую папку для Poweramp, (по треку Poweramp читает, но папку не видит) .
Решил таким образом.
Все упиралось в правильность директорий, благодаря Mount Manager увидел свои ошибки.
LineageOS 14 (крайняя версия), Poweamp v3-build-845, сетевая папка монтируется, есть возможность размонтирования, Mount Manager местами подлагивает, меня устраивает. Потратив еще немного времени, можно все это сделать с командной строки, как бЭ, хозяин. барин.
Возможно кому то поможет.
Добавлено 17.10.2019, 12:09:
Решил таким образом.
Все упиралось в правильность директорий, благодаря Mount Manager увидел свои ошибки.
LineageOS 14 (крайняя версия), Poweamp v3-build-845, сетевая папка монтируется, есть возможность размонтирования, Mount Manager местами подлагивает, меня устраивает. Потратив еще немного времени, можно все это сделать с командной строки, как бЭ, хозяин. барин.
Возможно кому то поможет.
Источник
Добавляем поддержку монтирования Windows шар в Android
Купил недавно себе планшет Samsung Galaxy Tab Pro 10.1 LTE SM-T525 и захотелось дома смотреть на нём фильмы и другие файлы с моего сетевого диска, расшаренного через samba. Для этого в ядре должна быть поддержка CIFS и не только… в андроиде начиная с версии 4.2 это оказалось нетривиальной задачей.
1. Суть проблемы с пользовательскими монтированиями
Дело в том, что с версии 4.2 в Adnroid ввели многопользовательский режим и вместе с ним все файловые системы теперь монтируются как Slave, это приводит к тому, что файловая система смонтированная одним пользователем, не видна другим пользователям.
В виртуальной машине Dalvik андроида с версии 4.2 в файле vm/Init.cpp есть такой код:
Этот код монтирует рутовую файловую систему с флагами MS_SLAVE и MS_REC, это означает что файловые системы, смонтированные внутри / будут также монтироваться по умолчанию с флагом MS_SLAVE и доступны только пользователям их смонтировавшим и их дочерним процессам. Для решения этой проблемы, пользователем mkasick с xda-developers был предложен следующий патч для ядра в функции do_mount:
Суть патча в том, что мы перехватываем вызов do_mount для / с флагами MS_SVALE и MS_REC и не даём их установить. Но для работы андроида эти флаги необходимы для пользовательских файловых систем в /storage, иначе система у меня просто не грузится. Поэтому мы вызываем do_mount(NULL, (char *)storage, NULL, (MS_SLAVE | MS_REC), NULL)) == 0). Чтобы последний вызов работал, /storage должна быть точкой монтирования, а не просто директорией, поэтому в файле init.rc в рамдиске, где происходит создание директории /storage необходимо туда смонтировать tmpfs
После этих манипуляций, точки монтирования за пределами /storage будут видны всем пользователям.
Для начала необходимо добавить поддержку CIFS в Linux ядро. Это можно сделать двумя способами: скомпилировать модуль для ядра cifs, либо добавить поддержку cifs в само ядро. Первый способ лучше, т.к. не надо будет прошивать новое ядро и терять гарантию на некоторых аппаратах.
Ядро моего планшета оказалось собрано без поддержки модулей, так что мне пришлось пересобирать и прошивать новое ядро:
Для сборки ядра необходимо:
а) Машина на Linux
б) Исходники ядра для вашего девайса, для Самсунга берём здесь opensource.samsung.com
в) Toolchain для сборки, берём тут developer.android.com/tools/sdk/ndk/index.html
Для сборки ядра создаём директорию
/android, и распаковываем внутри неё исходники ядра в директорию kernel, android-ndk в android-ndk-r9
Теперь применяем патч для исправления проблемы с пустыми точками монтирования
Далее необходимо прописать переменные окружения и подготовить конфигурационный файл ядра, для моего самсунга это делается так:
Данная команда создаст файл .config, далее необходимо выполнить команду make menuconfig и перейти в раздел File Systems -> Network File Systems и отметить пункт CIFS support (в случае сборки модуля, необходимо отметить буквой M) и отмечаем RESTRICT_ROOTFS_SLAVE в разделе File Systems
Далее выходим клавишей Esc и сохраняем конфигурацию. Теперь собираем ядро командой make -j3 (вместо цифры 3 указываем количество ядер процессора+1)
На этом сборка ядра окончена.
3. Сборка boot.img для прошивки
Теперь необходимо прошить новое ядро в планшет. Для этого необходимо собрать образ boot.img в который входит ядро, ramdisk и device tree для чипов Qualcomm.
Для начала нам надо получить родной ramdisk, для этого распаковываем оригинальную прошивку (это обычный tar) и достаём оттуда файл boot.img
Для распаковки boot.img понадобится пакет bootimg_tools
Скачиваем его в
/android, и распаковываем командой split_boot файл boot.img
и получаем распакованный ramdisk в директории boot/ramdisk
Теперь необходимо поправить пару файлов в рамдиске для перевода Selinux в permissive mode и для монтирования /storage как tmpfs
В файле init.rc ищем строчку setsebool debugfs 1 и заменяем её на
Далее ищем строку setprop selinux.reload_policy 1 и меняем её на setprop selinux.reload_policy 0
Для монтирования /storage как tmpfs ищем строчку mkdir /storage 0751 root sdcard_r и после неё добавляем
Также в файле defaul.prop меняем ro.secure=1 на ro.secure=0 и ro.adb.secure=1 на ro.adb.secure=0
Теперь собираем ramdisk назад
Далее для сборки нам ещё необходим файл dt.img, он генерируется утилитой dtbTool которая идёт в комплекте с ядром
Теперь, когда есть всё необходимое для сборки boot.img, начинаем саму сборку при помощи утилиты mkbootimg (поставляется так же с ядром)
Всё, файл boot.img готов. Для прошивки его через Odin, делаем из него boot.tar.md5
Теперь прошиваем его через Odin
На Samsung есть проблема, что с катомным ядром перестаёт работать wifi, лечится это правкой файла build.prop на рабочей системе. Необходимо заменить строчку ro.securestorage.support=true на ro.securestorage.support=false
4. Настройка ПО для монтирования
Для монтирования шар будем использовать программу CifsManager
Тут есть несколько нюансов в настройке:
а) В cifs на ядре 3.4 что-то поломали, и теперь он не обрабатывает параметр device команды mount, т.е. конструкция вида
mount -t cifs //pc/share /mnt больше не работает, монтируемую шару необходимо указывать в параметре unc, т.е. предыдущая команда будет выглядеть так:
б) Теперь про точку монтирования. Как писалось выше, если мы будем монтировать внутри /storage, то такая шара будет пустая для других приложений, если же монтировать куда-то вне /storage, то большинство приложений её не смогут открыть, т.к. позволяют открывать файлы только внутри карты памяти. Выход есть. Внутренняя память /storage/emulated/0 на самом деле лежит в /data/media/0, а /storage/emulated/0 — это эмуляция fat32 для этой директории. Так что мы смело можем можем монтировать например в /data/media/0/cifs и увидим нашу шару в фйловом менеджере в internal storage.
в) Есть ещё нигде не описанный нюанс, команда mount -t cifs почему то игнорирует параметры, идущие после password, например в команде
параметр sec=ntlmssp не будет обработан. Поэтому, если для подключения к шаре необходим пароль, то в CifsManager поле Password оставляем пустым, а пароль пишем в поле Options в самый конец, как на скриншоте выше.
г) Для корректной работы с русскими буквами в именах файлов, необходимо добавить опцию iocharset=utf8
Теперь монтируем шару в CifsManager и наслаждаемся!
Источник
shumaher86
Shumaher’s_Blog
mirror of blog.shumaher.net.ru
В прошлый раз я написал, как монтировать расшаренные папки Windows в Android-смартфон: о сборке необходимого модуля cifs.ko и зависимостей для него. Само монтирование было сделано при помощи стандартной команды mount, но каждый раз открывать эмулятор терминала и вводить длинные команды, конечно же, мягко говоря, не очень удобно.
Поэтому сегодня я расскажу о двух приложениях, которые позволят монтировать всего в 1-2 тапа пальцем. На одно из них я уже давал ссылку в предыдущем посте.
Обновил скрипт cifs.sh — теперь использование стало более наглядным: для добавления шар достаточно изменить переменные USER , PASS , SERV , SERVNAME и SHARE в строках 44-48, и добавить новый блок в case . Добавлено монтирование в режиме только-чтение в зависимости от используемого пользователя (строка 18, опционально).
В прошлый раз я написал, как монтировать расшаренные папки Windows в Android-смартфон: о сборке необходимого модуля cifs.ko и зависимостей для него. Само монтирование было сделано при помощи стандартной команды mount, но каждый раз открывать эмулятор терминала и вводить длинные команды, конечно же, мягко говоря, не очень удобно.
Поэтому сегодня я расскажу о двух приложениях, которые позволят монтировать всего в 1-2 тапа пальцем. На одно из них я уже давал ссылку в предыдущем посте.
CifsManager
Описание есть на форуме 4PDA, поэтому подробно останавливаться на этом приложении я не буду.
Стоит только отметить правильный порядок модулей в опции Path to cifs.ko (видно на скриншоте).
А так же при создании шары не забудьте в опциях вбить iocharset=utf8,file_mode=0777,dir_mode=0 777
Прямо из приложения можно открыть установленным файловым менеджером подключенный ресурс, что плюс.
А минус — нет бэкапа опций на SD, потому что их достаточно много. Так что при, например, перепрошивке, всё нужно будет вбивать заново (если не пользоваться прогами для бэкапа).
Но главное — оно работает, и позволяет монтировать в 2 тапа пальцем по экрану: запуск приложения + тап по нужной шаре.
GScript
Это приложение предназначено не именно для монтирования, а для запуска вообще любых скриптов. Также поддерживает создание ярлыков, что и позволяет монтировать шары в один тап.
Имеются функции и сохранения/загрузки скриптов с SD-карты.
Полезные скрипты можно найти в теме на XDA.
Ну а теперь к монтированию.
Можно было бы, конечно, просто вбить все команды из предыдущего поста: insmod, mount и unount. Но это всё равно долго и нудно (особенно если подключаемых ресурсов несколько), поэтому я для себя решил наговнокодить скрипт, чтобы все нужные команды были в одном обычном sh-файле, который можно будет запускать не только из GScript, но и при необходимости из терминала.
cifs.sh:
старый вариант скрипта, новый смотрите ниже
export PATH=/data/data/berserker.android.apps.s shdroid/home/bin:$PATH
«m»)
if mount | grep -Fq ‘unc=\192.168.1.1\share,username=USER’
then
echo «UnMounting //server/share . »
umount -f -l /mnt/sdcard/cifs/share
echo «//server/share unmounted for USER!»
echo
echo
echo
echo
echo
echo
else
echo «Mounting //server/share . »
mount -t cifs -o ro,iocharset=utf8,username=USER,password=P ASS,file_mode=0777,dir_mode=0777 //192.168.1.1/share /mnt/sdcard/cifs/share && \
echo «//server/share mounted for USER!»
echo
echo
echo
echo
echo
echo
fi
;;
«r»)
cd /mnt/sdcard/cifs/modules/$(uname -r)/ && \
*)
cd /mnt/sdcard/cifs/modules/$(uname -r)/ && \
На первом скриншоте видно, что перед скриптом стоит команда sh, что позволяет запускать его с SD-карты в FAT32, где невозможно сделать chmod +x.
Зачем при этом у меня такой длинный путь к файлу, я напишу как-нибудь потом.
Теперь пара слов о самом скрипте.
Результат работы показан на втором скриншоте, после того как скрипт отработал окно автоматически закрывается.
Несколько пустых echo добавлено чтобы появляющийся поп-ап не закрывал вывод.
При запуске без параметров происходит загрузка всех модулей, l — список модулей, r — выгрузка, m — список смонтированных шар (только в cifs.sh v2.0). m c — монтирование/размонтирование; если шара смонтирована, происходит размонтирование, и наоборт.
ВАЖНО:
Скрипт использует grep, поэтому должен быть установлен BusyBox.
Исправьте переменную PATH , указав правильный путь до grep!
Также (хотя это и не будет влиять на запуск из-под GScript), исправьте/проверьте путь до интерпретатора sh в 1 строке.
Добавляя другие аргументы в case (например, m1, m2 и т.д) можно подключать несколько шар, или одну под разными юзерами. Естественно всё ограничивается лишь вашей фантазией.
Это решение мне показалось лучше в первую очередь тем, что скрипт можно легко редактировать, просто открыв в текстовом редакторе при подключении смартфона как USB-диска, или через SSH.
Как-нибудь позже я напишу об организации в Android одной среды как при запуске терминала, так и при подключении по SSH.
А пока что — с наступающим, юзернеймы! Ведь до 2012-го осталось меньше суток
Обновил скрипт cifs.sh — теперь использование стало более наглядным: для добавления шар достаточно изменить переменные USER , PASS , SERV , SERVNAME и SHARE в строках 44-48, и добавить новый блок в case . Добавлено монтирование в режиме только-чтение в зависимости от используемого пользователя (строка 18, опционально).
Originally published at Shumaher’s_Blog. You can comment here or there.
Источник