快轉到主要內容

在Termux proot-distro使用自訂rootfs,建立Linux容器

智慧型手機 Termux教學 Proot-Distro
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

本文示範如何在Android Termux的proot-distro工具新增自己喜歡的Linux發行版。

以Ubuntu為例子,我們將安裝舊版Ubunut 22.04 LTS的proot Ubuntu。

1. proot vs proot-distro
#

proot是為chroot的userspace實作版,可免root權限做到類似chroot的功能。

有些開發者分發Termux的proot發行版時是用proot指令硬幹的,比方說 Box64Droid,你可以看到它是下載自訂rootfs,再用一長串指令登入proot發行版。

但既然有proot-distro這好用的指令稿,何不善加利用呢?它是一個proot的wrapper script,整合了下載、登入、登出proot發行版的程序,還可以方便執行指令。

我在 proot-distro使用教學講述了用法,可是萬一proot-distro維護者提供的發行版不符需求呢?例如:

  1. 要特定Linux版本的rootfs,比方說LTS版的Ubuntu,但proot-distro的Ubuntu都是最新版本。
  2. 需要特定架構的rootfs,例如32位元x86架構的Manjaro
  3. 想在ARM64的裝置執行x86_64的系統

所幸,proot-distro是允許我們「註冊」proot發行版的,我們可以新增自己的rootfs,再用proot-disro指令操作。

2. 如何建置自訂Linux rootfs
#

大部份發行版都有自己的建置rootfs工具。注意Termux收錄的debootstrap這類套件可能有權限問題,於Linux電腦製作rootfs再移動到手機比較保險。

您也可以參照 proot-distro作者的指令稿了解如何建立自訂rootfs。

3. 註冊新的Ubuntu proot-distro
#

  1. 開啟Termux,安裝proot-distro
pkg install proot-distro
  1. Ubuntu daily builds,複製Ubuntu base 22.04網址。這是最小化的系統。

  2. 暫時下載到Termux家目錄

pkg install wget

wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.3-base-arm64.tar.gz
  1. 計算SHA256校驗碼,之後移除
pkg install coreutils

sha256sum ubuntu-base-22.04.3-base-arm64.tar.gz

rm ubuntu-base-22.04.3-base-arm64.tar.gz
  1. 切換到存放proot指令稿的$PREFIX/etc/proot-distro,複製範本指令稿,將其命名為ubuntu22.04.sh
cd $PREFIX/etc/proot-distro
cp distro.sh.sample ubuntu22.04.sh
  1. 編輯
vim ubuntu22.04.sh
  1. 新增以下內容。我省略了原文註解。
# 架構應與手機處理器架構一致
DISTRO_ARCH=aarch64

# 發行版顯示的名字
DISTRO_NAME="Ubuntu 22.04 LTS"

# 註解
DISTRO_COMMENT="Ubuntu 22.04 LTS Jammy Jellyfish"

# 壓縮檔的檔案目錄深度,預設為1,即忽略root目錄。但Ubuntu base解壓縮即是檔案系統,所以這裡填0
TARBALL_STRIP_OPT=0

#  每個陣列一個架構對應一個rootfs網址。你也可以改把rootfs上傳到自己的Github
TARBALL_URL['aarch64']="https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.3-base-arm64.tar.gz"

# 填入壓縮檔的SHA256校驗碼
TARBALL_SHA256['aarch64']="bdae94b05d0fca7decbe164010af2ac1b772a9dda21ed9fb5552b5674ad634a3"

# 安裝後要執行的指令
distro_setup() {
        run_proot_cmd touch /etc/hello-world
}
  1. 嘗試執行proot-distro list,可以看到我們剛剛新增的Ubuntu 22.04 LTS已經出現在列表

  2. 嘗試安裝Ubuntu 22.04 LTS,proot-distro會自動修正權限問題

proot-distro install ubuntu22.04
  1. 登入
proot-distro login ubuntu22.04
  1. cat /etc/os-release檢查,確認顯示版本為Ubuntu 22.04。這樣再參照 proot Ubuntu安裝教學,即可將其安裝為完整系統。

相關文章

Android手機安裝Linux發行版:Termux proot-distro使用教學
智慧型手機 Termux教學 Proot-Distro
Android手機免Root安裝Ubuntu系統 (Termux圖形桌面+中文化+音訊+一鍵啟動指令稿)
智慧型手機 Termux教學 Proot-Distro Ubuntu
如何用VNC遠端連線至Termux的Linux桌面
智慧型手機 Termux教學 Proot-Distro VNC

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。