Проверка и монтирование SD‑карты через ADB — краткая инструкция

Вкратце: подключите устройство, проверьте adb devices, затем через adb shell выполните df -h, ls -l /storage/ и mount | grep -E 'sd|storage' — эти команды покажут, какие накопители видит система и где они смонтированы. Для ручного монтирования потребуется root и корректный путь к блочному устройству (например /dev/block/mmcblk1p1).

Как быстро проверить подключение и доступность накопителей

  1. Подключите устройство в режиме передачи файлов (MTP/File Transfer). Убедитесь, что ПК видит устройство:
    • adb devices
  2. Просмотреть точки монтирования и размеры:
    • adb shell df -h
    • adb shell mount | grep -E 'sd|storage'
  3. Посмотреть список доступных каталогов:
    • adb shell ls -l /storage/
    • adb shell ls -l /sdcard/ Обратите внимание на папки вида XXXX-XXXX — это идентификаторы внешних томов (microSD).
  4. Найти блочное устройство:
    • adb shell ls -l /dev/block/ | grep mmc
    • или adb shell ls -l /dev/block/vold*
  5. Для ошибок на уровне ядра/файловой системы:
    • adb shell dmesg | tail — полезно при проблемах с распознаванием карты.

Если внешний том не отображается, переключите режим USB (PTP/MTP), попробуйте другой кабель/порт и перезагрузите устройство. На Windows проверьте драйверы ADB.

Как вручную смонтировать SD‑карту через ADB (практическая инструкция)

Предупреждение: большинство операций монтирования требуют root. На стоковых устройствах права часто ограничены.

Шаги:

  1. Получите root в shell (если доступен): adb root или adb shell + su.
  2. Найдите блочное устройство карты, например:
    • adb shell ls -l /dev/block | grep mmcblk Частый результат: /dev/block/mmcblk1p1 или /dev/block/vold/179:33.
  3. Создайте точку монтирования:
    • adb shell mkdir -p /mnt/ext_sd
  4. Выполните монтирование (пример для FAT/exFAT):
    • adb shell mount -t vfat /dev/block/mmcblk1p1 /mnt/ext_sd Для ext4: mount -t ext4 /dev/block/... /mnt/ext_sd
  5. Проверьте доступность:
    • adb shell ls -la /mnt/ext_sd
  6. Если нужно скопировать файлы на ПК:
    • adb pull /storage/XXXX-XXXX/путь/файл ./ И обратно: adb push local.file /sdcard/Download/

Неправильное указание устройства или типа файловой системы может привести к потере данных. Всегда делайте бэкап перед форматированием.

Диагностика и способы решения проблем

  • Карта не видна устройством:
    • Проверка физической вставки, очистка контактов, тест карты в кардридере.
    • Проверить логи ядра: adb shell dmesg | tail.
  • Доступ ограничен (permissions/SELinux):
    • Проверьте права и контекст: ls -Z /storage/....
    • На приложениях используйте Storage Access Framework вместо прямого доступа.
  • Некорректная ФС (ошибки чтения):
    • Попробуйте смонтировать на ПК и выполнить проверку диска; при необходимости форматируйте в FAT32/exFAT/EXT4 в зависимости от требований устройства.
  • Карта монтируется, но файлы недоступны:
    • Выполните adb shell sync и проверьте, не мешает ли MediaScanner; также проверьте UID/GID владельца.

Практические команды для быстрой диагностики:

  • adb devices
  • adb shell df -h
  • adb shell ls -l /storage/
  • adb shell mount | grep -E 'sd|storage'
  • adb shell dmesg | tail
  • adb pull /storage/XXXX-XXXX/путь ./

Частые ошибки

  • Попытка смонтировать без root — большинство устройств запретят операцию.
  • Неправильный тип ФС в команде mount (vfat vs exfat vs ext4).
  • Форматирование без бэкапа — потеря данных.
  • Путаница между внутренним emulated /sdcard и внешним томом /storage/XXXX-XXXX.

FAQ

  • Нужно ли root для всех операций?
    Нет — базовая проверка видимости и копирование через adb pull/push обычно работают без root. Ручное монтирование почти всегда требует root.
  • Как узнать идентификатор внешней карты?
    Смотрите adb shell ls -l /storage/ — внешний том обычно имеет имя вида XXXX-XXXX.
  • Можно ли изменить точку монтирования без рут‑прав?
    Нет, это системная операция; используйте официальные API (Storage Access Framework) для доступа из приложений.
  • Как безопасно извлечь карту?
    Отмонтируйте на устройстве через настройки хранилища или выполните adb shell am broadcast -a android.intent.action.MEDIA_UNMOUNTED --ez read-only true (команды зависят от версии Android) и дождитесь завершения операций записи.

Если нужно, адаптирую команды под вашу платформу (Windows/macOS/Linux) или конкретную модель устройства.