這篇文章介紹如何用Termux的proot-distro工具,手動建立中文化、支援PulseAudio音訊、桌面環境為XFCE4的Debian系統,不需要root權限。文末再附上一鍵啟動的指令稿。
選用Debian的好處是比Ubuntu穩定,套件格式跟Ubuntu相近,並且沒有Snap干擾(需要systemd,Termux不支援)。
如果您不想手動安裝,請改用 社群製作的指令稿自動安裝。
1. 前置條件#
要跑Debian手機需要至少4GB RAM,圖形界面至少6GB。
儲存空間需準備10GB。
我的裝置:小米Poco F1, Lineage OS 20 (Android 13)
安裝 Termux
安裝 Termux X11
啟用GPU硬體加速 Termux以virglrenderer達成GPU 3D硬體加速
2. 安裝Debian最小檔案系統#
這裡的最小檔案系統指的是proot-distro開發者提供的rootfs,沒有要用debootstrap製作啦。
- 安裝Proot-distro和PulseAudio
pkg update
termux-setup-storage
pkg install proot-distro pulseaudio vim
- 安裝Proot Debian
proot-distro install debian
- 登入Debian。
--user
參數表示登入指定帳戶,目前是root。--shared-tmp
則是將Termux的tmp目錄掛載至proot內部以共享X伺服器資源。
proot-distro login debian --user root --shared-tmp
- 登入後先安裝sudo、vim、Firefox瀏覽器
apt update
apt install sudo vim firefox-esr
- 要退出Proot系統,請輸入
exit
登出。
3. 更換Debian映射站台#
此為選擇性步驟。更改映射站,加快套件下載速度。
詳細用法參考 SourcesList - Debian Wiki
可用的映射站台: Debian 映射站台
- 編輯映射站列表
vim /etc/apt/sources.list
- 將網址全部替換成台灣國網中心的網址(需注意版本代號,目前是bookworm):
deb http://opensource.nchc.org.tw/debian/ bookworm main contrib non-free
deb-src http://opensource.nchc.org.tw/debian/ bookworm main contrib non-free
deb http://opensource.nchc.org.tw/debian/ bookworm-updates main
deb-src http://opensource.nchc.org.tw/debian/ bookworm-updates main
deb http://security.debian.org/debian-security bookworm/updates main contrib non-free
deb http://opensource.nchc.org.tw/debian bookworm-backports main
- 更新套件列表
apt update
4. 建立一般使用者#
通常情況下我們不會使用root帳戶操作系統,為此需要新增一般使用者帳戶,並在需要變更系統時(例如執行apt指令)加上sudo指令暫時提昇權限。
- 修改root密碼
passwd
- 新增wheel和video群組
groupadd storage
groupadd wheel
groupadd video
- 新增一般帳戶"user",並修改密碼。
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash user
passwd user
- 將user加入sudo群組。執行
visudo
指令,找到root ALL=(ALL:ALL) ALL
那一行,在下一行加入以下內容:
user ALL=(ALL:ALL) ALL
- 切換一般帳戶
su user
cd
5. 安裝桌面環境#
目前Termux無法正常啟動GNOME桌面(套件名稱:gnome
)
KDE桌面(kde-full
)推薦手機RAM有8GB以上再裝。
XFCE4是最平衡的選擇,很輕量,適合大多數手機使用:
sudo apt install xfce4 xfce4-goodies dbus-x11
- XFCE的套件安裝時會問鍵盤設定,輸入1選擇US。
6. 設定時區、中文、輸入法#
* Fcitx5輸入法需要外接鍵盤才能使用。
- 設定時區為台灣台北
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
- 安裝locales和Fcitx5輸入法
sudo apt install locales fcitx5* fonts-noto-cjk
- 用vim編輯
/etc/locale.gen
:vim /etc/locale.gen
,將正體中文去除註解(#),如下:
zh_TW.UTF-8 UTF-8
- 生成正體中文語言
locale-gen
echo "LANG=zh_TW.UTF-8" > /etc/locale.conf
- 用VIM編輯
.profile
vim ~/.profile
- 加入以下內容,設定語言為正體中文,並指定輸入法使用Fcitx5。(如果fcitx5無法喚醒,請把語言改回
en_US.UTF-8
)
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=
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
fcitx5 &
7. 如何手動進入桌面環境#
此節是為了讓您認識原理之用,如果不想知道請直接跳下一節。
安裝Debian後,將Termux和Termux X11應用程式強制停止,清除快取。重啟Termux。
開啟Termux X11 app,保持在背景開啟。接著回到Termux,執行PulseAudio、執行Termux X11、執行virgl server
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
export DISPLAY=:0
termux-x11 :0 &
virgl_test_server_android &
- 登入Debian,注意這邊登入的是一般帳戶
user
proot-distro login debian --user user --shared-tmp
- 依序啟動PulseAudio、Fcitx5、桌面環境XFCE4
export DISPLAY=:0
PULSE_SERVER=tcp:127.0.0.1
fcitx5 &
dbus-launch --exit-with-session startxfce4 &
- 切換至Termux X11的畫面應可看到桌面環境。對Termux X11的懸浮視窗按一下,將權限撤回就能全螢幕。
8. 一鍵啟動桌面環境指令稿#
每次啟動桌面環境都要打指令實在太麻煩了,還好clien上的韓國人提出了一個方法,使我們能從桌面捷徑方式,一鍵跑完啟動Termux+Termux X11+virglserver的程序,自動啟動桌面環境。
點選系統設定,給Termux開啟「允許顯示在其他應用程式上層」權限
重新開啟Termux,輸入以下指令建立捷徑 (不是proot-distro內)
mkdir .shortcuts
vim .shortcuts/startproot_debian.sh
- 填入以下內容
#!/bin/bash
# 中止所有舊行程
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server_android termux-wake-lock
# 啟動Termux X11
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR}
termux-x11 :0 -ac &
sleep 3
# 啟動PulseAudio
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
# 啟動GPU加速的virglserver
virgl_test_server_android &
# 登入proot Debian並啟動桌面環境
proot-distro login debian --user user --shared-tmp -- bash -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1; dbus-launch --exit-with-session startxfce4"
- 賦予執行權限
chmod +x .shortcuts/startproot_debian.sh
到手機桌面,新增小工具 → 選取Termux Widget,可以看到剛才寫的捷徑出現在列表中。
點選按鈕,Termux就會自動開啟登入桌面了。
通知欄滑下來,按Termux X11的
Preferences
,可將觸控改為模擬觸控板,這樣就能叫出滑鼠。如果要使用手機鍵盤:回到Termux,點一下螢幕叫出鍵盤,然後通知欄滑下來,再點選Termux X11就能維持手機鍵盤開著。或是滑動螢幕底部的虛擬鍵盤,就會出現可以用手機鍵盤打字的輸入框。
XFCE4的圖示可能會太小,點選左上角→設定管理員→外觀,視窗縮放設為2倍。另外建議在系統設定停用XFCE的螢幕鎖定和螢幕保護程式,因為無法解鎖。
有外接鍵盤情況下,點選系統右上角的Fcitx5圖示,右鍵按下設定加入新酷音輸入法。並按CTRL+空白鍵切換注音輸入。
若要終止執行,回到Termux按CTRL+C終止桌面環境再登出:
exit