快轉到主要內容

iOS版UTM安裝Alpine Linux虛擬機,跑Docker容器、與iOS共享資料夾

· 民國113年甲辰年
·
切換繁體/簡體
分類   智慧型手機 iOS玩機與越獄
標籤   ISH Shell UTM Alpine Linux Docker
目錄

在iPhone/iPad執行Linux系統的虛擬機,跑Docker。

緣由:解決iSH Shell過於老舊的問題。iSH Shell模擬的是32位元(i386)的Alpine Linux系統,然而32位元很多套件都無法安裝,還有一堆Bad System Call的bug,不利於跑Docker容器,所以改用UTM跑64位元Linux虛擬機解決這個問題。

我依然選用Alpine Linux,本身就是一個輕量的發行版,最低只要128MB RAM就能安裝,開機速度很快,安裝速度也很快。雖然UTM虛擬機啟動時間比iSH Shell要多上幾分鐘,但是環境相對完整,起碼QEMU對x86指令的支援度要比iSH Shell好多了。UTM執行指令的回應速度約5秒,所以是足夠跑一些純文字工具的,例如ffmpeg、ImageMagick、完整的Python-pip環境,寫寫小程式,當然還有Docker。

其實不一定要跑Alpine啦!如果裝置RAM有4GB以上且啟用JIT,那麼跑Ubuntu Server也是可行的。

影片安裝過程參考:

1. 建立Alpine Linux UTM虛擬機
#

  1. Alpine Linux官網下載x86_64或aarch64架構的映像檔,選取standard版本

  2. 安裝UTM APP,新增Linux虛擬機。RAM至少512MB,儲存空間至少8GB,CPU至少分配2核心,並啟用強制多核心模式。

  3. 可以的話順便給UTM啟用JIT,虛擬機執行速度會快很多。不方便的話也沒關係,用UTM SE跑Alpine Linux勉強能行。

  4. 將虛擬機開機,參考Alpine Linux安裝教學,執行seupt-alpine指令稿,完成系統安裝。通常執行這個指令稿安裝十分鐘就能完成。為節省資源可以不安裝圖形界面,開機後會直接進入tty。

2. 安裝Docker
#

  1. 登入一般使用者帳號,即可在Alpine Linux安裝Docker:
sudo apk add docker docker-cli-compose

sudo addgroup $USER docker

sudo rc-update add docker

sudo rc-service docker start
  1. 如果docker pull指令出現No route to host錯誤,嘗試設定DNS伺服器:
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf

3. 外部SSH連線到UTM虛擬機
#

假設你覺得UTM的tty畫面太醜,那就用iSH Shell的ssh登入Alpine Linux虛擬機操作,還能用scp指令傳輸檔案。

  1. UTM虛擬機預設網路無法從外部存取。編輯Alpine Linux虛擬機網路設定,新增通訊埠轉送,把虛擬機內部的22通訊埠導向localhost的2022通訊埠,這樣虛擬機的SSH服務才能從外部連線。若果Docker服務有用到通訊埠也請一併開啟。

  2. 將虛擬機開機,在Alpine Linux虛擬機安裝SSH套件:

sudo apk add openssh

sudo rc-update add sshd

sudo rc-service sshd start
  1. 開啟iSH Shell APP。注意UTM放在後台容易被iOS系統中止。如果是iPad的話使用「滑動置前」或「幕前調度」開啟iSH Shell視窗即可保證兩個APP不會被系統中止。

  2. 在iSH Shell的視窗,輸入ssh user@localhost -p 2022指令登入,就能用iSH Shell管理UTM虛擬機內的服務。

  3. 你也可以在電腦用SSH客戶端,遠端登入UTM虛擬機:ssh user@iOS裝置的IP -p 2022

4. iOS與UTM虛擬機共享資料夾
#

此處介紹scp與VirtFS兩種共享資料夾方法。

SCP
#

  1. 在iSH Shell使用scp指令傳輸,例如將虛擬機內的/home/user/Downloads/file.txt,傳送到iSH Shell的/root目錄
scp -P 2022 -r user@localhost:/home/user/Downloads/file.txt  /root
  1. 同樣的,iSH Shell也能傳送檔案到虛擬機內部:
scp -P 2022 -r /root/file.txt  user@localhost:/home/user/Downloads/
  1. 若要將iSH Shell收到的檔案搬移到其他APP,開啟「檔案APP」,找到iSH Shell的/root目錄就能看到檔案了。

VirtFS
#

UTM的VirtFS為VirtIO-9P,不是VirtIO-FS。

9Pfs大多數Linux發行版都有支援。

  1. 編輯UTM虛擬機,到共享資料夾啟用VirtFS (9Pfs),掛載iOS的「下載」資料夾給虛擬機存取。

  2. 然後在虛擬機內執行指令,掛載iOS的共享資料夾到/mnt

sudo mount share -t 9p /mnt
  1. 如此一來兩邊的檔案就會互通了。

5. 虛擬機GPU加速
#

GPU直通不可行。

Linux虛擬機請善用UTM的virtio-gpu半虛擬化技術,增強虛擬機的圖形效能。

相關文章

iSH Shell: 在iOS上執行Linux終端機指令的APP
分類   智慧型手機 iOS玩機與越獄
標籤   ISH Shell IOS Linux Alpine Linux
修改iSH Shell套件庫,更新至最新版Alpine Linux
分類   智慧型手機 iOS玩機與越獄
標籤   ISH Shell
iOS跑SSH伺服器,電腦遠端連線存取iPhone檔案
分類   智慧型手機 iOS玩機與越獄
標籤   ISH Shell Jailbreak IOS Tweak OpenSSH

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。