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.

👁 The UmbrelOS web UI
Turn your Raspberry Pi into a self-hosting hub using UmbrelOS

With a neat UI and solid collection of apps, UmbrelOS can simplify the process of hosting FOSS services on your Raspberry Pi

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.
  2. Click on the Select File button, choose the ARM64 ISO you downloaded earlier, and tap Upload.
  3. Select Create VM in the top-right corner of the Proxmox web UI and give a Name to your ARM64 VM. Remember to hit Next after each step.
  4. Pick the ARM64 ISO file as the ISO image.
  5. Inside the System tab, switch the BIOS from SeaBIOS to OVMF (UEFI) and uncheck the toggle next to Add EFI Disk.
  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).
  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.
  2. Set the Serial Port to 0 and hit Add.
  3. Double-click on the Display field and switch the Graphic card parameter to Serial terminal 0.
  4. Hit Add and select EFI Disk.
  5. Pick local-lvm as the EFI Storage and click OK.
  6. Select the CD/DVD Drive (ide2) and press Remove.
  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.
  9. Go to the Options tab and click on Boot Order.
  10. Rearrange the boot drives so that the SCSI CD/DVD Drive appears at the top.
  11. Navigate to the Shell tab of your Primary Node and enter the following command:
    nano /etc/pve/qemu-server/virtual_machine_id.conf
    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.
  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.
  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.

Running ARM operating systems on 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.

👁 Running Code Server on Proxmox
10 projects I host on my Proxmox home lab

Need some cool project ideas for your Proxmox server? This list can help you out