Running an ARM64 VM in ProxMox VE

DISCLAIMER: While running ARM64 architecture VMs on Proxmox works, the performance is not on par with what it would be on a baremetal ARM device. In this example I'll be installing Debian 11 AARCH64 in Proxmox running on Intel x64 based hardware.

  1. Log into the ProxMox web UI
  2. Select a storage from the left navigation pane to download the .iso to
  3. Select ISO Images in the left sub-navigation pane
  4. If running ProxMox 6, download the Debian ARM64 iso Download and upload it to the ProxMox ISO image library
  5. If on ProxMox 7, click Download from URL and paste the download URL from above > Click Query URL > Click Download
  6. Right click the ProxMox node name > Create VM
  7. Type DebianARM64 in the name field set the VM ID to 164 (unless 164 is in use) > Next
  8. Set the Type to Linux, Version to 5.x - 2.6 Kernel and select Do not use any media > Next
  9. On the System tab set the BIOS for OVMF (UEFI), Uncheck the Add EFI Disk checkbox > Next
  10. On the Hard Disk tab, set the Storage device and Disk size to 16 (adjust as needed) > Next
  11. On the CPU tab, set the number Cores to 2 (adjust as needed) > Next
  12. On the Memory tab, set the Memory to 2048 (adjust as needed) > Next
  13. Leave the defaults on the Network tab > Next
  14. Verify the summary and click Finish
  15. Select the DebianARM64 VM in the left navigation pane
  16. Select Hardware from the left navigation sub-menu
  17. Click on the CD/DVD Drive to select it > Click Remove at the top of the main content area > Click Yes to confirm
  18. Click Add > Serial Port > Leave the Port Number 0 > Click Add
  19. Click Add > Select CD/DVD Drive > Set the Bus/Device to SCSI > Select the Storage device where the Debian ARM64 iso is uploaded > Select the uploaded Debian ARM64 iso > Click Create
  20. Double click Display to edit it > Set the Graphic card value to Serial terminal 0 > Click OK
  21. Select Options from the left navigation sub-menu
  22. Double click Boot order to edit it > Drag/drop the SCSI2 device (where the Debian iso is attached) to the top of the list > Click OK
  23. Right click the ProxMox node name > Console
  24. Run the following commands in the terminal
    # edit the VM conf file, change 164 to the VM ID for the DebianARM64 VM
    nano /etc/pve/qemu-server/164.conf
  25. Add the following line to the bottom of the .conf file:

    arch: aarch64

  26. Find the line starting with vmgenid: and comment it out by adding a # to the beginning of the line
  27. Press CTRL+O, Enter, CTRL+X to write the changes to the conf file
  28. Back in the Proxmox web UI, select the DebianARM64 VM from the left navigation menu
  29. Click console in the left sub-navigation menu
  30. Click Start at the top right of the screen to start the VM
  31. Wait a moment for the serial console to initialize
  32. Follow the prompts to complete the OS installation
    NOTE: This will feel slower than normal, allow it time to complete
  33. After the installation completes, select the Shutdown dropdown at the top of the screen > Stop
  34. Select Hardware from the left sub-navigation menu
  35. Double click the CD/DVD Drive to edit it > Select Do not use any media > Click OK
  36. Go back to the VM console
  37. Click Start at the top right of the screen to start the VM again
  38. Enter the following commands to launch Debian from the EFI shell
    fs0:\EFI\debian\grubaa64.efi
  39. The GRUB menu should boot and start loading Debian
  40. Welcome to ARM64 based Debian running on Proxmox VE

Sources: https://rotelok.com/installing-arm64-debian-10-buster-in-a-virtual-machine/,
https://www.reddit.com/r/Proxmox/comments/ed2ldo/installing_and_launching_an_arm_vm_from_proxmox/