virsh create fails with "Unable to find any firmware to satisfy 'efi'" for aarch64 guest on macOS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


I am having trouble when I `virsh create test.xml` with an aarch64
guest on a macOS (Apple Silicon) host. I've wrestled with a variety of
issues but the one I simply haven't been able to get past is this
regarding the UEFI firmware:

error: Failed to create domain from test.xml
error: operation failed: Unable to find any firmware to satisfy 'efi'

This is with `virsh --version` of 7.9.0 and `qemu-system-aarch64
--version` of 6.1.0, both installed via the common `brew` tool from
its main 'homebrew/core' tap. I have confirmed that the loader/nvram
files referenced do exist.

Running `qemu-system-aarch64 -L help` outputs two lines:


The …/share/qemu-firmware folder does NOT exist, but symlinking it to
a …/share/qemu/firmware folder which does exist does not improve the

I have also tried renaming the …/share/qemu/firmware folder (e.g. `mv
firmware zzz-firmware`) as some notes I found led me to believe that
libvirst might ignore my loader/nvram settings entirely if QEMU had
the "new" firmware JSON configuration stuff there? But again no

How can I debug this further? What should I try next?


--- the test.xml domain configuration I am trying ---

<domain type="qemu" xmlns:qemu="";>
  <memory unit="MiB">2048</memory>
  <cpu mode="host-model" check="partial" />
  <clock offset="utc"/>
    <qemu:arg value='-accel'/>
    <qemu:arg value='hvf'/>
  <os firmware="efi">
    <type arch="aarch64" machine="virt">hvm</type>
    <loader readonly="yes" secure="no"
    <nvram template="/opt/homebrew/share/qemu/edk2-arm-vars.fd">/Users/me/vm_testing/vm-test1.efi.fd</nvram>
    <bootmenu enable="no"/>
    <boot dev="hd"/>
    <gic version="3"/>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/Users/me/vm_testing/vm-test1.qcow2"/>
      <target dev="vda" bus="virtio"/>
    <interface type="network">
      <source network="default"/>
      <model type="virtio"/>
    <console type="pty">
      <target type="serial" port="0"/>
    <rng model="virtio">
      <backend model="random">/dev/urandom</backend>

[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux