Using vmctl

vmm is OpenBSD's native hypervisor, which allows us to run multiple virtual machines inside a single physical server (a dedicated server). Your virtual machine is a guest which lives inside the host.

For this guide, you will need to connect to the host, which runs the hypervisor. The hostname may be of the form host.example.com. Check your email or contact your network admin if you are uncertain.

  1. NOTE: The host machine (host.example.com) is NOT the guest virtual machine (username.host.example.com). Your virtual private server runs as a guest inside a host machine. You have root access inside your guest machine, but not the host machine.
  2. NOTE: The host is not your personal virtual machine (VM). Your personal VM is a guest inside the host. The guest lives inside the host, so in order to get serial console access to the guest, you must first log in to the host.

Connect to the Virtual Machine

  1. For Linux/Mac, open up a terminal and run $ ssh username@username.host.example.com
  2. For Windows, you can use PuTTY. For hostname, put username@username.host.example.com
  3. Make sure to replace username and host.example.com. Note that the hostname is username.host.example.com and not host.example.com.

Manage the Virtual Machine

$ ssh host.example.com
Last login: Mon Apr  8 23:23:55 2024 from 172.56.233.107
OpenBSD 7.4 (GENERIC.MP) #2: Fri Dec  8 15:39:04 MST 2023
...
$ vmctl console username
Connected to /dev/ttypd (speed 115200)

OpenBSD/amd64 (username.host.example.com) (tty00)

login: 

Once inside the host (host.example.com), you can control your virtual machine using the following commands. <vm-name> is most likely your username.

  1. To view the serial console to install, upgrade, or repair the system:
$ vmctl console <vm-name>

To shutdown the VM:

$ vmctl stop <vm-name>

To boot the VM:

$ vmctl start <vm-name>

To boot the VM with serial console access:

$ vmctl start -c <vm-name>

To pause the VM:

$ vmctl pause <vm-name>

To unpause the VM:

$ vmctl unpause <vm-name>

At any time, if you want to escape the serial console, type ~. (tilde followed by a period) or ~^d (tilde followed by ctrl+d). Note: ^d is ctrl+d. Sometimes, you may need to press enter a few times before the ~. or ~^d combination works. On some keyboards, you may need to type ~~. (two tildes followed by a period).

Install, Upgrade, Repair

Check out the guides for how to install, upgrade, reinstall, or add a new disk.

See Also

vmctl(8)VMM Install Guide