Arm64 Guests in Proxmox
What are we trying to do #
Run an arm64/aarch64 vm within proxmox.
How to get from A to Z #
This SEEMS fairly straight forward.
Find the iso storage location for current proxmox #
/mnt/pve/cephfs
Grab the latest Ubuntu cloud image #
There’s also the live-server
variant, but these don’t do cloud-init afaik.
cd /mnt/pve/cephfs/iso;
wget -c https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-arm64.img
wget -c https://cdimage.ubuntu.com/releases/noble/release/ubuntu-24.04-live-server-arm64+largemem.iso&&
wget -c https://cdimage.ubuntu.com/releases/noble/release/ubuntu-24.04-live-server-arm64.iso
Create a VM host via proxmox’s qm
tool #
Some work was described elsewhere around how they got it to work:
qemu-system-aarch64 -M virt -cpu cortex-a57 -m 1024 \
-drive file=debian-arm64.img,if=none,id=drive0 -device virtio \
-blk-device,drive=drive0 -device virtio-net-device,netdev=net0 \
-netdev user,id=net0 -nographic -serial mon:stdio
I tried something similar:
qm create 8 --description ubuARM64 --bios ovmf --memory 8192 \
--net0 virtio,bridge=vmbr0 --arch aarch64 --name arm --ostype l26 \
--boot order=scsi0 --cipassword saltypass --ciuser userhere \
--efidisk0 pool:vm-1-d-1,efitype=4m,pre-enrolled-keys=1,size=64M \
--hotplug disk,network,usb,cpu --keyboard en-us --vga virtio \
--scsihw virtio-scsi-pci --serial0 socket --scsi0 \
pool_disks:0,size=200G,import-from=/noble-server-cloudimg-arm64.img
Aaand profit… ? Shit. NOPE! #
Well, of course there’s some problems.
Well hell… #
EFI Disk #
EFI Base image `/usr/share/pve-edk2-firmware/AAVMF_CODE.fd` not found (500)
This seemed problematic. FORTUNATELY,
apt-get install pve-edk2-firmware-aarch64
VirtIO-GL #
Then, I thought I needed virtio-gl video
.
So I installed the needful…
apt-get install libegl1 libvirglrenderer1 libvirglrenderer-dev \
libglx0 virgl-server libegl-mesa0 libegl1 libgl1 libgl1-mesa-dri \
libgl1 libglapi-mesa libglvnd0 libglx-mesa0 libxcb-glx0 libxxf86vm1
TPM #
This, I’ve yet to address.
qemu-system-aarch64: -device tpm-tis,tpmdev=tpmdev: 'tpm-tis' is not a valid device model name
so… now that it… y’know… works.. (mostly) how is it?
in a nutshell?
💩BAD:
The charts below show geekbench5 scores comparing:
A Raspberry Pi4
- 4 arm cores
- 4GB ram
- one hampster on a treadmill
-
- An ARM64 VM
- Running on a Dell R730xd
512GB of DDR4 ram
E5-2699v4 Cores
Resource | Arm64 VM | Raspi 4b |
---|---|---|
cores | 8 | 4 |
memory | 32 gb | 4 gb |
Yes… You’re reading this right…
a Raspberry pi TROUNCES an ARM VM.
¯\_(ツ)_/¯
Maybe this will change in time?
Thoughts about the process #
I’d REALLY like to see one of two things happen.
-
ARM64 VMs on proxmox x86_64 NOT sucking this badly
-
Proxmox supporting
vm truck
style work nodes to support alt arch… ¯\_(ツ)_/¯
until next time, y’all!
Resources and links #
- https://ubuntu.com/server/docs/boot-arm64-virtual-machines-on-qemu
- https://forum.proxmox.com/threads/arm64-support.140472/
- https://i12bretro.github.io/tutorials/0661.html
- https://gyptazy.ch/howtos/howto-run-proxmox-8-ve-on-arm64-aarch64-hardware-systems/
- https://forum.proxmox.com/threads/proxmox-on-arm64.69080/
- https://github.com/pimox/pimox7
- https://github.com/jiangcuo/Proxmox-Arm64
- https://github.com/jiangcuo/Proxmox-Port/wiki/Install-Proxmox-VE-on-Debian-bookworm
- https://www.mifcom.de/workstations-ampere-altra-cid774
- https://www.ipi.wiki/products/ampere-altra-developer-platform