本文解說如何設定VNC伺服器,讓我們可以存取Termux的Linux系統桌面。適用透過proot或chroot安裝的Linux系統。
Termux能在Android手機跑Linux,配好環境後就要煩惱桌面(圖形環境)的連線問題了。欲連線到Termux的Linux系統桌面,有Termux X11、XSDL、VNC三種方法。
前二者是在手機跑X伺服器,後者是遠端桌面的概念,也就是在手機跑VNC伺服器,再用VNC客戶端連線。這個VNC客戶端可以是本機的、也可以是其他電腦上的客戶端。
論圖形效能X伺服器要比VNC要好,也更容易達成3D硬體加速。
早期我學Termux的時候看很多人都是用VNC,但隨著Termux X11逐漸成熟,VNC就逐漸被我拋棄了。
如果三者都跑在同一部手機,因為都是localhost,沒有延遲問題,VNC相較於X伺服器實在沒什麼性能優勢。
VNC的強項是用其他電腦遠端存取!相較於SSH X伺服器forwarding的方法,VNC可以降低畫質減低頻寬,甚至headless的啟動,在遠端檢視的時候性能優勢就出來了。
所以VNC適合「用電腦連線到手機Termux桌面」的場合,你不喜歡盯著小螢幕狂打指令對吧。那麼除了純文字SSH存取外,圖形化的VNC就是好選擇。
1. 挑選VNC客戶端#
手機推薦 AVNC或 RealVNC Viewer,後者功能較多但它是專有軟體。
電腦推薦 Remmina
2. 設定VNC伺服器#
請先安裝Termux proot distro (如 Debian) 或chroot (如 Ubuntu)
伺服端我使用的是自由開源的TigerVNC,版本為1.12.0。
- 確保目前是一般使用者,而非root
whoami
# 是root的話就打su "使用者名稱" 切換到一般使用者
- 安裝TigerVNC的套件:
sudo apt install tigervnc-standalone-server tigervnc-xorg-extension
- 設定VNC伺服器密碼
vncpasswd
- 新增VNC伺服器啟動後要執行的程式,編輯
~/.vnc/xstartup
,填入以下內容
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS
# 啟動PulseAudio音效伺服器,音訊會從Termux傳出來
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
# 執行桌面環境,此處為XFCE
exec startxfce4
- 賦予xstartup執行權限
chmod +x ~/.vnc/xstartup
- 接著定義VNC伺服器的設定檔。編輯
~/.vnc/config
,填入以下內容
# 目前的工作階段XFCE
session=xfce
# 解析度,越高佔用頻寬越多
geometry=1920x1080
# 位元深度,數值為8/16/24/32,數字越大畫面越好但越耗頻寬
depth=32
# 讓外部網路可以連線
localhost=no
3. 連線至VNC伺服器#
在Termux輸入tigervncserver
啟動VNC伺服器。觀察畫面輸出的通訊埠號,通常是從1開始。而VNC伺服器的通訊埠從5900開始算,因此這裡通訊埠是5901
本機連線#
欲行本機連線:手機開啟AVNC APP,新增主機連線,地址填localhost
,通訊埠填5901
AVNC操作建議點左邊按鈕改成觸控板模式。如果嫌Linux桌面字體太小,請降低解析度,或者到該桌面環境的設定調DPI。
電腦遠端連線#
先讓手機與電腦處於同一Wifi網路
在Termux打sudo apt install net-tools & ifconfig
指令取得手機IP,看Wlan那行
再於電腦的Reminna地址欄位切成VNC,輸入手機IP:5901
連線。
Reminna可以按左邊按鈕適應遠端桌面的大小。雖然輸入法只能使用遠端的打字,但兩邊剪貼簿會自動同步。
記得退出VNC伺服器連線後,要回到Termux中止伺服器,否則下次啟動會跑在新的通訊埠。
tigervncserver -kill :1