本文Ivon將討論我們可以利用Android手機的Debian終端機跑什麼玩意。
這個是Pixel手機在最新Android系統提供的Linux虛擬機,不用Root權限就可以使用。我們暫且把它稱之為Debian Linux終端機。
它利用pKVM技術,AVF框架,在Android上執行虛擬機,跑Linux程式。
說到,自然會讓人聯想到Termux Proot吧,這個Debian Linux終端機比Termux環境要完整,不是容器。Linux核心功能齊全,可以用Systemd,我們甚至能在這個終端機跑Docker。
這個概念有點類似ChromeOS的Debian虛擬機,使用CrosVM技術。
不過!因為pKVM是虛擬機,啟動速度比Termux慢些。而且執行時候會受到KVM的性能損耗,無法利用全部硬體資源。
目前該功能屬於實驗性的,未來可能會有所變化。請以Google官方最新公告為主。
1. Debian Linux終端機支援機型#
需要Google Pixel 6(含)以後的機型。推測是因為Tensor處理器才支援pKVM與AVF的功能,舊版Qualcomm處理器的機型沒辦法使用。而且舊款Pixel 5手機已經不能升級了。
系統部份,需要Android 16以上,Pixel原廠ROM。第三方ROM可能也有支援AVF,得看維護者有無實作。目前我知道的是LineageOS 23有加入初步支援。
我的測試環境:Google Pixel 6a。系統版本:Android 16 BP4A.251205.006
2. 啟用Debian Linux終端機#
開啟系統設定,在關於手機,對版本號碼點五下
開啟開發人員選項,找到啟用Linux開放環境

接著桌面會多出一個終端機APP

等待系統映像檔下載完成。
虛擬機可用空間會佔照ROM空間動態分配。虛擬機預設分配的RAM為系統可用的一半左右,如果手機RAM比較小,終端機放到背景執行可能會被系統殺掉,請注意。
用指令變更使用者密碼
sudo passwd droid
- 當你關閉Linux終端機的時候,APP似乎是以快照方式保存進度的。因此若要冷啟動,需要手動將其關機:
sudo shutdown now
3. 網路連線問題#
Debian虛擬機的網路是跟Android網路隔離的,即使開放通訊埠,也只能從Android本身的APP連線。不能從外部連線。
每當虛擬機要使用一個通訊埠的時候,皆需要手動同意才能從Android以外的網路連線。而且這裡不能使用低位數通訊埠。

因此,要用電腦連線到手機的Debian終端機的話,就得在虛擬機內部安裝VPN或是重新導向通訊的服務。
- 安裝SSH伺服器:
sudo apt install openssh-server
- 修改設定檔
/etc/ssh/sshd_config,讓SSH伺服器改用2022通訊埠
sudo sed -i 's/#Port 22/Port 2022/' /etc/ssh/sshd_config
- 透過以下指令啟用SSH伺服器:
sudo systemctl enable --now sshd
在Debian Linux安裝一個VPN服務,例如Tailscale。
從電腦輸入虛擬區域IP連線:
ssh -p 2022 droid@IP
4. 安裝圖形桌面環境#
目前的版本,Google加入了整合Linux視窗到Android合成器的功能,它可以從終端機啟動單一個Wayland或XWayland程式。但是,無法啟動Wayland桌面環境,X11工作階段也不行。
- 例如,啟動Firefox
firefox
點一下終端機右上角的螢幕圖示,就會看到程式畫面了。目前,看來沒辦法接收Linux虛擬機的PipeWire音效的樣子?得手動用Simple Protocol Player重新導向。
Debian Linux終端機沒有GPU加速功能,預設是用llvmpipe。
另一種方式存取虛擬機完整桌面的方式,是透過TigerVNC Server搭配AVNC來存取Linux虛擬機的桌面。這個方法適合從其他電腦連線進來,操作虛擬機。

5. 用Box64轉譯x86架構的程式#
既然Android手機普遍是ARM64架構的處理器,執行的虛擬機當然也是ARM64架構的Debian系統。
部份程式會遇到相容性問題,這個時候可以透過Box64轉譯器執行x86二進位檔。
6. 與Android共享檔案#
Android手機的內部儲存空間/目錄,會掛載到Linux的/mnt/shared/。從這裡Linux可以存取Android的檔案。
我們也可以用SFTP來傳檔案。只要啟動SSH伺服器,就能從外部掛載。
在Android安裝SFTP客戶端,例如質感檔案
IP位址輸入
localhost,使用者名稱輸入droid,還有密碼。