---
name: "debefivm-run"
section: "1"
platform: "linux"
package: "debvm"
version: "0.4.5+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/debefivm-run"
---

# debefivm-run(1)

Run a virtual machine from an EFI-bootable raw disk image

## NAME

debefivm-run - Run a virtual machine from an EFI-bootable raw disk image

## SYNOPSIS

**-debefivm-run** \[**-a**\] *architecture*\] \[**-i** *image*\] \[**-s** *sshport*\] \[**--** *qemu options*\]

## DESCRIPTION

**debefivm-run** is essentially a thing wrapper around **qemu** for running a virtual machine from an UEFI bootable raw disk image. Such an image may be created using **debefivm-create** or with another image creator, but its use is limited to architectures supporting EFI booting.

## OPTIONS

- **-a** *architecture*, **--architecture**=*architecture*

  Override the Debian architecture of the provided image. If the image uses architecture-specific type UUIDs for the root partition, the architecture can be detected. Otherwise, the host's architecture is assumed. The images created by **debefivm-create** employ these UUIDs. The value is used to determine the correct emulator binary as well as suitable EFI firmware.

- **--efi-vars**=*variablefile*

  EFI variables can be changed and retained across reboots of a virtual machine if a separate variable file is supplied. The passed file is created from a template if absent. If absent, a read-only variable store will be supplied to the virtual machine.

- **-i** *image*, **--image**=*image*

  This option specifies the location of the virtual machine image file. By default *vm.img* in the working directory is used.

- **--netopt**=*option*

  **debefivm-run** sets up a user mode network by default. It therefore passes a **-netdev** option to **qemu**. Using this option, you can customize the value of that **-netdev** option. For instance, you can set up additional port forwards by passing e.g. `"--netopt hostfwd=:127.0.0.1:8080-:80"`. It can be used multiple times.

- **--skip**=*task*

  Skip a particular task or feature. The option may be specified multiple times or list multiple tasks to be skipped by separating them with a comma. By default, no tasks are skipped. The following tasks may be skipped.

  - **network**

    Do not configure a network card. Use this if you want to configure network on your own. This should also be passed in addition to passing `"-nic none"` when you want to disable networking.

  - **rngdev**

    Do not pass a random number generator device.

- **--transport**=*transport*

  When **debefivm-run** adds devices to **qemu**, it has to select a transport and it most often guesses **pci**. When specifying a different machine such as **-machine microvm**, a different transport such as **device** may be needed.

- **-s** *sshport*, **--sshport**=*sshport*

  If given, **qemu** is configured to pass connections to *127.0.0.1:sshport* to port 22 of the virtual machine. You can connect to your virtual machine without updating your known hosts like this:

  ```
      ssh -o NoHostAuthenticationForLocalhost=yes -p $sshport root@127.0.0.1
  ```

  The option is a shorthand for `"--netopt hostfwd=tcp:127.0.0.1:sshport-:22"`.

- **--** *qemu options*

  All options beyond a double dash are passed to **qemu**. This can be used to configure additional hardware components. One possible use of this method is passing **-snapshot** to avoid modifying the virtual machine image.

## SEE ALSO

```
        debefivm-create(1) debvm-run(1) qemu(1)
```
