Udroid:在手機快速安裝Ubuntu Linux (Termux Proot)

Ubuntu是著名的Linux發行版,除了在電腦上使用外,Android裝置同樣能以Proot容器技術、免Root權限安裝Linux發行版。

以下採用的懶人方案是印度人開發的"Udroid",安裝過程只需要三行指令,會幫你安裝好一個XFCE桌面環境的Ubuntu 20.04,內建瀏覽器和文書軟體。

此方案適合給Android平板輔助使用,接上鍵盤滑鼠,便成為一台Linux小電腦了。

因為Termux本身是純文字界面,安裝好Ubuntu不啟動圖形環境,純粹跑程式腳本也是可以的。

影片示例:

1. 什麼是Proot,以及Proot的限制

參見Linux Proot-distro發行版

2. 安裝Termux和VNC Viewer

  1. 安裝Termux: Termux使用教學: 在Android手機上執行Linux指令

  2. 挑一個喜歡的VNC Viewer安裝,例如開源的AVNC。VNC Viewer在這裡像是遠端桌面檢視器的概念,用於登入Termux在本機所開啟的圖形界面。

3. 執行Ubuntu安裝腳本

  1. 複製這三行指令,於Termux長按貼上,執行,等待2GB檔案下載完成安裝。對,Udroid真的蠻肥的。
1
2
3
curl -L -o install.sh https://git.io/hippo-installer
bash install.sh
udroid --install
  1. 之後會自動登入。root@localhost代表已經進入純文字模式的Proot Ubuntu,試著使用apt update指令更新套件清單吧。

  2. 註:Proot預設是登入root,不過Udroid另外有提供一個普通使用者帳號hippo,密碼跟root一樣都是secret。使用以下指令登入:

1
2
login hippo
#輸入密碼
  1. 輸入exit退出proot,再輸入一次exit關閉Termux。

4. 登入圖形桌面環境

  1. 開啟Termux,輸入指令查看已經安裝的proot-distro:
1
proot-distro list
  1. 登入Udroid:
1
proot-distro login udroid-focal-xfce4
  1. 輸入vncserver,會顯示vncserver已於localhost的第幾個port開啟,預設從5900開始算,像下圖的port就是「5901」。注意如果vncserver沒有正確關閉的話,port每次都會變動。

  2. 開啟AVNC,加入主機,如圖填寫。port為5901,帳號root,密碼secret。

  3. 之後點選新增的主機,登入。(Android 12以上版本,Termux可能會在登入時遇到Signal 9錯誤,請看這部影片解決)

  4. 接著便會看到桌面。AVNC能從左側螢幕滑進來開啟鍵盤,另外需要到Settings → Input將Direct touch關閉,才能開啟觸控板滑鼠模式。

  5. 關閉圖形界面的正確步驟為:手機返回上一頁,斷開連線。之後回到Termux,輸入vncserver -kill :1來終止vncserver。之後再輸入exit退出Proot。

5. 一些疑難雜症

如何切換成中文/中文顯示不完全

Temrux最好維持英文,Proot則可以改成中文語言。

使用以下指令改成中文重新登入 (參考):

1
2
3
4
sudo locale-gen zh_TW
sudo locale-gen zh_TW.UTF-8
sudo dpkg-reconfigure locales
sudo update-locale LANG="zh_TW.UTF-8" LANGUAGE="zh_TW"

中文字型無法顯示

安裝Google Noto Sans字體,大部分語言都包了。

1
sudo apt install fonts-noto fonts-noto-cjk

中文輸入法

使用VNC Server時手機輸入的文字就會直接傳送到系統。但是Termux-x11如果使用實體鍵盤,就必須安裝中文輸入法。

音效無法啟動

大部分採用的方案是PulseAudio,將其重啟。參考

Termux輸入:

1
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1

Proot-distro裡面輸入:

export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1

無法執行3D應用程式

如果安裝的是Tigervnc,則其VNC Server支援軟體解碼渲染(llvm) 3D內容。

cannot find name for group ID

詳細原理參考這篇,最簡單做法是在Proot-distro家目錄建立以下空檔案:

1
touch .hushlogin

無法使用systemd或systemctl指令

Proot-distro內無解。如果使用的是chroot可參考: https://github.com/smaknsk/servicectl

6. 延伸閱讀