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年以後未見更新)