Linux Deploy使用教學:在Android手機安裝Linux chroot容器

Linux Deploy需要Root權限。沒有Root權限請改用Termux Proot-distro

Linux Deploy可在手機上以chroot安裝Linux發行版,包含Ubuntu、Alpine、Arch、Debian、Kali、Fedora、CentOS、Gentoo、Slackware,要用自己的rootfs安裝也行。

然而Linux Deploy已經很久沒更新了,新版本Android會出現各種問題。如果你很在意這一點請考慮手動用Termux建立chroot環境

本篇介紹如何在手機用Linux Deploy安裝Ubuntu 18.04,以及做些後續優化。

1. 安裝Busybox

Linux Deploy需要Busybox才能運作。Busybox內含常用的Linux指令執行檔,能夠補全Android系統缺少的指令。

Android 11以上用Magisk模組"busybox-ndk"安裝Busybox最省事。

  1. 安裝這個新版本Magisk模塊管理器:FoxMagisk Module Manager

  2. 從裡面搜尋"Builtn Busybox",安裝Magisk模塊,重開機。

2. Linux Deploy安裝Ubuntu 18.04

Linux Deploy在設定choot時很容易下載錯誤。確保網路順暢,或者把下載的來源網址(source path)改成台灣伺服器。不然一個套件下載失敗(“Cannot download xxx”),VNC無法啟動,整個系統就要重裝。

  1. Google Play下載Linux Deploy,啟動後先點選右上角選項。

  2. 發行版選擇Ubuntu,架構選擇arm64。源地址可替換成台灣的站點: http://free.nchc.org.tw/ubuntu-ports ,加快下載速度 (感謝Ubuntu正體中文社團的協助)

  3. 安裝類型鏡像文件的意思就是將系統儲存成一個.img檔案,鏡像大小至少要20GB才夠,不夠可再用Termux執行resize2fs擴充。用戶名則是你的使用者帳號。

  4. 本地化設定為「英文」

  5. 允許使用初始化系統

  6. 啟用SSH和PulseAudio音訊輸出

  7. 圖形介面選擇XFCE4,使用VNC連線。

  8. 回到主畫面,點選右上角「安裝」,開始下載安裝。等到終端機出現<<<deploy就表示完成。

  9. 按下「啟動」,啟動系統。注意要看終端機有無出現Fail的錯誤訊息。

3. 使用VNC Viewer連線到Linux Deploy桌面

  1. 下載RealVNC Viewer,新增連線,IP填寫localhost,連線進去的密碼就是在Linux Deploy設定使用者的密碼。

  2. 正常顯示桌面,圖為Firefox瀏覽器,需要自行安裝Google Noto Sans來顯示中文字型。

  3. 「關機」的方法是按「停止」出現<<<stop後,左邊側欄滑出來按「退出」。

4. Linux Deploy後續優化

4.1. 安裝中文字型和瀏覽器

Google Noto Fonts支援大多數語言字體。

1
2
3
sudo apt update
sudo apt upgrade -y
sudo apt install noto-fonts firefox

4.2. 設定Linux Deploy音效輸出

參考外部連結:新奇玩法 Linux Deploy tts声音输出方法

4.3 修正終端機亂碼問題

  1. 透過以下指令修改root密碼:
1
sudo passwd root
  1. 讓終端機顯示目前工作目錄。用VIM編輯/etc/sudoers,在root下面加入自己的使用者名稱:
1
android ALL=(ALL:ALL) ALL
  1. Linux Deploy使用SSH或VNC登入時,終端機上下鍵切換指令會出現亂碼。使用以下指令修改使用者的預設shell成bash再重新登入:
1
sudo chsh -s /bin/bash <使用者名稱>

4.4. 更換VNC Server

  1. Linux Deploy預裝的VNC不支援軟體解碼3D,因此改用TigerVNC:
1
sudo apt install tigervnc-standalone-server tigervnc-common
  1. 啟動vncserver,這條指令是在ssh內輸入
1
vncserver  -localhost no -geometry 1280x720
  1. 接著再用RealVNC Viewer連線,如果崩潰試試不設密碼:
1
vncserver  -localhost no -geometry 1280x720 -SecurityTypes none --I-KNOW-THIS-IS-INSECURE

4.5. 補齊sources.list

Linux Deploy預設的sources.list軟體庫太少了,用VIM編輯/etc/apt/sources.list修改為如下(“focal”是20.04的版本代號):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu focal partner
deb-src http://archive.canonical.com/ubuntu focal partner

4.6. 升級至Ubuntu 20.04

  1. 用VNC登入桌面後,用終端機安裝更新器:
1
sudo apt install update-manager-core
  1. 更新全部套件至最新版
1
2
sudo apt update && sudo apt upgrade
sudo do-release-upgrade
  1. 如果出現authenticate 'focal.tar.gz' against 'focal.tar.gz.gpg' Authentication failed錯誤,先安裝gnupg並執行以下指令:
1
2
sudo apt install gnupg gnupg1 gnupg2
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C
  1. 再度執行:
sudo do-release-upgrade
  1. 輸入y開始更新系統,按照螢幕終端機的指示更新。

4.7. 使用Termux ssh進chroot

  1. Termux是一款好用的終端機模擬器,在chroot執行時,也可以用Termux以SSH連線進系統:
1
ssh android@localhost
  1. 還可以從Termux傳輸檔案至chroot桌面:
1
scp <本機檔案> android@localhost:/home/android/Desktop