討論如何在ARM架構的Raspberry Pi執行另外一個系統的虛擬機。
如果你是想要在x86架構電腦用QEMU模擬ARM架構的樹莓派請看 這篇。
Raspberry Pi執行的是Linux系統,自然能夠跑Docker、Podman、LXC這類容器技術,那麼有沒有可能跑虛擬機呢?可以。x86架構平台常用的 Virt Manager+QEMU/KVM也能在ARM架構使用,並且能夠使用KVM核心模組加速虛擬機執行。
類似專案還有非官方移植的 jiangcuo/Proxmox-Port套件,可將樹莓派變成Proxmox系統。
本文Ivon採取的是比較簡陋的作法,直接裝Libvirt與QMEU套件。又因為Raspberry Pi常常是headless狀態執行,所以不用Virt Manager,改用Cockpit網頁界面遠端存取。
1. 環境#
- 開發板:Raspberry Pi 5
- 系統版本:Raspberry Pi OS 12,核心版本6.6.42-v8-16k+
- 虛擬機系統:Alpine Linux ARM
考慮到虛擬機的硬碟存取速度,Raspberry Pi的系統最好安裝在SSD,或者至少虛擬機的qcow2虛擬磁碟得放在SSD分區讀取速度才會快。
另外Raspberry Pi 5的CPU老實說也不是很快,所以執行虛擬機的效率可能不如容器要好。
2. 安裝Libvirt套件#
- 安裝以下套件
sudo apt install qemu-system libguestfs-tools libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf swtpm
- 調整使用者權限
sudo usermod -a -G libvirt $USER
sudo usermod -a -G kvm $USER
sudo usermod -a -G input $USER
- 設定開機自動啟用虛擬機服務
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo virsh net-start default
sudo virsh net-autostart default
- 如果Raspberry Pi沒有接螢幕輸出,那就無法使用Virt Manager了。此時請
安裝Cockpit套件,啟用服務,這樣就能從其他電腦開啟
https://樹莓派IP:9090
存取網頁界面了。
3. 新增Linux虛擬機#
關於作業系統系統架構部分,QEMU/KVM只能跑同為ARM64架構的虛擬機,模擬x86架構會非常慢。
鑒於Windows 11 ARM安裝起來比較麻煩,而且吃效能,所以使用小巧的Alpine Linux ARM測試吧!
到 Alpine Linux ARM官網複製ISO下載連結。
再下載到Raspberry Pi的目錄(放這裡是怕AppArmor有奇怪的權限限制)
sudo wget -P /var/lib/libvirt/images/ https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/aarch64/alpine-standard-3.20.2-aarch64.iso
- 進入Cockpit網頁的Virtual Machines頁面,新增虛擬機,開機安裝Alpine Linux ARM系統。
不知為何,嘗試啟動虛擬機沒多久後,Raspberry Pi系統就會整個當掉無回應,可能是bug?