Termux:從0到1安裝Arch Linux桌面系統 (proot-distro)

🇺🇸 English version

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

雖然這篇是寫給Arch Linux ARM用的,不過類似概念也可以用在Ubuntu/Debian/Alpine等發行版上。

這個系統需要全程手動打指令安裝,這樣會對系統有更多認識。懶的手動設定的請改用一鍵安裝指令稿:安裝Termux Proot-distro

0. Termux Proot和Arch Linux ARM是什麼

Proot請參見安裝Linux Proot-distro

Arch Linux是重視簡潔的Linux發行版,要求使用者按自己的需求安裝系統,所以安裝過程要手動打指令。Arch Linux ARM則是原版Arch Linux (專注於x86架構)的分支,某些x86版的套件ARM這邊可能會找不到,但同樣有AUR可以用。

1. 事前準備

使用Proot前應當有以下認識:

  • 很難實現GPU硬體加速
  • 容器無經開機程序,無法使用Systemd系統服務
  • 手機建議至少有10GB的儲存空間和4GB以上RAM。
  1. 請先閱讀:Termux基礎教學

  2. 接著安裝RealVNC Viewer

  3. 如果手機是Android 12以上版本,務必停用Phantom Process Killing防止出現signal 9錯誤。

2. 安裝Proot Arch Linux基本系統

Termux執行時通知欄下滑,按ACQUIRE WAKELOCK使其保持在背景執行。

  1. 首先,安裝proot-distro、Pulse Audio、vim
1
2
pkg update
pkg install proot-distro pulseaudio vim
  1. 查看線上可用的Linux發行版
1
proot-distro list
  1. 安裝Arch Linux
1
proot-distro install archlinux
  1. 下載後使用以下指令登入Arch Linux:
1
proot-distro login archlinux
  1. 更新系統套件,輸入y確認更新。
1
pacman -Syu
  1. 要退出Proot系統,請輸入exit登出。

3. 更換Arch Linux軟體庫鏡像站

此為選擇性步驟。到Arch Linux ARM官網找一個鏡像站加快下載速度。

  1. 例如使用台灣國內的鏡像。用vi編輯/etc/pacman.d/mirrorlist:
1
vi /etc/pacman.d/mirrorlist
  1. Server = http://tw2.mirror.archlinuxarm.org取消註解。

  2. 修改後再更新一次系統

1
pacman -Syu

4. 新增一般使用者並給予系統管理者權限

  1. 先給root變更密碼
1
passwd
  1. 新增一般使用者ivon,將其加入wheel群組,再修改密碼
1
2
3
pacman -S sudo vim
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash ivon
passwd ivon
  1. 賦予一般使用者帳戶系統管理者權限。用vi編輯/etc/sudoers,在"root ALL=(ALL) ALL"的下一行加入以下內容:
1
ivon ALL=(ALL) ALL
  1. 接著登入ivon這個帳號。以後都是使用一般使用者帳號登入系統,不要使用root。
1
2
su ivon
cd
  1. 用vi編輯~/.profile,加入以下內容
1
2
#登入時啟動Pulse Audio
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1

5. 安裝桌面環境和常用工具

  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
  1. 安裝yay作為AUR Helper,需要花點時間編譯
1
sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
  1. 編輯/etc/makepkg.conf,將MAKEFLAGS="-j2"取消註解,並將-j後面的數字改成手機處理器核心數的二倍,加快AUR套件的編譯速度。

  2. 再來安裝桌面環境。XFCE4是輕量與實用的選擇:

1
sudo pacman -S xfce4 xfce4-goodies lightdm
  1. 如果要裝KDE Plasma也是可以,Linux允許存在多個桌面環境,只不過Plasma很肥:
1
2
sudo pacman -S plasma-meta
yay -S tablet-mode

6. 設定VNC和音訊伺服器

在Proot環境中,系統不會「開機」,因此存取圖形介面最簡單的方法就是執行VNC伺服器,然後再啟動VNC Viewer APP連線到桌面環境。甚至你可以用同一網路下的電腦VNC客戶端遠端登入手機。

至於音訊部份,Termux本身有PulseAudio的套件,因此只要設定一下便可用Termux來接收Proot內部的音效。

  1. 建立六位數vnc密碼
1
vncpasswd
  1. 用vim編輯vnc設定檔 ~/.vnc/config,加入以下內容:
1
2
3
4
5
6
# 桌面工作階段
session=xfce4
# 螢幕解析度
geometry=1920x1080
# 只有本機的VNC客戶端可以連線
localhost
  1. 編輯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. 賦予執行權限
1
chmod +x ~/.vnc/xstartup
  1. 從螢幕左邊滑出來點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
  1. 輸入exit返回Proot的終端機。

7. 設定時區、中文、輸入法

RealVNC Viewer可以直接用手機鍵盤輸入文字,但若外接鍵盤就需要安裝中文輸入法。

  1. 因為沒有systemd,使用軟連結設定時區為台灣台北
1
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
  1. 用vim編輯/etc/hostname/etc/hosts,給主機取名,將localhost替換掉。

  2. 用vim編輯/etc/locale.gen檔案,將zh_TW.UTF-8取消註解。

  3. 然後生成語言設定檔

1
2
sudo locale-gen
sudo echo "LANG=zh_TW.UTF-8" >> /etc/locale.conf
  1. 如果還是沒看到中文,在~/.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=
  1. 安裝Fcitx5和新酷音
1
sudo pacman -S fcitx5-config-qt fcitx5-chewing fcitx5-qt fcitx5-gtk fcitx5-chinese-addons
  1. ~/.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
  1. 下次登入Proot後,在應用程式列表啟動Fcitx5,對右上角應用程式匣的鍵盤圖示按右鍵,新增新酷音輸入法。

8. 安裝完成後的登入指令

在安裝完成後,退出Termux再重新啟動應用程式。

以後登入Arch Linux的步驟如下。

  1. 啟動Termux,直接以ivon這個使用者登入Arch Linux。
1
proot-distro login --user ivon archlinux
  1. 啟動vncserver,通訊埠預設從5900開始算,像:1的通訊埠是5901
1
vncserver :1
  1. 開啟RealVNC Viewer,新增連線輸入localhost:5901,輸入密碼,連線到vncserver。

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

  3. 要登出的話,VNC Viewer按返回斷線,接著回到Termux內按CTRL+Z終止vncserver,然後輸入exit登出proot。

9. 其他使用小技巧

9.1. 如果Proot無法輸出音效

  1. 在Proot-distro內以一般使用者執行:
1
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
  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

9.2. 從Proot系統存取手機內部儲存空間

Proot-distro會把手機內部儲存空間bind mount到proot系統的/sdcard目錄,可直接用XFCE內建的Thunar檔案管理員存取。

9.3. 備份與還原Proot系統

使用此指令備份proot系統成壓縮檔:

1
proot-distro backup --output archbackup.tar.gz archlinux

使用此指令還原proot系統:

1
proot-distro restore archbackup.tar.gz

9.4. 使用XWayland伺服器改善圖形效能

VNC Server只要播放影片就會有延遲高的問題,所以我們可以改用更為原生的方案改進圖形效能。更進一步來說,還可以試試GPU硬體加速。

詳情參考:Termux X11:手機上的XWayland伺服器使用教學

10. 延伸閱讀

如果本網站文章對您有幫助,歡迎贊助我。