🇺🇸 English version
這篇文章說明如何在Android手機上,使用Termux的proot-distro套件,手動設定一個帶有桌面環境的Arch Linux ARM,並可以播放音樂影片和使用桌面Linux的程式。

雖然這篇是寫給Arch Linux ARM用的,不過類似概念也可以用在Ubuntu/Debian/Alpine等發行版上。
這個系統需要全程手動打指令安裝,這樣會對系統有更多認識。懶的手動設定的請改用一鍵安裝指令稿:安裝Termux Proot-distro
Proot請參見安裝Linux Proot-distro
Arch Linux是重視簡潔的Linux發行版,要求使用者按自己的需求安裝系統,所以安裝過程要手動打指令。Arch Linux ARM則是原版Arch Linux (專注於x86架構)的分支,某些x86版的套件ARM這邊可能會找不到,但同樣有AUR可以用。
使用Proot前應當有以下認識:
- 很難實現GPU硬體加速
- 容器無經開機程序,無法使用Systemd系統服務
- 手機建議至少有10GB的儲存空間和4GB以上RAM。
請先閱讀:Termux基礎教學
接著安裝RealVNC Viewer
如果手機是Android 12以上版本,務必停用Phantom Process Killing防止出現signal 9錯誤。
Termux執行時通知欄下滑,按ACQUIRE WAKELOCK
使其保持在背景執行。
- 首先,安裝proot-distro、Pulse Audio、vim
1
2
| pkg update
pkg install proot-distro pulseaudio vim
|
- 查看線上可用的Linux發行版
- 安裝Arch Linux
1
| proot-distro install archlinux
|
- 下載後使用以下指令登入Arch Linux:
1
| proot-distro login archlinux
|
- 更新系統套件,輸入y確認更新。
- 要退出Proot系統,請輸入
exit
登出。
此為選擇性步驟。到Arch Linux ARM官網找一個鏡像站加快下載速度。
- 例如使用台灣國內的鏡像。用vi編輯
/etc/pacman.d/mirrorlist
:
1
| vi /etc/pacman.d/mirrorlist
|
將Server = http://tw2.mirror.archlinuxarm.org
取消註解。
修改後再更新一次系統
- 先給root變更密碼
- 新增一般使用者
ivon
,將其加入wheel
群組,再修改密碼
1
2
3
| pacman -S sudo vim
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash ivon
passwd ivon
|
- 賦予一般使用者帳戶系統管理者權限。用
vi
編輯/etc/sudoers
,在"root ALL=(ALL) ALL"
的下一行加入以下內容:
- 接著登入ivon這個帳號。以後都是使用一般使用者帳號登入系統,不要使用root。
- 用vi編輯
~/.profile
,加入以下內容
1
2
| #登入時啟動Pulse Audio
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
|
- 安裝Firefox、中文字體、SSH、TigerVNC
1
| sudo pacman -S vim firefox networkmanager xorg xorg-server pulseaudio noto-fonts-cjk git openssh fakeroot base-devel tigervnc neofetch
|
- 安裝yay作為AUR Helper,需要花點時間編譯
1
| sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
|
編輯/etc/makepkg.conf
,將MAKEFLAGS="-j2"
取消註解,並將-j
後面的數字改成手機處理器核心數的二倍,加快AUR套件的編譯速度。
再來安裝桌面環境。XFCE4是輕量與實用的選擇:
1
| sudo pacman -S xfce4 xfce4-goodies lightdm
|
- 如果要裝KDE Plasma也是可以,Linux允許存在多個桌面環境,只不過Plasma很肥:
1
2
| sudo pacman -S plasma-meta
yay -S tablet-mode
|
在Proot環境中,系統不會「開機」,因此存取圖形介面最簡單的方法就是執行VNC伺服器,然後再啟動VNC Viewer APP連線到桌面環境。甚至你可以用同一網路下的電腦VNC客戶端遠端登入手機。
至於音訊部份,Termux本身有PulseAudio的套件,因此只要設定一下便可用Termux來接收Proot內部的音效。
- 建立六位數vnc密碼
- 用vim編輯vnc設定檔
~/.vnc/config
,加入以下內容:
1
2
3
4
5
6
| # 桌面工作階段
session=xfce4
# 螢幕解析度
geometry=1920x1080
# 只有本機的VNC客戶端可以連線
localhost
|
- 編輯vnc啟動檔
~/.vnc/xstartup
,設定執行vncserver後執行xfce4:
1
2
3
4
5
6
7
| #!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 自動啟動Pulse Audio
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
# 執行XFCE4
dbus-launch --exit-with-session startxfce4
|
- 賦予執行權限
1
| chmod +x ~/.vnc/xstartup
|
- 從螢幕左邊滑出來點New Session,開第二個Termux終端機。用vim編輯
.profile
,加入以下內容:
1
2
3
| # 啟動Termux時也自動啟動Pulse Audio伺服器
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
|
- 輸入
exit
返回Proot的終端機。
RealVNC Viewer可以直接用手機鍵盤輸入文字,但若外接鍵盤就需要安裝中文輸入法。
- 因為沒有systemd,使用軟連結設定時區為台灣台北
1
| sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
|
用vim編輯/etc/hostname
和/etc/hosts
,給主機取名,將localhost
替換掉。
用vim編輯/etc/locale.gen
檔案,將zh_TW.UTF-8
取消註解。
然後生成語言設定檔
1
2
| sudo locale-gen
sudo echo "LANG=zh_TW.UTF-8" >> /etc/locale.conf
|
- 如果還是沒看到中文,在
~/.profile
加入以下參數:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| LANG=zh_TW.UTF-8
LC_CTYPE=zh_TW.UTF-8
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_COLLATE=zh_TW.UTF-8
LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
LC_PAPER=zh_TW.UTF-8
LC_NAME=zh_TW.UTF-8
LC_ADDRESS=zh_TW.UTF-8
LC_TELEPHONE=zh_TW.UTF-8
LC_MEASUREMENT=zh_TW.UTF-8
LC_IDENTIFICATION=zh_TW.UTF-8
LC_ALL=
|
- 安裝Fcitx5和新酷音
1
| sudo pacman -S fcitx5-config-qt fcitx5-chewing fcitx5-qt fcitx5-gtk fcitx5-chinese-addons
|
- 在
~/.profile
加入以下內容:
1
2
3
4
5
| GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
|
- 下次登入Proot後,在應用程式列表啟動Fcitx5,對右上角應用程式匣的鍵盤圖示按右鍵,新增新酷音輸入法。
在安裝完成後,退出Termux再重新啟動應用程式。
以後登入Arch Linux的步驟如下。
- 啟動Termux,直接以
ivon
這個使用者登入Arch Linux。
1
| proot-distro login --user ivon archlinux
|
- 啟動vncserver,通訊埠預設從
5900
開始算,像:1
的通訊埠是5901
。
開啟RealVNC Viewer,新增連線輸入localhost:5901
,輸入密碼,連線到vncserver。

點選i,調整連線畫質。畫面太小的話開啟左上角XFCE4系統設定→外觀→調整字體DPI。另外建議在系統設定停用XFCE的螢幕鎖定和螢幕保護程式,因為無法解鎖。

要登出的話,VNC Viewer按返回斷線,接著回到Termux內按CTRL+Z終止vncserver,然後輸入exit
登出proot。
- 在Proot-distro內以一般使用者執行:
1
| export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
|
- 在Termux(非proot內)執行:
1
2
| pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
|
Proot-distro會把手機內部儲存空間bind mount到proot系統的/sdcard
目錄,可直接用XFCE內建的Thunar檔案管理員存取。
使用此指令備份proot系統成壓縮檔:
1
| proot-distro backup --output archbackup.tar.gz archlinux
|
使用此指令還原proot系統:
1
| proot-distro restore archbackup.tar.gz
|
VNC Server只要播放影片就會有延遲高的問題,所以我們可以改用更為原生的方案改進圖形效能。更進一步來說,還可以試試GPU硬體加速。
詳情參考:Termux X11:手機上的XWayland伺服器使用教學