QEMU: Difference between revisions

From NixOS Wiki
imported>NewAM
(Added notes about possible errors when booting NixOS images with UEFI.)
(imported from old wiki)
Line 27: Line 27:
<syntaxhighlight lang=nix>
<syntaxhighlight lang=nix>
  environment = {
  environment = {
   (pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" ''
   systemPackages = [
    qemu-system-x86_64 \
    (pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" ''
      -bios ${pkgs.OVMF.fd}/FV/OVMF.fd \
      qemu-system-x86_64 \
      "$@"
        -bios ${pkgs.OVMF.fd}/FV/OVMF.fd \
  '')
        "$@"
    '')
  ];
  };
  };
</syntaxhighlight>
</syntaxhighlight>

Revision as of 21:48, 8 May 2024

A generic and open source machine emulator and virtualizer

Install

  environment = {
    systemPackages = [ pkgs.qemu ];
  };

Quick EMU

Quickly create and run highly optimised desktop virtual machines for Linux, macOS and Windows; with just two commands.

https://github.com/quickemu-project/quickemu

quickget windows 11
quickemu --vm windows-11.conf

Booting UEFI

To boot UEFI systems using QEMU, the UEFI firmware replacing the BIOS implementation needs to be provided while starting QEMU.

The following installs a script, that always starts QEMU with OVMF firmware implementing UEFI support.

 environment = {
   systemPackages = [
     (pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" ''
       qemu-system-x86_64 \
         -bios ${pkgs.OVMF.fd}/FV/OVMF.fd \
         "$@"
     '')
   ];
 };

qcow-efi images generated from nixos-generators require more RAM than the default 128MB. Failing to provide enough RAM results in grub reporting "error: start_image() returned 0x800000000000009." or systemd-boot reporting "Failed to execute NixOS: Out of resources".