這篇文章介紹如何在Android手機安裝帶桌面環境的Ubuntu系統,免Root權限。
我們將利用Termux的proot-distro工具,手動建立Ubuntu中文桌面環境。在一切就緒後,文末我會附上一鍵啟動的指令稿。
如果您不想手動設定Ubuntu,請改用 社群製作的指令稿自動安裝。
1. 前置條件#
手機要跑Ubuntu圖形界面至少需要6GB RAM。
處理器建議Qualcomm Snapdragon 845以上等級。
儲存空間需準備至少10GB。
我的裝置:Sony Xperia 10 V,Android 13
安裝 Termux
安裝 Termux X11
設定GPU硬體加速 virglrenderer
2. 安裝Ubuntu最小檔案系統#
這裡的最小檔案系統指的是proot-distro維護者提供的rootfs。他們維護的rootfs沒有LTS版本,一律是當年度最新版的Ubuntu。
- 開啟Termux,安裝Proot-distro和PulseAudio
pkg update
termux-setup-storage
pkg install proot-distro pulseaudio vim
- 安裝proot Ubuntu
proot-distro install ubuntu
- 登入Ubuntu。
--user
參數表示登入root。--shared-tmp
則是將Termux的tmp目錄掛載至proot內部,以便日後共享X伺服器資源。
proot-distro login ubuntu --user root --shared-tmp
- 登入後先安裝sudo、vim、PPA工具。安裝的時候可能會問您的時區,輸入數字回答。
apt update
apt install sudo vim software-properties-common
- 因為Android沒有Systemd,請輸入以下指令停用Ubuntu的Snap套件系統
cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
# To prevent repository packages from triggering the installation of Snap,
# this file forbids snapd from being installed by APT.
# For more information: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
- 再透過Mozilla的套件庫安裝Firefox:
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt-get update
sudo apt-get install firefox-esr
- 要退出proot系統,請輸入
exit
登出。
3. 更換Ubuntu套件庫鏡像站#
此為選擇性步驟。更改套件庫鏡像站可加快套件下載速度。
全球套件庫鏡像站請見 Official Archive Mirrors for Ubuntu
- 例如,使用以下指令,將
/etc/apt/sources.list
的ports.ubuntu.com
網址全部替換成台灣國網中心的網址:
sudo sed -i 's/ports.ubuntu.com/free.nchc.org.tw/g' /etc/apt/sources.list
- 再更新套件列表
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. 安裝桌面環境#
如果您會操作純文字界面,那麼桌面環境可以不用裝。
桌面環境三選一。
XFCE#
- 安裝XFCE(Xubuntu的配置)。出現
keyboard layout
的問題的時候輸入1,並選取使用lighdm
sudo apt install xubuntu-desktop
- 設定預設終端機模擬器,輸入
xfce4-terminal
的編號
sudo update-alternatives --config x-terminal-emulator
用dbus啟動的指令是為startxfce4
。下面會談到。
KDE#
- 安裝KDE(Kubuntu的配置)
sudo apt install kubuntu-desktop
- 設定預設終端機模擬器,輸入
konsole
的編號
sudo update-alternatives --config x-terminal-emulator
用dbus啟動KDE的指令是為startplasma-x11
。下面會談到。
GNOME (實驗性)#
安裝GNOME
sudo apt install ubuntu-desktop
啟動GNOME的指令:export XDG_CURRENT_DIR=GNOME && service dbus start && gnome-shell --x11
6. 設定時區、中文、輸入法#
- 設定時區為台灣台北
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
- 安裝locales和Fcitx5輸入法(Fcitx5的新酷音輸入法需要外接鍵盤才能用)
sudo apt install locales fcitx5* fonts-noto-cjk
- 編輯:
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
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. 設定一鍵啟動桌面環境指令稿#
此處我們會設定採用一鍵啟動Termux、Termux X11、virglserver、XFCE4的捷徑,自動啟動桌面環境。
- 退出proot環境,退出Termux
exit
exit
exit
開啟手機系統設定,給Termux開啟「允許顯示在其他應用程式上層」權限
重新開啟Termux,輸入以下指令建立捷徑
mkdir .shortcuts
vim .shortcuts/startproot_ubuntu.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 Ubuntu並啟動桌面環境,注意最後面的startxfce4是用於啟動XFCE4桌面的。
proot-distro login ubuntu --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_ubuntu.sh
到手機桌面,新增小工具 → 選取Termux Widget,可以看到剛才寫的捷徑出現在列表中。
點選按鈕,Termux就會自動開啟登入桌面了。
在Termux X11的界面按上一頁就會喚醒手機鍵盤,這裡我推薦用 Hacker’s Keyboard方便操作Ubuntu。
手機通知欄滑下來,按Termux X11的
Preferences
,可將觸控改為模擬觸控板,這樣就能叫出滑鼠。桌面圖示可能有點太小了,將Display resolution mode改為
Scaled
,依照喜好縮放。另外建議在Linux系統設定停用螢幕鎖定和螢幕保護程式,因為proot無法解鎖螢幕保護。
有外接鍵盤情況下,點選系統匣的Fcitx5圖示(若沒看到,請點應用程式列表的fictx5手動啟動),右鍵按設定,加入新酷音輸入法。並按CTRL+空白鍵切換注音輸入。
若要終止執行Ubuntu,在手機通知欄按Exit退出。再強制停止Termux與Termux X11。