Being able to experiment with any operating system is one of the best perks of a home lab setup. Or rather almost every OS, as you may encounter issues when trying to set up ARM-based distros on your x86 system. But if you’re using Proxmox, you can modify a couple of settings to get ARM64 virtual machines running on the virtualization platform.

Creating the ARM64 VM

Assuming you’ve already installed Proxmox on your home lab, you’ll want to download the ARM64 or AArch64 ISOs on the machine you use to access the web UI. Once that’s done, you can follow these steps to upload the ISO to Proxmox and deploy a VM with slightly altered parameters:

  1. Navigate to the local-lvm storage of your Primary node and press the Upload button inside the ISO Images tab.
    The Upload button in the ISO images tab of Proxmox
  2. Click on the Select File button, choose the ARM64 ISO you downloaded earlier, and tap Upload.
    Choosing an ARM64 ISO in Proxmox
  3. Select Create VM in the top-right corner of the Proxmox web UI and give a Name to your ARM64 VM.
    Creating an ARM64 VM in Proxmox now
    Remember to hit Next after each step.
  4. Pick the ARM64 ISO file as the ISO image.
    Picking the ISO file in Proxmox
  5. Inside the System tab, switch the BIOS from SeaBIOS to OVMF (UEFI) and uncheck the toggle next to Add EFI Disk.
    Selecting the OVMF BIOS in Proxmox
  6. Assign some Storage to your VM and press the Cross button inside the Type option of the CPU tab to set the processor to Default (KVM).
    Unchecking the CPU in Proxmox
  7. Leave the Network settings unchanged and allocate some Memory to the virtual machine before tapping the Finish button.

Configuring the ARM64 VM

In a normal x86/x64 OS, you’d be able to fire up the VM and get started with your cool home lab projects. Unfortunately, ARM virtual machines require some extra tweaks before you can use them.

  1. Head to the Hardware tab of your newly-created VM and choose Serial Port after pressing the Add button.
    Picking the Serial port in Proxmox
  2. Set the Serial Port to 0 and hit Add.
    Setting Serial Port to 0 in the Proxmox web UI
  3. Double-click on the Display field and switch the Graphic card parameter to Serial terminal 0.
    Modifying the Display settings in the Proxmox web UI
  4. Hit Add and select EFI Disk.
    Adding an EFI Disk in the Proxmox web UI
  5. Pick local-lvm as the EFI Storage and click OK.
    Picking local-lvm as the EFI Storage in the Proxmox web UI
  6. Select the CD/DVD Drive (ide2) and press Remove.
    Removing the CD/DVD Drive for a VM in the Proxmox web UI
  7. Once again, hit the Add button and create a new CD/DVD Drive.
  8. Choose SCSI as the Bus, select local as the Storage option, pick the ARM64 ISO, and press Add.
    Adding a CD/DVD Drive for a VM in the Proxmox web UI
  9. Go to the Options tab and click on Boot Order.
    Accessing the Boot order settings of a VM in the Proxmox web UI
  10. Rearrange the boot drives so that the SCSI CD/DVD Drive appears at the top.
    Switching the Boot Order settings of a VM in the Proxmox web UI
  11. Navigate to the Shell tab of your Primary Node and enter the following command:
    nano /etc/pve/qemu-server/virtual_machine_id.conf
    Opening the VM config file in the Proxmox web UI
    Be sure to replace virtual_machine_id with the three-digit ID of your ARM64 virtual machine.
  12. Add a # symbol before the vmgenid field and type arch: aarch64 at the end of the file.
    Editing the config file of a Proxmox VM
  13. Press Ctrl+X followed by Y to save and exit the file.
  14. Finally, tap the Start button on your VM and access it with the Console button.
    Starting an ARM64 VM in Proxmox
  15. (Optional) In case you encounter an error regarding the size of offset, switch the SCSI Controller Type from VirtIO SCSI Single to VirtIO SCSI.
    Choosing the SCSI Controller in the Proxmox web UI

Running ARM operating systems on Proxmox

Running an ARM64 Alpine Linux VM in Proxmox

Assuming you followed all the steps correctly, you should be able to install the ARM64 OS on the virtual machine using the command-line interface. Once that’s finished, you’re free to tinker with the VM to your heart’s content. While it may seem like a rather weird Proxmox project to the average home lab enthusiast, being able to run an ARM64 VM can help tremendously if you’re into app development and want a quick way to test and debug your code.