快轉到主要內容

在樹莓派5跑ARM架構的Linux虛擬機(Cockpit + QEMU/KVM)

分類   資訊科技 虛擬機與容器技術
標籤   QEMU-KVM Raspberry Pi
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

討論如何在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套件
#

  1. 安裝以下套件
sudo apt install qemu-system libguestfs-tools libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf swtpm
  1. 調整使用者權限
sudo usermod -a -G libvirt $USER
sudo usermod -a -G kvm $USER
sudo usermod -a -G input $USER
  1. 設定開機自動啟用虛擬機服務
sudo systemctl enable libvirtd
sudo systemctl start libvirtd

sudo virsh net-start default
sudo virsh net-autostart default
  1. 如果Raspberry Pi沒有接螢幕輸出,那就無法使用Virt Manager了。此時請 安裝Cockpit套件,啟用服務,這樣就能從其他電腦開啟https://樹莓派IP:9090存取網頁界面了。

3. 新增Linux虛擬機
#

關於作業系統系統架構部分,QEMU/KVM只能跑同為ARM64架構的虛擬機,模擬x86架構會非常慢。

鑒於Windows 11 ARM安裝起來比較麻煩,而且吃效能,所以使用小巧的Alpine Linux ARM測試吧!

  1. Alpine Linux ARM官網複製ISO下載連結。

  2. 再下載到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
  1. 進入Cockpit網頁的Virtual Machines頁面,新增虛擬機,開機安裝Alpine Linux ARM系統。

不知為何,嘗試啟動虛擬機沒多久後,Raspberry Pi系統就會整個當掉無回應,可能是bug?

相關文章

VirtIO-Balloon:伸縮自在的RAM,QEMU/KVM虛擬機動態分配記憶體
分類   資訊科技 虛擬機與容器技術
標籤   QEMU-KVM VirtIO Libvirt
Ubuntu將Nvidia GPU直通給Windows虛擬機 + Looking Glass安裝教學
分類   資訊科技 虛擬機與容器技術
標籤   GPU Passthrough PCI Passthrough Ubuntu QEMU-KVM Windows
Linux KVM啟用巢狀虛擬化,在虛擬機裡面跑虛擬機
分類   資訊科技 虛擬機與容器技術
標籤   Libvirt QEMU-KVM Linux

留言板

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

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

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