iOS
iOS 是由 Apple Inc. 所创的用于iPhone系列手机的操作系统。虽然Apple官方并不支持将iOS设备连接到Linux,但 libimobiledevice 项目提供了连接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包。
kio-extras包 包中包含有对 Dolphin 的iOS设备支持,它现在已经是 Dolphin 的依赖之一。[3]
手动挂载[编辑 | 编辑源代码]
安装 ifuse包 包。您可以通过运行以下命令来挂载您的iPhone上的媒体文件系统:
$ ifuse mountpoint(挂载点)
您可以通过此在 mountpoint/DCIM
中访问设备中的照片。
mountpoint/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
导入视频与图像[编辑 | 编辑源代码]
视频与图像一般都可以在 <mountpoint>/DCIM/100APPLE
下找到。
HTML5 视频[编辑 | 编辑源代码]
一般来讲您会想要使用 ffmpeg2theora包 把 MOV 文件转为 OGV 之类的 HTML5视频格式。需要注意的是转换后的视频不会保留元数据中的创建时间,所以您需要使用如下的脚本:
#!/usr/bin/sh find -name "*.MOV" | while read mov do d=$(gst-discoverer-1.0 -v $mov | awk '/datetime:/{print $2}' | tr -d \") base=${mov%.*} if test -f $base.ogv then touch -d${d} $base.ogv ls -l $base.ogv else echo $base.ogv missing fi done
然后使用 cp -a
或 rsync -t
以便保存文件的日期与时间数据。
疑难解答[编辑 | 编辑源代码]
ifuse 无法挂载应用程序文件目录[编辑 | 编辑源代码]
使用 ifuse 挂载应用程序目录并尝试列出挂载点下的内容时,您可能会遇到下面的错误:
".": Input/output error (os error 5)
这是一个已知问题,已经在现在的 libimobiledevice 开发版本中被修复,但尚未进入稳定版中。解决办法是安装 libimobiledevice-gitAUR 。
设备无法被重定向至虚拟机[编辑 | 编辑源代码]
如果您使用USB来在 Windows 虚拟机中同步设备,尝试将其重定向可能会因 "其他应用程序正在使用该设备" 而失败。这是由于 usbmuxd.service
在设备连接后自动启动。这可以通过停用或屏蔽 usbmuxd.service
来解决。
参考[编辑 | 编辑源代码]
- Ubuntu 的 iPhone 与 iPod Touch 文档 (2014年以后未见更新)