快轉到主要內容

Termux透過pkVM加速QEMU虛擬機執行

· 民國114年乙巳年
·
切換繁體/簡體
分類   智慧型手機 Termux教學
標籤   Termux QEMU-KVM
目錄

我在Termux跑QEMU安裝Linux虛擬機討論過用Termux在Android手機跑虛擬機的問題,結論是慢的要命。

沒有KVM,全靠軟體模擬,下場就是只能跑20年前的Windows XP系統,現代作業系統根本帶不動。

搭載Google Tensor處理器的手機,在Android 15之後引入了pKVM,也就是AVF框架底層支援的技術

目前除了Android 16實驗性的Debian Linux Terminal以外,一般APP不能存取pKVM。需要取得Root權限才可以啟用pKVM。

1. 安裝套件
#

有KVM加速,應該執行同架構的虛擬機。根據Termux開發者說法,使用這個qemu-system-aarch64-headless套件,可以取得pKVM加速的虛擬機。

安裝以下套件。ARM架構的機器,最好啟用UEFI。

qemu-system-aarch64-headless qemu-utils qemu-common ovmf sudo

圖形界面沒有Virt Manager,Libvirt服務應該跑不起來,於是我們只好用AVNC存取虛擬機畫面。

2. Termux 建立Linux虛擬機
#

  1. 下載Ubuntu ARM的ISO,放到Termux的家目錄

  2. 確認KVM存在

sudo ls /dev/kvm
  1. 建立虛擬磁碟
qemu-img create -f qcow2 ubuntu.qcow2 32G
  1. 建立保存UEFI的檔案
truncate -s 64m varstore.img

truncate -s 64m efi.img

dd if=$PREFIX/share/qemu/edk2-aarch64-code.fd of=efi.img conv=notrunc
  1. 新增開機指令稿
touch startubuntu.sh

chmod +x  startubuntu.sh

vim startubuntu.sh
  1. 內容如下
qemu-system-aarch64 -M virt \
-enable-kvm  \
-drive if=pflash,format=raw,file="efi.img",readonly \
-drive if=pflash,format=raw,file="varstore.img" \
-smp cpus=2 \
-m 1024 \
-cpu host \
-nographic \
-netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1 \
-drive file=ubuntu.qcow2 \
-boot d \
-vnc :0 \
-cdrom ubuntu-24.04.3-live-server-arm64.iso
  1. 執行的時候要加上sudo。
sudo ./startubuntu.sh

順利的話可以用AVNC開啟localhost:59000看到虛擬機畫面。

詭異的是不啟用KVM可以開機,但啟用的話就會遇到qemu-system-aarch64: Failed to put registers after init: Invalid argument錯誤。

如果改用chroot,再於裡面跑KVM,也許成功率會上升?

參考資料
#

相關文章

Android新加入的Debian Linux Terminal未必會成為Termux殺手
分類   智慧型手機 Termux教學
標籤   Termux Linux Android
Pixel手機跑Debian Linux終端機,免Root
分類   智慧型手機 手機APP分享
標籤   Google Pixel Linux Android Termux QEMU-KVM
Android手機寫Python:Termux Python程式開發環境建置
分類   智慧型手機 Termux教學
標籤   Python Android Termux

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。