На днях столкнулся с задачей примонтировать в 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
Автор: Савкин Артём