- Монтирование внутренней памяти Android как Mass Storage и восстановление данных
- Подготовка к подключению внутреннего хранилища
- Подключение внутренней памяти Android как Mass Storage Device
- Восстановление данных из подключенного внутреннего хранилища Android
- Arch Linux
- #1 2018-09-12 07:48:27
- [SOLVED] Mounting Android phone as USB storage
- #2 2018-09-12 08:21:29
- Re: [SOLVED] Mounting Android phone as USB storage
- #3 2018-09-12 08:41:09
- Re: [SOLVED] Mounting Android phone as USB storage
- #4 2018-09-12 14:21:07
- Re: [SOLVED] Mounting Android phone as USB storage
Монтирование внутренней памяти Android как Mass Storage и восстановление данных
Восстановление данных, удаленных фото и видео, документов и других элементов из внутренней памяти современных Android телефонов и планшетов стало сложной задачей, поскольку внутреннее хранилище подключается по протоколу MTP, а не Mass Storage (как флешка) и привычные программы для восстановления данных не могут найти и восстановить файлы в этом режиме.
Существующие популярные программы для восстановления данных на Android (см. Восстановление данных на Android) пробуют обойти это: в автоматическом режиме получить root-доступ (либо предоставляя сделать это пользователю), а затем — прямой доступ к хранилищу устройства, но это работает не для всех устройств.
Однако, существует способ вручную смонтировать (подключить) внутреннее хранилище Android как флешку (Mass Storage Device) с помощью команд ADB, а затем использовать любую программу восстановления данных, работающую с файловой системой ext4, использующуюся на этом хранилище, например, PhotoRec или R-Studio. О подключении внутреннего хранилища в режиме Mass Storage и последующем восстановлении данных из внутренней памяти Android, в том числе после сброса на заводские настройки (хард ресета) и пойдет речь в данной инструкции.
Предупреждение: описываемый способ не для начинающих. Если вы относите себя к ним, то какие-то пункты могут оказаться непонятными, а результат действий не обязательно будет ожидаемым (теоретически, можно сделать хуже). Используйте изложенное только под свою ответственность и с готовностью к тому, что что-то пойдёт не так, а ваше Android устройство больше не включится (но, если всё делать, понимая процесс и без ошибок, этого произойти не должно).
Подготовка к подключению внутреннего хранилища
Все действия, описанные ниже можно выполнить в Windows, Mac OS и Linux. В моем случае использовалась Windows 10 с установленной в ней подсистемой Windows для Linux и Ubuntu Shell из магазина приложений. Установка компонентов Linux не обязательна, все действия можно провести и в командной строке (и отличаться они не будут), но я предпочел этот вариант, так как при использовании ADB Shell в командной строке возникли проблемы с отображением спецсимволов, не влияющие на работу способа, но представляющие неудобства.
Прежде чем начать подключение внутренней памяти Android как флешки в Windows выполните следующие шаги:
- Скачайте и распакуйте Android SDK Platform Tools в папку на вашем компьютере. Загрузка доступна на официальном сайте https://developer.android.com/studio/releases/platform-tools.html
- Откройте параметры системных переменных среды (например, начав в поиске Windows вводить «переменных», а затем в открывшемся окне свойств системы нажав «Переменные среды». Второй способ: открыть Панель управления — Система — Дополнительные параметры системы — «Переменные среды» на вкладке «Дополнительно»).
Если вы проделываете указанные действия в Linux или MacOS, то поищите в Интернете, как в этих ОС добавить папку с Android Platform Tools в PATH.
Подключение внутренней памяти Android как Mass Storage Device
Теперь приступаем к основной части этого руководства — непосредственно подключение внутренней памяти Android как флешки к компьютеру.
- Перезагрузите ваш телефон или планшет в режиме Recovery. Обычно для этого нужно выключить телефон, затем зажать и удерживать кнопку питания и «громкость вниз» в течение некоторого времени (5-6) секунд, а после появления экрана fastboot выбрать Recovery Mode с помощью кнопок громкости и загрузиться в него, подтвердив выбор коротким нажатием кнопки питания. Для некоторых устройств способ может отличаться, но легко находится в Интернете по запросу: «модель_устройства recovery mode»
- Подключите устройство к компьютеру по USB и подождите некоторое время, пока оно не будет настроено. Если по окончании настройки в диспетчере устройств Windows устройство будет отображаться с ошибкой, найдите и установите ADB Driver именно для вашей модели устройства.
Запустите Ubuntu Shell (в моем примере используется именно оболочка Ubuntu под Windows 10), командную строку или терминал Mac и введите adb.exe devices (Примечание: из-под Ubuntu в Windows 10 я использую adb для Windows. Можно было бы установить adb для Linux, но тогда бы он не «видел» подключенных устройств — ограничение функций подсистемы Windows для Linux).
В ADB Shell по порядку выполняем следующие команды.
mount | grep /data
В результате получаем имя устройства block, которое будет использовать далее (не теряем его из виду, запоминаем).
Следующей командной размонтируем раздел data на телефоне, чтобы иметь возможность подключить его как Mass Storage.
Далее находит индекс LUN нужного раздела, соответствующего Mass Storage Device
find /sys -name lun*
Будет отображено несколько строк, нас интересуют те, которые имеют в пути f_mass_storage, но пока мы не знаем, какая именно (обычно, заканчивающиеся на просто lun или lun0)
В следующей команде используем имя устройства из первого шага и один из путей с f_mass_storage (один из них соответствует внутренней памяти). Если будет введен неверный, вы получите сообщение об ошибке, тогда пробуем следующий.
echo /dev/block/mmcblk0p42 > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
Следующий шаг — создаем скрипт, подключающий внутреннее хранилище к основной системе (всё, что ниже — одна длинная строка).
echo «echo 0 > /sys/devices/virtual/android_usb/android0/enable && echo «mass_storage,adb» > /sys/devices/virtual/android_usb/android0/functions && echo 1 > /sys/devices/virtual/android_usb/android0/enable» > enable_mass_storage_android.sh
В этот момент сессия ADB Shell будет закрыта, а к системе будет подключен новый диск («флешка»), представляющий собой внутреннюю память Android.
При этом, в случае Windows вас могут попросить отформатировать накопитель — не делайте этого (просто Windows не умеет работать с файловой системой ext3/4, но многие программы для восстановления данных умеют).
Восстановление данных из подключенного внутреннего хранилища Android
Теперь, когда внутренняя память подключена как обычный накопитель, мы можем использовать любую программу для восстановления данных, которая умеет работать с разделами Linux, например, бесплатную PhotoRec (доступную для всех распространенных ОС) или платную R-Studio.
Я пробую выполнить действия с PhotoRec:
- Скачиваем и распаковываем PhotoRec с официального сайта https://www.cgsecurity.org/wiki/TestDisk_Download
- Запускаем программу, для Windows и запуска программы в графическом режиме запустите файл qphotorec_win.exe (подробнее: восстановление данных в PhotoRec).
- В главном окне программы вверху выбираем устройство Linux (тот новый диск, который мы подключили). Ниже указываем папку для восстановления данных, а также выбираем тип файловой системы ext2/ext3/ext Если вам требуются файлы лишь определенного типа, рекомендую указать их вручную (кнопка «Форматы файлов»), так процесс пойдет быстрее.
В моем эксперименте из 30 удаленных из внутренней памяти фотографий в идеальном состоянии было восстановлено 10 (лучше, чем ничего), для остальных — только миниатюры, также были найдены скриншоты png, сделанные ещё до хард-ресета. R-Studio показала примерно тот же результат.
Но, так или иначе, это не проблема способа, который работает, а проблема эффективности восстановления данных как таковой в некоторых сценариях. Так же отмечу, что DiskDigger Photo Recovery (в режиме глубокого сканирования с root) и Wondershare Dr. Fone for Android показали сильно худший результат на том же устройстве. Конечно, вы можете попробовать и любые другие средства, позволяющие восстанавливать файлы с разделов с файловой системой Linux.
По окончании процесса восстановления, извлеките подключенное USB устройство (используя соответствующие способы вашей операционной системы).
Затем можно просто перезагрузить телефон, выбрав соответствующий пункт в меню рекавери.
Источник
Arch Linux
You are not logged in.
#1 2018-09-12 07:48:27
[SOLVED] Mounting Android phone as USB storage
I have a problem that is very similar to this one: https://www.linuxquestions.org/question … 175610821/
My Phone is a Huawei Honor 4c.
What happens with windows when I connect my phone to it via USB is this: A «CD drive» show up that contains an installer exe for installing Huawei’s HiSuite (not needed). Secondly, if I select from the phone to share the storage, a USB storage device shows up called «CHM-U01». I can access it and there’s all the stuff and I can write to it as well. Easy.
In my archlinux system this happens: Once I select to share files from the phone, Enlightenment(?) automatically mounts the «CD drive» and I can see the stuff there just like in windows. Quick and easy. However what does not happen is «CHM-U01» getting automatically detected and mounted.
Just like the guy in the topic I linked, I can’t find a /dev/sd* or UUID to match the «CHM-U01» USB storage device. And just like him, when I do
I would like to stress that simply getting over the issue of accessing my phone’s storage is not my primary objective here. If at all possible I would like to understand what is going on here and why. Why is the output of dmesg repeating itself like that in the end? Is the device rapidly resetting while dmesg is doing its thing? Why is the USB device number increasing by one after every reset? Why is my phone’s storage not showing up in
? Why is the «CD drive» only mounted but not «CHM-U01»? Why is this more complicated that simply mounting an USB stick?
Last edited by DarthMucus (2018-09-12 14:21:32)
#2 2018-09-12 08:21:29
Re: [SOLVED] Mounting Android phone as USB storage
Modern Androids do not use the traditional USB storage protocol for granting access to the phone storage, which is why you don’t see a block device (/dev/sd*) appearing. They use a specific protocol called MTP which abstracts the underlying file system away from host (the benefit here is that you can continue using your phone/the phone’s filesystem, while changing data via computer). For all intents and purposes, think of it as a network file system like SMB or NFS where you can access the files but don’t have information on the actual storage the data lands on.
The downside of the matter is that MTP is a horrible protocol, with weird limitations (you can only access it from one single application and do single operations at a time, which often leads to conflicts should you use multiple applications providing MTP support).
MTP protocol implementations exist in various user space software you will want to read through https://wiki.archlinux.org/index.php/Me … r_Protocol which outlines various options for access.
Last edited by V1del (2018-09-12 08:32:09)
#3 2018-09-12 08:41:09
Re: [SOLVED] Mounting Android phone as USB storage
Thank you for this explanation V1del. I think I understand the issue better now Even though I had read that wiki page before, I mistakenly surmised that my phone simply wasn’t new enough to support MTP since Android File Transfer told me it could not find a MTP device. My attempts to find out if my phone model actually used MTP or not failed.
I guess I should try those other MTP clients then like the wiki suggests.
#4 2018-09-12 14:21:07
Re: [SOLVED] Mounting Android phone as USB storage
jmtpfs did the trick. It’s slow but works. Big files are problematic though but that’s MTP for you I guess.
Источник