iOS

出自 Arch Linux 中文维基

iOS 是由 Apple Inc. 所創的用於iPhone系列手機的作業系統。雖然Apple官方並不支持將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 只會顯示設備的照片與視頻,而不會顯示音樂。

kio-extras 包中包含有對 Dolphin 的iOS設備支持,它現在已經是 Dolphin 的依賴之一。[3]

手動掛載[編輯 | 編輯原始碼]

安裝 ifuse 包。您可以通過運行以下命令來掛載您的iPhone上的媒體文件系統:

$ ifuse mountpoint(挂载点)

您可以通過此在 mountpoint/DCIM 中訪問設備中的照片。

注意: 藉此,設備的音樂資料庫也可以在 mountpoint/iTunes_Control 訪問。您不能以這種方式向設備添加新的曲目,但可以藉此將設備中的歌曲複製到您的電腦。
警告: 手動編輯 iTunes_Control 中的資料庫會導致其損壞,這將使您已同步的歌曲變為只能通過重置系統(抹掉iPhone)來移除的過時失效數據。

要訪問一個應用程式的文檔文件系統,您首先需要辨認該應用程式。

$ 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 -arsync -t 以便保存文件的日期與時間數據。

疑難解答[編輯 | 編輯原始碼]

ifuse 無法掛載應用程式文件目錄[編輯 | 編輯原始碼]

使用 ifuse 掛載應用程式目錄並嘗試列出掛載點下的內容時,您可能會遇到下面的錯誤:

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

這是一個 已知問題 ,已經在現在的 libimobiledevice 開發版本中被修復,但尚未進入穩定版中。解決辦法是安裝 libimobiledevice-gitAUR

設備無法被重定向至虛擬機[編輯 | 編輯原始碼]

如果您使用USB來在 Windows 虛擬機中同步設備,嘗試將其重定向可能會因 "其他應用程式正在使用該設備" 而失敗。這是由於 usbmuxd.service 在設備連接後自動啟動。這可以通過 停用或屏蔽 usbmuxd.service 來解決。

參考[編輯 | 編輯原始碼]