快轉到主要內容

iOS跑X11視窗圖形界面,iSH Shell x11VNC安裝教學

分類   智慧型手機 ISH Shell教學
標籤   X Window VNC I3wm
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

X伺服器拉進來,iOS打出去!

分享如何在iOS的iSH Shell跑X視窗系統,執行Linux i3wm桌面環境,這樣你就能執行Linux圖形程式啦。

因為iSH Shell沒有模擬顯示器的功能,所以我們只能用「Xvfb」跑虛擬X伺服器(將X視窗畫面輸出到虛擬記憶體的技術),再搭配x11VNC搞個headless的VNC伺服器,就可以用VNC客戶端APP存取Linux的畫面了。

請注意:目前iSH Shell 1.3.2的環境不如UTM虛擬機完整,執行圖形程式很容易出現Bad System Call錯誤,就連簡單的sxiv看圖程式都沒辦法跑,這就是為什麼上面的圖片我只有跑xterm和xeyes的原因…至於桌面環境,iSH Shell連XFCE都無法啟動,只能跑i3wm、fluxbox、awesome這類簡單的X視窗管理員。

那能不能透過SSH X11 Forwarding,將遠端Linux的程式拉到iSH Shell的X視窗執行,當另類遠端桌面用?是可以啦,但由於iSH Shell是以模擬的方式執行x86程式,圖形效率非常差勁!

將遠端Linux的Firefox顯示在iSH Shell的X視窗

1. 安裝依賴套件
#

  1. 安裝專有軟體 RealVNC APP

  2. 安裝 iSH Shell APP

  3. 設定 iSH Shell的背景執行權限

  4. 安裝以下套件,包含X伺服器、i3wm、x11VNC

apk add x11vnc x11vnc-doc xvfb xterm xorg-server xf86-video-dummy xdpyinfo xdpyinfo-doc  i3wm i3status i3locki3wm-doc i3lock-doc i3status-doc ttf-dejavu font-noto-cjk

2. 撰寫啟動i3wm的指令稿
#

  1. 設定x11VNC的連線密碼,六位數
x11vnc -storepasswd
  1. 新增指令稿
vim ~/starti3.sh
  1. 填入以下內容,使用DiSPLAY:0,先啟動解析度1024x768的Xvfb工作階段,再啟動i3wm,然後開一個xterm,最後啟動x11VNC。
rm /tmp/.X0-lock

export DISPLAY=:0

Xvfb -screen $DISPLAY 1024x768x24 &

i3 &

xterm &

x11vnc -display $DISPLAY -usepw  -noshm -forever &
  1. 賦予執行權限
chmod +x ~/starti3.sh

3. 連線到VNC桌面
#

  1. 執行指令稿
./starti3.sh
  1. 開啟RealVNC Viewer,IP輸入localhost:5900連線,輸入密碼,就會看到畫面了。

  2. i3wm以鍵盤操作為主,需要自行組態快捷鍵,請參閱 i3wm的使用說明

4. X11 Forwarding到iSH Shell
#

  1. 編輯遠端Linux的sshd設定/etc/ssh/sshd_config,允許X11 Forwarding
X11Forwarding yes
  1. 接著在iSH Shell安裝OpenSSH套件
apk add openssh
  1. 啟動i3wm指令稿

  2. 回到iSH Shell,執行ssh -X指令,將遠端Linux的Firefox拉到iSH Shell執行:

export DISPLAY=:0

ssh -X 使用者名稱@遠端Linux的IP firefox

參考資料
#

相關文章

iSH Shell設定背景執行權限,防止iOS殺後台
分類   智慧型手機 ISH Shell教學
標籤   OpenRC
修改iSH Shell套件庫,更新至最新版Alpine Linux
分類   智慧型手機 ISH Shell教學
標籤   ISH Shell
iOS跑SSH伺服器,電腦遠端連線存取iPhone檔案
分類   智慧型手機 ISH Shell教學
標籤   ISH Shell Jailbreak IOS Tweak OpenSSH

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

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