iOS

出自 ArchWiki

iOS 是苹果公司为 iPhone 系列智能手机创建的操作系统。虽然苹果不支持将 iOS 设备连接到 Linux,但 libimobiledevice 项目提供了库和工具,用于连接 iOS 设备和 Linux 机器并在它们之间传输数据。

提示: KDE Connect 也可用于在 iOS 和 Linux 之间传输文件。

安装

安装 libimobiledevice 软件包。

连接设备

Usbmux 守护进程

libimobiledevice 软件包依赖于 usbmuxd,它负责执行与 iOS 设备的底层连接。usbmuxd 软件包还包含一个 udev 规则,该规则在设备连接或断开连接时自动启动和停止守护进程。

连接 iOS 设备并验证 usbmuxd.service 是否自动启动。

$ systemctl status usbmuxd.service
...
Active: active (running) since Sun 2020-01-19 19:23:18 UTC; 22s ago
...

配对

连接 iOS 设备并解锁屏幕后,您应该在设备上看到“信任此电脑?”弹出窗口。点击“信任”,然后输入您的设备密码以完成配对过程。

如果您没有看到弹出窗口,您可以手动启动配对过程。连接设备,解锁屏幕并运行

$ idevicepair pair
SUCCESS: Paired with device d8e8fca2dc0f896fd7cb4cb0031ba249

如果您连接了多个 iOS 设备,可以传递 --udid ios_udid 参数以定位特定设备。

您可以通过运行以下命令验证配对是否成功

$ idevicepair validate
SUCCESS: Validated pairing with device 00008030-001D3562367A402E

传输数据

配对后,iOS 向计算机公开两个不同的文件系统。一个是媒体文件系统,包含设备的照片、视频和音乐。第二个文件系统用于将文件直接共享到某些应用程序。这有时被称为“iTunes 文稿共享”。 [1] [2]

使用图形文件管理器

使用 GVFS 的文件管理器可以与 iOS 设备交互。要访问媒体文件系统,安装 gvfs-gphoto2。要访问应用程序文稿文件系统,安装 gvfs-afc

注意: 访问媒体文件系统时,GVFS 将仅公开设备的照片和视频,而非音乐。

Dolphin 对 iOS 设备的支持包含在 kio-extras 软件包中,该软件包已经是 Dolphin 的依赖项。 [3]

手动挂载

安装 ifuse 软件包。然后,您可以运行以下命令来挂载 iPhone 的媒体文件系统

$ ifuse mountpoint

您可以使用它来访问 挂载点/DCIM 内的设备照片。

注意: 设备的音乐数据库也可以在 挂载点/iTunes_Control 中访问。您无法通过这种方式向设备添加新歌曲,但您可以将歌曲从设备复制到计算机。
警告: 手动编辑 iTunes_Control 内的数据库将导致数据库损坏,并将您同步的歌曲变成只能通过系统还原删除的陈旧数据。

要访问应用程序的文稿文件系统,首先您需要识别应用程序

$ ifuse --list-apps
"CFBundleIdentifier","CFBundleVersion","CFBundleDisplayName"
"org.videolan.vlc-ios","432","VLC"
"org.wikimedia.wikipedia","1932","Wikipedia"
"org.kde.kdeconnect","2","KDE Connect"
[...]

然后,您可以使用以下命令挂载应用程序的文件

$ ifuse --documents APPID mountpoint

其中 APPID 是所需应用程序的捆绑标识符,例如 org.videolan.vlc-ios

完成后,卸载文件系统

$ fusermount -u mountpoint

导入视频和图片

照片和视频通常都可以在 <挂载点>/DCIM/100APPLE 中找到。

iOS 倾向于使用不太受支持的格式,但可以配置为使用兼容性更好的格式。[4] 此外,您可能希望 转换 已经以兼容性较差的 Apple 格式保存的媒体。

故障排除

ifuse 挂载应用程序目录失败

当使用 ifuse 挂载应用程序目录时,尝试列出挂载点的内容时,您可能会遇到以下错误

".": Input/output error (os error 5)

这是一个 已知问题,已在当前 libimobiledevice 开发版本中修复,但尚未在稳定版本中发布。一种解决方法是安装 libimobiledevice-gitAUR

设备无法重定向到虚拟机

如果您使用 Windows 虚拟机通过 USB 同步设备,则尝试重定向设备可能会失败,并显示“设备正被另一个应用程序使用”消息。这是由于连接设备时自动启动了 usbmuxd.service。可以通过停止或屏蔽 usbmuxd.service 来解决此问题。

参见