How to Install OpenBSD 7 on Proxmox VE

In this guide, we will systematically go through how to install OpenBSD 7 on a Hypervisor i.e Proxmox VE. But before we plunge in, let us first get to know what OpenBSD is.

OpenBSD is a free and open-source Unix-like operating system based on Berkeley Software Distribution (BSD) whose main focus is security. This operating system was created by Theo de Raadt in 1995 as a fork of NetBSD.

The latest release, OpenBSD 7.8 released on Oct 22, 2025, has the following amazing features:

  • Platforms specific improvements:
    • arm64:
      • Added support for Raspberry Pi 5 (with console on serial port).
      • Implement acpicpu(4) for arm64.
      • On Apple variants, enter DDB when exuart detects a BREAK.
      • On arm64 and riscv64, avoid multiple threads of a process continuously faulting on a single page when pmap_enter(9) is asked to enter a mapping that already exists.
      • Make apm and hw.cpuspeed work on Snapdragon X Elite machines.
    • amd64:
      • Fix processing of GPIO events for pin numbers less than 256 with an _EVT method. Fixes power button on various ThinkPads with AMD CPUs.
  • Various kernel improvements including:
    • Set an upper limit on the value of sysctl(2) kern.seminfo.semopm to avoid a possible kernel panic.
    • On arm64, avoid decoding instructions when ELR isn’t pointing into the kernel part of the virtual address space and use fault() instead of panic() to provide better error reports.
    • Inherit PS_NOBTCFI at fork(2) so forked children do not get killed by BTCFI safeguards.
    • Inherit PS_PROFILE at fork(2). This lets child processes disable/reenable profiling when they deemed appropriate.
    • Implement the POSIX-2024 close-on-fork flag, but modified to be reset on exec as preserving it across exec is not necessary for its original purpose and has security and usability concerns.
  • Suspend/Hibernate Support:
    • Preallocate hibernate work area during boot to fix failures where the needed region can’t be late-allocated.
    • Implement lid suspend/resume for lids that use a GPIO.
    • Implement support for wakeup interrupts in amdgpio(4), making it possible to resume laptops with AMD CPUs from S0ix suspend.
    • Introduce a generic powerbutton_event() function that does everything we expect from a power button event in a consistent manner, ensuring all drivers now prevent shutdown within the first 10 seconds after resume.
    • Implement a ddb.suspend sysctl that will force “S0ix” suspend and skip suspend of inteldrm(4) and amdgpu(4) such that the display remains on during suspend.
    • Fix dead USB ports after suspend/resume on the ThinkPad Z13.
  • Various kernel improvements that includes:
    • Added kprobes provider for dt(4).
    • Changed the printing of the hibernate image size from bytes to megabytes
    • Unlocked the top part of the VM fault handler on i386.
    • Added btrace(8) display of time spent in userland when analyzing the kernel stack in the flame graph tool and fixed a parsing bug.
    • Increased hibernate writeout speed.
    • Identify TPM 2.0 devices and perform the 2.0-specific suspend command, allowing the ThinkPad X1 Carbon Gen 9 and ThinkPad X1 Nano with the latest BIOS (which added S3) to resume.
    • ncreased the default buffer space on PF_UNIX sockets to 8k and made the values tuneable via sysctl(2).
  • SMP Improvements:
    • Up to 8 softnet threads are used to handle network input. The number of threads is also limited by the number of CPUs.
    • TCP stack is now running in parallel on multiple CPUs. Up to 8 threads are used to process TCP traffic. Note that each connection can only be handled by one CPU. Use multiple streams and a network interface capable of multi queue to distribute packets.
    • IPv6 fragment reassembly is now running in parallel.
    • IPv6 destination option and routing header parsing is now running in parallel.
  • VMM/VMD improvements:
    • On AMD processors SEV-ES technology is supported to start confidential virtual machines. SEV-ES works with the vmm/vmd hypervisor and with OpenBSD guests on KVM/qemu.
    • Add option for vmd(8) to run guests in AMD SEV-ES mode and keyword “seves” for vm.conf(5) to enable it.
    • Allow SEV-ES enabled guests to run on vmm(4)/vmd(8).

Step 1. System requirements to Install OpenBSD 7

To be able to install OpenBSD 7, you have to meet the below system requirements:

  • Storage Space – 15 GB+
  • RAM – 2 GB+

Step 2. Download OpenBSD 7 Image file.

OpenBSD offers many images, it is not necessarily easy to find them. The idea is not so much to provide an exhaustive description of all the installation images, as to specify a few points on the most suitable images depending on the use cases for an installation.

So let’s start, in the set of images offered by OpenBSD, I would retain the following:

  • install78.img The most complete installation image, containing the essential packages to install the system, BIOS/UEFI compatible.
  • install78.iso An image more suitable for CD format also contains most of the packages to install the system, however this image is not compatible with an installation in UEFI.
  • cd78.iso and miniroot78.img Are the lighter versions of the aforementioned images (by analogy they could be compared to a “Netinstall” image from Debian).
  • All of these images support the main architectures (amd64arm64i386), except for the arm64[ architecture /b] for ISO images.

Alternatively, you can use wget to download the image file as follows:

For Physical machine installation, use the .img file.

##For .img file
wget https://cdn.openbsd.org/pub/OpenBSD/7.8/amd64/install78.img

##For iso file
wget https://cdn.openbsd.org/pub/OpenBSD/7.8/amd64/install78.iso

Step 2. Create OpenBSD 7 VM on Proxmox VE

We will use install78.iso for BIOS mode installation and install78.img for UEFI mode installation. This is not to say that you can’t use the install78.img file for both, it’s only in the context of this article that we wanted to present the widest range of installation methods.

BIOS Mode Installation
 qm create 148 \
--name OpenBSD-7 \
--agent 1,type=isa \
--memory 2048 \
--bios seabios \
--sockets 1 --cores 2 \
--cpu kvm64 \
--net0 virtio,bridge=vmbr0 \
--scsihw virtio-scsi-single \
--boot order='ide0;scsi0' \
--scsi0 local-lvm:35 \
--ide0 /mnt/nvme/template/iso/install78.iso,media=cdrom

Explanation:

  • agent 1,type=isa – Special configuration of the QEMU agent, via the ISA serial port.
  • bios seabios (i440fx machine) – The default configuration for QEMU hosts.
  • boot order='ide0;scsi0' – We define a classic boot order (the installation medium first).
  • --scsi0 local-lvm:35 – Location and size of the VM disk
  • --ide0 /mnt/nvme/template/iso/install78.iso,media=cdrom – Location of the installation disk.
UEFI Mode Installation
 qm create 149 \
--name OpenBSD-7-UEFI \
--agent 1,type=isa \
--memory 2048 \
--bios ovmf \
--machine q35 \
--sockets 1 --cores 2 \
--cpu kvm64 \
--net0 virtio,bridge=vmbr0 \
--scsihw virtio-scsi-single \
--boot order='scsi0;ide0' \
--efidisk0 local-lvm:0 \
--scsi0 local-lvm:35

Explanation:

  • bios ovmf and machine q35 – The alternative firmware to Seabios will be better suited, especially if you want to use PCIe peripherals.
  • boot order='scsi0;ide0' – For the boot order, we place the installation disk in second position.
  • efidisk0 local-lvm:0 – The necessary EFI partition, for any type of UEFI installation.
  • --scsi0 local-lvm:35 – Location and size of the VM disk.

For UEFI mode, you will need to import the installation image in RAW format, which you will place in ide0:

qm set 149 --ide0 local-lvm:0,import-from=/mnt/nvme/template/iso/install78.img

Step 3. Begin Installation of OpenBSD

To begin the installation process start the created VM:

qm start 148
qm start 149

Let’s start with the common installation sections for both BIOS and UEFI mode.

BIOS/UEFI Common Settings

Starting the VM launches the installer, select (I)nstall and then you will be asked to choose your preferred Keyboards Layout:

Then the server hostname:

Network Settings

For the network settings, set them as below:

Root Account Configuration and Basic Services

Enter the password for the root account, and confirm it, then enable the basic services such as xorg, sshd and xenodm as follows:

Create a User

Set up a normal user for the server as follows:

SSH Security and Timezone

You can choose to enable root SSH login. Also, set your correct Timezone:

Partitioning and installing the base system

Let’s start with Partitioning disk in BIOS mode:

BIOS Mode Partitioning

We start by defining the destination disk for the installation sd0, if you’re not sure which disk to select you can list them with ‘?’, then the disk partitioning method (MBR). Finally, select the automatic partitioning proposal [a].

To install the system, we will have to indicate where the basic packages are stored, in cd0 in this case, which corresponds to our ide0 /mnt/nvme/template/iso/install78.iso.

Installation is now complete.

For BOS mode installation, shutdown the VM and disconnect the installation disk.

qm stop 148 && qm set 148 --delete ide0
qm start 148

UEFI Mode Partitioning

For UEFI Mode, we start by defining the destination disk for the installation sd0, if you’re not sure which disk to select you can list them with ‘?’, then we select the partitioning method (GPT). Finally, select the automatic partitioning proposal [a].

Hit enter to proceed with the installation:

For UEFI installation we recommend simply restarting it from the console but do not remove the installation disk (openbsd seems to need it at boot time).

Step 4. Post installation OpenBSD 7 Basic Configurations

Once our VMs are started, we will still need to go through some configurations for the QEMU agent. First things first, check the ip address of the instance so that you can connect via ssh.

$ ifconfig

Then continue to connect to the instance via SSH. Since we had enabled root ssh login, we can login ass root over ssh:

ssh [email protected]

In OpenBSD, you will be required to add your user to the sudoers file before you can proceed.

Add the user to the wheel group.

# user mod -G wheel openbsd

You will also need to uncomment the line below.

$ visudo
# Uncomment to allow people in group wheel to run all commands
# and set environment variables.
%wheel  ALL=(ALL) SETENV: ALL

Then log out and back in as the normal user and try running a command with sudo:

QEMU Guest Agent

You can also install and configure the QEMU Agent as follows as root:

Switch to root user:

sudo su

Then install the QEMU Agent package:

pkg_add qemu-ga

Configure ISA QEMU Guest agent:

cat <<'EOF' >> /etc/rc.conf.local
pkg_scripts=qemu_ga
qemu_ga_flags="-t /var/run/qemu-ga -m isa-serial -p /dev/cua00 -f /var/run/qemu-ga/qemu-ga.pid"
EOF

Activate the QEMU Guest agent service

/etc/rc.d/qemu_ga stop && /etc/rc.d/qemu_ga start

To update your OpenBSD 7 system.

sudo syspatch -c

Upgrade your system.

sudo sysupgrade

Conclusion

That’s it for this awesome guide, I hope it was helpful. Our next article will be on installing OpenBSD with cloud-init, so watchout.

Join our Linux and open source community. Subscribe to our newsletter for tips, tricks, and collaboration opportunities!

Recent Post

Unlock the Right Solutions with Confidence

At CloudSpinx, we don’t just offer services - we deliver clarity, direction, and results. Whether you're navigating cloud adoption, scaling infrastructure, or solving DevOps challenges, our seasoned experts help you make smart, strategic decisions with total confidence. Let us turn complexity into opportunity and bring your vision to life.

Leave a Comment

Your email address will not be published. Required fields are marked *

Related Post

This tutorial will show you how to install iRedMail Email Server on a Linux server running Ubuntu 24.04|22.04. iRedMail is […]

Ansible is a powerful automation tool that simplifies managing Linux servers at scale using declarative, desired state configurations. It ensures […]

Vagrant is one of the developer tools when working with KVM. It enables developers and system administrators to quickly build […]

Let's Connect

Unleash the full potential of your business with CloudSpinx. Our expert solutions specialists are standing by to answer your questions and tailor a plan that perfectly aligns with your unique needs.
You will get a response from our solutions specialist within 12 hours
We understand emergencies can be stressful. For immediate assistance, chat with us now

Contact CloudSpinx today!

Download CloudSpinx Profile

Discover the full spectrum of our expertise and services by downloading our detailed Company Profile. Simply enter your first name, last name, and email address.