Logo

dev-resources.site

for different kinds of informations.

Setting Up ARM VM on Proxmox VE

Published at
5/18/2024
Categories
proxmox
arm
linux
virtualmachine
Author
duelnm
Categories
4 categories in total
proxmox
open
arm
open
linux
open
virtualmachine
open
Author
6 person written this
duelnm
open
Setting Up ARM VM on Proxmox VE

Running ARM64 virtual machines on Proxmox VE is now possible with the addition of ARM64 emulation support. This guide will walk you through the steps needed to create and run an ARM64 VM on Proxmox VE, whether for testing, development, or other purposes.

Disclaimer: ARM emulation on Proxmox VE is an experimental feature and not fully supported or extensively tested by Proxmox. Users may encounter errors or issues that are not covered in this guide.

Prerequisites

First, ensure the pve-edk2-firmware-aarch64 package is installed. This package provides the (U)EFI firmware necessary for ARM64 VM integration. Note that this package isn't installed automatically during upgrades, so you'll need to install it manually.

apt update
apt install pve-edk2-firmware-aarch64
Enter fullscreen mode Exit fullscreen mode

Upload the ARM64 ISO to Proxmox VE

You'll need an ARM64 ISO image, and for this guide, we'll use Debian 12 "Bookworm". Ensure you're using the AArch64 ISO, the official name for the 64-bit ARM architecture. Upload the ISO to your Proxmox VE storage.

Upload ISO to Proxmox VE

Create a New VM

To create a new VM, click on the "Create VM" button in the Proxmox VE interface. Assign a name and ID to your VM.

Create VM

In the OS tab, disable the CD/DVD Drive by selecting "Do not use any media."

OS Tab

In the System tab, set the Graphic card to "Serial terminal 0," change the BIOS to "OVMF (UEFI)," and disable EFI Disk creation by unchecking the box "Add EFI Disk" (we will create it later manually). Ensure the SCSI Controller is set to "VirtIO SCSI."

System Tab

Next, in the Disks tab, choose the storage and space allocation for your VM, ensuring "IO thread" is disabled by unchecking the box.

Disks Tab

In the CPU tab, do not add a CPU type, leave it as default.

CPU Tab

Allocate the desired amount of RAM in the Memory tab, and no changes are needed in the Network tab.

Confirm Tab

Modify VM Hardware

After creating the VM, go to the hardware settings to remove the existing CD/DVD drive. Then, add a new one by choosing "SCSI" as the Bus/Device and selecting the Debian ISO image you uploaded earlier.

Hardware

Edit the VM Configuration File

Edit the configuration file located at /etc/pve/qemu-server/<vm_id>.conf by adding and modifying the lines as follows:

nano /etc/pve/qemu-server/<vm_id>.conf
Enter fullscreen mode Exit fullscreen mode

Add arch: aarch64 at the bottom of the file:

arch: aarch64
Enter fullscreen mode Exit fullscreen mode

Comment out the line that starts with vmgenid: by adding a # at the beginning:

#vmgenid: <value>
Enter fullscreen mode Exit fullscreen mode

Remove the line that starts with cpu:, if it exists:

cpu: <value>
Enter fullscreen mode Exit fullscreen mode

Adjust Boot Order

Go to the VM "Options" and change the "Boot Order" to place the CD/DVD drive with the Debian ISO as the first boot device.

Boot Order

Create an EFI Disk

Run the following command to create an EFI disk for your VM, replacing <VM_ID> with your actual VM ID and <STORAGE_NAME> with your storage name (e.g., 'local-lvm' for the default):

qm set <VM_ID> --efidisk0 <STORAGE_NAME>:1,efitype=4m,format=raw
Enter fullscreen mode Exit fullscreen mode

Launch the VM and Install the OS

Start the VM and follow the prompts to complete the Debian installation. It's highly recommended to use the xterm.js option in the Proxmox VE interface to connect to the VM for a smoother installation experience.

Launch VM

Post-Installation

After the OS installation is complete, go to the VM hardware settings, remove the CD/DVD drive, and change Display to VNC. Then restart the VM to ensure it boots correctly from the installed OS. Congratulations! You now have an ARM64 VM running on Proxmox VE.

Troubleshooting

If you encounter the following error:

qemu-system-aarch64: -drive if=pflash,unit=1,id=drive-efidisk0,format=raw,file=/dev/second/vm-104-disk-1,size=67108864: The sum of offset (0) and size (0) has to be smaller or equal to the actual size of the containing file (4194304)
Enter fullscreen mode Exit fullscreen mode

Follow these steps to resolve it:

  1. Remove the EFI Disk by going to the VM's "Hardware" tab, selecting the EFI disk, and clicking "Remove."
  2. Recreate the EFI Disk with the following command, replacing <VM_ID> with your actual VM ID and <STORAGE_NAME> with your storage name (e.g., 'local-lvm' for the default):

    qm set <VM_ID> --efidisk0 <STORAGE_NAME>:1,efitype=4m,format=raw
    
  3. Start the VM again.

That's all! I hope you enjoyed this content and using ARM VM on Proxmox.

arm Article's
30 articles in total
Favicon
Understanding the Difference Between x86 and ARM CPUs: Instruction Set Comparison and Their Impact
Favicon
Using flutter with native resources on apple silicon processors
Favicon
Reviving the Remix Mini PC: A Guide to Running ARM-based OS Images
Favicon
Understanding the Differences Between FPGA, AVR, PIC, and ARM Microcontrollers
Favicon
Google Axion: A New Leader in ARM Server Performance
Favicon
Will ARM Processors Surpass x86 in Performance?
Favicon
Magento 2 ARM Ubuntu Server 24.04 AMD installation sh script
Favicon
How Arm’s Success in Data Centers is Shaping the Future of Chip Technology
Favicon
Intro to Llama on Graviton
Favicon
Investigate performance with Process Watch on AWS Graviton processors
Favicon
Adoption of AWS Graviton ARM instances (and what results we’ve seen)
Favicon
Core Architectural components of Microsoft Azure
Favicon
ARM Template: Azure SQL Server
Favicon
ARM Template: Azure Webapp
Favicon
Apple Silicon, State-of-the-art ARM CPU
Favicon
AWS Graviton Migration - Embracing the Path to Modernization
Favicon
Setting Up ARM VM on Proxmox VE
Favicon
How to Deploy a .NET isolated Azure Function in One-Click using Zip Deploy
Favicon
Cloud : un peu d’ARM avec votre cluster Kubernetes ?
Favicon
ARM vs x86 em Docker
Favicon
Conociendo ARM32
Favicon
Choose Wisely: RISC-V vs. ARM - Architectures of the Future
Favicon
Manage your Azure resources using automation tasks
Favicon
Exploring the Differences: ARM vs. RISC-V Architecture
Favicon
Use AWS Graviton processors on AWS Fargate with Copilot
Favicon
GitHub Actions for Easy ARM64 and AMD64 Docker Image Builds
Favicon
Build Arm Docker images five times faster on native hardware
Favicon
Faster Docker builds for Arm without emulation
Favicon
Azure Bicep - Finally functions to manipulate CIDRs
Favicon
Ampere Computing and Jack Aboutboul of AlmaLinux Talk Arm64

Featured ones: