Монтируем iOS под OSX с помощью ifuse

На днях столкнулся с задачей примонтировать в OSX 10.14 iPad в качестве внешнего диска, с возможностью осуществлять файловые операции из консоли. В интернете я нашел довольно много инструкций как это сделать с помощью файловой системы ifuse. К сожалению с iOS 12 ничего не вышло. Устройство было разблокировано, доступ к данным разрешен, но несмотря на это возникала ошибка:

Failed to connect to lockdownd service on the device.
Try again. If it still fails try rebooting your device.

Данная статья написана чтобы сэкономить время тем у кого возникнет та же задача.

На github есть инструкция по сборке ifuse и основных зависимостей прямо из исходников в репозитории, но это довольно кропотливый путь так как у основных зависимостей есть еще множество зависимостей, а у них еще и т. д. Поэтому воспользуемся системой управления пакетов Homebrew.

Устанавливается она с помощью скрипта на оффсайте:
/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
Скрипт сам скачает все что необходимо homebrew, включая Xcode Command Line Tools. Для работы ifuse необходим OSXFuse, который можно скачать с оффсайта или установить с помощью команды:
brew cask install osxfuse
Теперь необходимо установить основные зависимости:
brew uninstall —ignore-dependencies libimobiledevice
brew uninstall —ignore-dependencies usbmuxd
#Если libimobiledevice и usbmuxd еще не устанавливались
#можно сразу выполнить эти команды
brew install —HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install —HEAD libimobiledevice
ВАЖНО: Если у вас уже установлены стабильные версии libimobiledevice и usbmuxd их обязательно необходимо удалить и установить dev версии с ключем —HEAD иначе при подключении устройств с iOS 12 возникнет ошибка.

И наконец устанавливаем iFuse:
brew install ifuse
Все готово, если подключено одно устройство то примонтировать его можно командой:
ifuse ~/_ifuse_mount_point
где ~/_ifuse_mount_point путь к точке монтирования.

Ifuse умеет монтировать общедоступную файловую систему (или всю если есть root), а так же директории приложений которые поддерживают API расшаривания файлов.

Если подключено несколько устройств то для того чтобы выбрать какое из них примонтировать необходимо использовать ключ -u
ifuse ~/ifuse_mnt -u <UniqueDeviceID>
Для того чтобы узнать UniqueDeviceID можно воспользоваться командой:
ideviceinfo

Для запуска из Spotlight можно создать AppleScript и сохранить его как приложение:
try
do shell script «/usr/local/bin/ifuse ~/_ifuse_mount_point»
on error errMsg
display dialog «ERROR: » & errMsg
end try

Оставить комментарий