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程式,圖形效率非常差勁!
1. 安裝依賴套件#
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的指令稿#
- 設定x11VNC的連線密碼,六位數
x11vnc -storepasswd
- 新增指令稿
vim ~/starti3.sh
- 填入以下內容,使用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 &
- 賦予執行權限
chmod +x ~/starti3.sh
3. 連線到VNC桌面#
- 執行指令稿
./starti3.sh
開啟RealVNC Viewer,IP輸入
localhost:5900
連線,輸入密碼,就會看到畫面了。i3wm以鍵盤操作為主,需要自行組態快捷鍵,請參閱 i3wm的使用說明。
4. X11 Forwarding到iSH Shell#
- 編輯遠端Linux的sshd設定
/etc/ssh/sshd_config
,允許X11 Forwarding
X11Forwarding yes
- 接著在iSH Shell安裝OpenSSH套件
apk add openssh
啟動i3wm指令稿
回到iSH Shell,執行
ssh -X
指令,將遠端Linux的Firefox拉到iSH Shell執行:
export DISPLAY=:0
ssh -X 使用者名稱@遠端Linux的IP firefox
參考資料#
- lurenJBD的一鍵安裝桌面環境指令稿 iSH-Tools
- x11vnc - Alpine Linux Wiki
- Running a VNC Server -