Scroll to navigation

DEBVM-RUN(1) User Contributed Perl Documentation DEBVM-RUN(1)

NAME

debvm-run - Run a VM image created by debvm-create

SYNOPSIS

debvm-run [-g] [-i image] [-s sshport] [-- qemu options]

DESCRIPTION

debvm-run is essentially a thin wrapper around qemu for running a virtual machine image created by debvm-create or something compatible. The virtual machine image is expected to be a raw ext4 image with a non-empty file system label. The architecture of the machine is detected from the contained /bin/true. It must contain a symbolic link pointing to a kernel image at one of (|/boot)/vmlinu[xz] a symbolic link pointing to an initrd image at initrd.img in the same directory as the kernel image. Both are extracted and passed to qemu. A net interface configured for user mode is added automatically.

OPTIONS

By default, the option -nographic is passed to qemu and one interacts with the serial console of the machine. This configuration is skipped in the presence of this option. Note that debvm-create defaults to installing a cloud kernel if available, so you may have to pass "--include=linux-image-generic" during image construction to get graphics drivers.
This option specifies the location of the virtual machine image file. By default rootfs.ext4 in the working directory is used.
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
    
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.

EXAMPLES

Run a virtual machine stored in the image rootfs.ext4 (the default) with local port 8022 routed to port 22 of the virtual machine. The -snapshot argument is passed to QEMU and prevents any permanent changes to rootfs.ext4, resulting in an ephemeral run.

    debvm-run -s 8022 -i rootfs.ext4 -- -snapshot

FAQ

Make sure $TERM is set to a value known inside the VM. You may need to install ncurses-term for more definitions. The serial console will miss events of resizing the terminal emulator. You may run "setterm -resize" in that case.
The wrapped qemu can be terminated by pressing Ctrl-a x. Refer to the qemu manual page for more escape sequences.

LIMITATIONS

Due to the way kernel and bootloader are being extracted before running qemu, one cannot upgrade a kernel and then just reboot. Attempting to do so, will still use the old kernel. Instead, qemu must be terminated and debvm-run should be launched again to pick up the new kernel. In order to avoid accidental reboots, one may pass -no-reboot to qemu.

SEE ALSO

    debvm-create(1) qemu(1)
2023-03-21 perl v5.36.0