[Linux] 把玩 Android 16 beta 的原生終端機 Terminal 功能

Android 16 beta 推出了很多全新的功能,
讓我眼睛一亮的是原生終端機 (Terminal) 功能,
相對於手機有一個小小 Debian Linux 可以使用,
如果熟悉 Ubuntu 的朋友,幾乎無痛上手。

就來看看要怎麼把玩這個新功能吧!

Android 16 新功能頁面:

https://developer.android.com/about/versions/16?hl=zh-tw

支援的清單

支援的清單列表在這裡:

https://developer.android.com/about/versions/16/download-ota?hl=zh-tw

  • Pixel 6 與 6 Pro
  • Pixel 6a
  • Pixel 7 與 7 Pro
  • Pixel 7a
  • Pixel Fold
  • Pixel Tablet
  • Pixel 8 和 8 Pro
  • Pixel 8a
  • Pixel 9、Pixel 9 Pro、Pixel 9 Pro XL 和 Pixel 9 Pro Fold

有支援的清單可以直接線上 OTA 升級,不用清除資料
不用清除資料,這點真的香

這次使用的機器:Pixel 7 pro

以下是操作步驟

加入 Android Beta 版體驗方案

到這個連結:

https://www.google.com/android/beta#devices

登入你有綁定 Pixel 手機的 Google 帳號,選取你手機,
將你的手機加入 Beta 體驗方案,屆時 Android 就會幫你推送 Beta 的更新

在手機系統,點選系統更新,就會看到新版 Android 16 beta 啦!

開心的的按下更新
(註:Beta 版可能會有不穩定的情況,建議不要用主要使用的手機做這個更新)

打開 Linux 開發環境

更新完畢之後,除了 UI 介面有小改之外,感覺什麼事情都沒有發生,
這很正常,要打開秘密選項才有

到系統設定

系統 > 開發人員選項 > Linux 開發環境

[勾選] 實驗功能 在 Android 上執行 Linux 終端機

系統 > 開發人員選項 > Linux 開發環境

[勾選] 停止限制子程序

應用程式就會出現 [終端機] 程式
就可以開始玩了

等於一台 arm64 的 debian 機器

設定硬碟大小

設定 > 調整磁碟大小

預設 5GB 可以直接開到最大 16GB

不然你可能會遇到磁碟空間不足的問題

各種安裝與把玩

接下來就是各種安裝與把玩啦!
想怎麼玩都可以,不一定要照我的做

有個地方要注意,手機是 arm64 架構,
一般 x86_64 程式是不能直接運行的,
它也不是 Apple silicon (M1) 有 Rosetta 可以跑相容模式,
下載程式編譯架構要注意一下

以下是一些指令筆記:

安裝相關套件與權限調整

安裝相關套件

sudo apt update -y
sudo apt install -y tmux neofetch

建立使用者,調整權限

useradd myuser
passwd myuser
sudo usermod -a -G sudo myuser
sudo usermod -a -G docker myuser

調整磁碟大小

sudo apt install -y parted

在 parted 介面裡,找到 rootfs ext4 磁區,將它擴大

print
resizepart 1 100%
quit

SSH Server

安裝 SSH Server

sudo apt install -y openssh-server

設定開啟的 port

sudo vi /etc/ssh/sshd_config

修改

port 22

重啟服務

sudo systemctl restart sshd

會有通知提示是否允許 port 開啟,因爲安全原因,只會開放對應到本機上

ngrok

安裝 ngrok,下列指令二選一

wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm64.tgz
sudo tar xvzf ./ngrok-v3-stable-linux-arm64.tgz -C /usr/local/bin

參考:

https://ngrok.com/docs/guides/device-gateway/linux/

或者

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
  && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list \
  && sudo apt update \
  && sudo apt install ngrok

參考:

https://ngrok.com/downloads/linux

Docker

一鍵指令安裝 Docker

sudo apt-get update -y && \
sudo apt-get install ca-certificates curl && \
sudo install -m 0755 -d /etc/apt/keyrings && \
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
sudo chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \
sudo apt-get update -y && \
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

參考:

https://docs.docker.com/engine/install/debian/

kind & K8s

安裝 kind

export BIN_PATH=/usr/local/bin

export KIND_VER=0.26.0
export CLOUD_PROVIDER_KIND_VER=0.5.0

curl -Lo ${BIN_PATH}/kind https://kind.sigs.k8s.io/dl/v${KIND_VER}/kind-linux-arm64 && chmod +x ${BIN_PATH}/kind
curl -Lo /tmp/cloud-provider-kind.tgz https://github.com/kubernetes-sigs/cloud-provider-kind/releases/download/v${CLOUD_PROVIDER_KIND_VER}/cloud-provider-kind_${CLOUD_PROVIDER_KIND_VER}_linux_arm64.tar.gz && tar zxvf /tmp/cloud-provider-kind.tgz -C ${BIN_PATH} cloud-provider-kind
curl -Lo ${BIN_PATH}/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" && chmod +x ${BIN_PATH}/kubectl

參考:

https://github.com/kalug/k8s-demo/blob/main/kind-starting/1-create-cluster.md

ollama 與 LLM

安裝 ollama

curl -fsSL https://ollama.com/install.sh | sh

參考:

https://ollama.com/download/linux

下載模型

ollama pull deepseek-r1:1.5b

註:gemma:2b 手機記憶體不足,跑不動,
故改用 deepseek-r1:1.5b

會有通知提示是否允許 port 11434 開啟,因爲安全原因,只會開放對應到本機上
按允許即可

你可以用相關聊天 WebUI,我這邊直接用 App 解決

下載 Maid:

https://play.google.com/store/apps/details?id=com.danemadsen.maid

進入 App 的設定,
設定來源為 ollama
網址: localhost:11434

按下確定,就可以開始聊天了

參考資料

https://ivonblog.com/posts/ollama-android-termux/
https://www.youtube.com/watch?v=UT8Q_V82boM