(1) Use Gerd Hoffman's repo for firmware: $ cd /etc/yum.repos.d $ sudo wget https://www.kraxel.org/repos/firmware.repo $ sudo dnf install edk2.git-aarch64 $ rpm -ql edk2.git-aarch64 /usr/share/doc/edk2.git-aarch64-0 /usr/share/doc/edk2.git-aarch64-0/License.txt /usr/share/edk2.git /usr/share/edk2.git/aarch64 /usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw /usr/share/edk2.git/aarch64/QEMU_EFI.fd /usr/share/edk2.git/aarch64/vars-template-pflash.raw (2) Create a VM: $ virt-builder fedora-21 -o node1 --format qcow2 --update \ --selinux-relabel --size 70G (3) Import it into libvirt: $ virt-install --name node1 --ram 4096 \ --disk path=/home/kashyapc/node1,format=qcow2,cache=writeback \ --nographics --import --os-variant fedora21 (4) Get the nvram from here: $ wget http://libguestfs.org/download/builder/fedora-21-aarch64-nvram.xz $ unxz fedora-21-aarch64-nvram.xz Copy it somewhere permanaent: $ sudo mkdir /var/lib/libvirt/nvram $ sudo cp fedora-21-aarch64-nvram.xz /var/lib/libvirt/nvram (5) Update the VM XML, so that the 'os' attribute has th 'loader' and 'nvram' elements: $ virsh edit node1 . . . $ virsh dumpxml node1 | grep -i nvram -A2 -B3 hvm /usr/share/AAVMF/AAVMF_CODE.fd /var/lib/libvirt/nvram/fedora-21-aarch64-nvram Or to boot it via QEMU CLI: $ qemu-system-aarch64 \ -nodefconfig -nodefaults -display none \ -M virt -cpu cortex-a57 -machine accel=tcg -m 2048 \ -drive if=pflash,format=raw,file=/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw,readonly \ -drive if=pflash,format=raw,file=./fedora-21-aarch64-nvram \ -drive file=fedora-21.qcow2,format=qcow2,if=none,id=hd0 \ -device virtio-blk-device,drive=hd0 -serial stdio [. . .] Fedora release 21 (Twenty One) Kernel 3.17.4-302.fc21.aarch64 on an aarch64 (ttyAMA0) localhost login: . . .