<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Viktor Vodnev</title>
    <description>The latest articles on DEV Community by Viktor Vodnev (@duelnm).</description>
    <link>https://dev.to/duelnm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1503698%2F4fc9eb2a-a982-4701-a306-76e8bf2bb81f.png</url>
      <title>DEV Community: Viktor Vodnev</title>
      <link>https://dev.to/duelnm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/duelnm"/>
    <language>en</language>
    <item>
      <title>Setting Up ARM VM on Proxmox VE</title>
      <dc:creator>Viktor Vodnev</dc:creator>
      <pubDate>Sat, 18 May 2024 17:00:42 +0000</pubDate>
      <link>https://dev.to/duelnm/setting-up-arm-vm-on-proxmox-ve-47a0</link>
      <guid>https://dev.to/duelnm/setting-up-arm-vm-on-proxmox-ve-47a0</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;First, ensure the &lt;code&gt;pve-edk2-firmware-aarch64&lt;/code&gt; 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.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt update
apt &lt;span class="nb"&gt;install &lt;/span&gt;pve-edk2-firmware-aarch64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Upload the ARM64 ISO to Proxmox VE
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz4pyrsg1pb2oxgm1gqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz4pyrsg1pb2oxgm1gqm.png" alt="Upload ISO to Proxmox VE" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a New VM
&lt;/h2&gt;

&lt;p&gt;To create a new VM, click on the "Create VM" button in the Proxmox VE interface. Assign a name and ID to your VM.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fck9xfyfs8uqmz0dssd6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fck9xfyfs8uqmz0dssd6h.png" alt="Create VM" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the OS tab, disable the CD/DVD Drive by selecting "Do not use any media."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqs7i3l54tev3klur9e4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqs7i3l54tev3klur9e4.png" alt="OS Tab" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uaio9d76kurri3dim8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uaio9d76kurri3dim8y.png" alt="System Tab" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvillgdrdzs229obbftt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvillgdrdzs229obbftt.png" alt="Disks Tab" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the CPU tab, do not add a CPU type, leave it as default.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78we3o05k2e2b2l4f43n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78we3o05k2e2b2l4f43n.png" alt="CPU Tab" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Allocate the desired amount of RAM in the Memory tab, and no changes are needed in the Network tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoupy5s0zywseiyw36ii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuoupy5s0zywseiyw36ii.png" alt="Confirm Tab" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Modify VM Hardware
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyix9jgqqb53vcasqt14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyix9jgqqb53vcasqt14.png" alt="Hardware" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Edit the VM Configuration File
&lt;/h2&gt;

&lt;p&gt;Edit the configuration file located at &lt;code&gt;/etc/pve/qemu-server/&amp;lt;vm_id&amp;gt;.conf&lt;/code&gt; by adding and modifying the lines as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/pve/qemu-server/&amp;lt;vm_id&amp;gt;.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add &lt;code&gt;arch: aarch64&lt;/code&gt; at the bottom of the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;arch: aarch64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Comment out the line that starts with &lt;code&gt;vmgenid:&lt;/code&gt; by adding a &lt;code&gt;#&lt;/code&gt; at the beginning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#vmgenid: &amp;lt;value&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remove the line that starts with &lt;code&gt;cpu:&lt;/code&gt;, if it exists:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cpu: &amp;lt;value&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adjust Boot Order
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qdk98g6cag8w1rufmhp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qdk98g6cag8w1rufmhp.png" alt="Boot Order" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create an EFI Disk
&lt;/h2&gt;

&lt;p&gt;Run the following command to create an EFI disk for your VM, replacing &lt;code&gt;&amp;lt;VM_ID&amp;gt;&lt;/code&gt; with your actual VM ID and &lt;code&gt;&amp;lt;STORAGE_NAME&amp;gt;&lt;/code&gt; with your storage name (e.g., 'local-lvm' for the default):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qm &lt;span class="nb"&gt;set&lt;/span&gt; &amp;lt;VM_ID&amp;gt; &lt;span class="nt"&gt;--efidisk0&lt;/span&gt; &amp;lt;STORAGE_NAME&amp;gt;:1,efitype&lt;span class="o"&gt;=&lt;/span&gt;4m,format&lt;span class="o"&gt;=&lt;/span&gt;raw
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Launch the VM and Install the OS
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxocufw299h1ba17sjafq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxocufw299h1ba17sjafq.png" alt="Launch VM" width="781" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Post-Installation
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;If you encounter the following error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qemu-system-aarch64: &lt;span class="nt"&gt;-drive&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pflash,unit&lt;span class="o"&gt;=&lt;/span&gt;1,id&lt;span class="o"&gt;=&lt;/span&gt;drive-efidisk0,format&lt;span class="o"&gt;=&lt;/span&gt;raw,file&lt;span class="o"&gt;=&lt;/span&gt;/dev/second/vm-104-disk-1,size&lt;span class="o"&gt;=&lt;/span&gt;67108864: The &lt;span class="nb"&gt;sum &lt;/span&gt;of offset &lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt; and size &lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt; has to be smaller or equal to the actual size of the containing file &lt;span class="o"&gt;(&lt;/span&gt;4194304&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow these steps to resolve it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove the EFI Disk by going to the VM's "Hardware" tab, selecting the EFI disk, and clicking "Remove."&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recreate the EFI Disk with the following command, replacing &lt;code&gt;&amp;lt;VM_ID&amp;gt;&lt;/code&gt; with your actual VM ID and &lt;code&gt;&amp;lt;STORAGE_NAME&amp;gt;&lt;/code&gt; with your storage name (e.g., 'local-lvm' for the default):&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qm &lt;span class="nb"&gt;set&lt;/span&gt; &amp;lt;VM_ID&amp;gt; &lt;span class="nt"&gt;--efidisk0&lt;/span&gt; &amp;lt;STORAGE_NAME&amp;gt;:1,efitype&lt;span class="o"&gt;=&lt;/span&gt;4m,format&lt;span class="o"&gt;=&lt;/span&gt;raw
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start the VM again.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all! I hope you enjoyed this content and using ARM VM on Proxmox.&lt;/p&gt;

</description>
      <category>proxmox</category>
      <category>arm</category>
      <category>linux</category>
      <category>virtualmachine</category>
    </item>
  </channel>
</rss>
