這篇文章說明如何在Android手機上,使用Termux的proot-distro套件,手動設定一個帶有桌面環境的Arch Linux ARM,並可以播放音樂影片和使用桌面Linux的程式。
Arch Linux是重視簡潔的Linux發行版,要求使用者按自己的需求安裝系統,所以安裝過程要手動打指令。Arch Linux ARM則是原版Arch Linux (專注於x86架構)的分支,某些x86版的套件ARM這邊可能會找不到,但同樣有AUR可以用。
本文介紹如何手動安裝Arch Linux系統,懶的手動設定的請改用一鍵安裝指令稿: 安裝Termux Proot-distro
1. 事前準備#
要跑Arch Linux,手機需要至少4GB RAM,圖形界面至少6GB,免得系統崩潰。
儲存空間需準備10GB。
我的裝置:小米Poco F1, Lineage OS 20 (Android 13)
請先閱讀: Termux基礎教學
接著安裝 Termux X11
設定硬體加速。 Termux以virglrenderer達成GPU 3D硬體加速
2. 安裝Proot Arch Linux基本系統#
Termux執行時通知欄下滑,按ACQUIRE WAKELOCK
使其保持在背景執行。
- 首先,安裝proot-distro、Pulse Audio、vim
pkg update
pkg install proot-distro pulseaudio vim
- 安裝Arch Linux
proot-distro install archlinux
- 下載後使用以下指令登入Arch Linux,
--user
參數表示登入指定帳戶,目前是root。--shared-tmp
則是將Termux的tmp目錄掛載至proot內部以共享X伺服器資源。
proot-distro login archlinux --user root --shared-tmp
- 更新系統套件,輸入y確認更新。
pacman -Syu
- 要退出Proot系統,請輸入
exit
登出。
3. 更換Arch Linux套件庫鏡像站#
此為選擇性步驟。到 Arch Linux ARM官網找一個鏡像站加快下載速度。
- 例如使用台灣國內的鏡像。用vi編輯
/etc/pacman.d/mirrorlist
:
vi /etc/pacman.d/mirrorlist
將台灣伺服器
Server = http://tw2.mirror.archlinuxarm.org
取消註解。修改後再更新一次系統
pacman -Syu
4. 新增一般使用者#
- 變更root密碼
passwd
- 新增一般使用者
user
,將其加入wheel
群組,再修改密碼
pacman -S sudo vim
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash user
passwd user
- 賦予一般使用者帳戶系統管理者權限。編輯
/etc/sudoers
vim /etc/sudoers
# 在`root ALL=(ALL) ALL`的下一行加入以下內容:
user ALL=(ALL) ALL
- 接著登入user這個帳號。以後都是使用一般使用者帳號登入系統,不要使用root。
su user
cd
5. 安裝桌面環境和常用工具#
- 安裝Firefox、中文字體、SSH
sudo pacman -S vim firefox networkmanager xorg xorg-server pulseaudio noto-fonts-cjk git openssh fakeroot base-devel
- 安裝yay作為AUR Helper,需要花點時間編譯
sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
用vim編輯
/etc/makepkg.conf
,將MAKEFLAGS="-j2"
取消註解,並將-j
後面的數字改成手機處理器核心數的二倍,加快AUR套件的編譯速度。再來安裝桌面環境。目前Termux尚無法啟動GNOME桌面,KDE有點太吃資源了,我裝XFCE4,輕量與實用的選擇:
sudo pacman -S xfce4 xfce4-goodies lightdm
6. 設定時區、中文、輸入法#
Termux X11可以直接用手機鍵盤輸入文字,但若外接鍵盤就需要安裝中文輸入法。
- 因為沒有systemd,使用軟連結設定時區為台灣台北
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
用vim編輯
/etc/hostname
和/etc/hosts
,給主機取名,將localhost
替換掉用vim編輯
/etc/locale.gen
檔案,將zh_TW.UTF-8
取消註解。然後生成語言設定檔
sudo locale-gen
sudo echo "LANG=zh_TW.UTF-8" >> /etc/locale.conf
- 如果還是沒看到中文,在
~/.profile
加入以下參數:
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和新酷音
sudo pacman -S fcitx5-config-qt fcitx5-chewing fcitx5-qt fcitx5-gtk fcitx5-chinese-addons
- 用vim編輯
~/.profile
,加入以下內容:
fcitx5 &
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
- 下次登入Proot後,在應用程式列表啟動Fcitx5,對右上角應用程式匣的鍵盤圖示按右鍵,新增新酷音輸入法。
7. 如何手動進入桌面環境#
此節是為了讓您認識原理之用,如果不想知道請直接跳下一節。
在安裝完成後,退出Termux再重新啟動應用程式。
以後登入Arch Linux的步驟如下。
重啟Termux。開啟Termux X11,保持在背景開啟。
接著回到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 &
- 登入Arch Linux,注意這邊登入的是一般帳戶
user
proot-distro login archlinux --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. 設定一鍵啟動桌面環境指令稿#
一鍵跑完啟動Termux+Termux X11+virglserver的程序,自動啟動桌面環境。
點選系統設定,給Termux開啟「允許顯示在其他應用程式上層」權限
重新開啟Termux,輸入以下指令建立捷徑 (不是proot-distro內)
mkdir .shortcuts
vim .shortcuts/startproot_arch.sh
- 填入以下內容
#!/bin/bash
# 中止所有舊行程
killall -9 termux-x11 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 Arch Linux,並啟動PulseAudio、Fcitx5、桌面環境
proot-distro login archlinux --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_arch.sh
到手機桌面,新增小工具 → 選取Termux Widget,可以看到剛才寫的捷徑出現在列表中。
點選按鈕,Termux就會自動開啟登入桌面了。