Run FreeBSD, OpenBSD and NetBSD VMs in Incus
():Incus has quickly established itself as a modern, powerful alternative for managing containers and virtual machines. In a previous article, I covered what Incus is, how it works, and how to build an Incus cluster. After publishing that guide and sharing it on social media, one question kept coming up again and again: can you easily run BSD virtual machines with Incus?
The short answer is yes. Thanks to Incus’ built-in QEMU backend, running full virtual machines is now a first-class feature. This makes it possible to run FreeBSD, NetBSD, and OpenBSD VMs directly inside an Incus environment, using the same tooling and workflows you already know from Linux-based cloud images.
Running BSD systems in Incus turns out to be surprisingly straightforward. The Incus CLI provides a clean and consistent VM experience, while the BSD community maintains ready-to-use cloud images that integrate perfectly with this setup. As a result, there is no need to perform a traditional manual installation unless you explicitly want to.
Instead, you simply download a supported BSD cloud image, import it into Incus, and launch it just like any other virtual machine. Once you understand the workflow for one BSD variant, the same approach applies to FreeBSD, NetBSD, and OpenBSD alike.
Each BSD operating system has its own specifics, but none of them pose real challenges for Incus. Whether you want to test BSD software, evaluate a new operating system, or run BSD VMs in a lightweight development or lab environment, Incus provides a fast, repeatable, and reliable solution.
In this guide, I’ll walk you step by step through running BSD virtual machines in Incus. You’ll learn which cloud images to use, how to migrate them with incus-migrate, and how to start and manage your FreeBSD, NetBSD, or OpenBSD VM efficiently.
Installing incus-migrate
When searching for tutorials on installing BSD systems, you’ll find many traditional installation guides. While those approaches are useful, cloud images allow you to deploy BSD virtual machines much faster and with far less manual work.
To use cloud images with Incus, you need a small helper tool called incus-migrate. This utility handles the import and conversion process and ensures that the resulting VM is correctly configured inside Incus.
Installing incus-migrate is simple. The package is available via the Zabbly repository and is also included in Debian 13 (Trixie / Testing), making it easy to install on modern Incus hosts.
To install incus-migrate, run the following commands:
apt-get update
apt-get install -y incus-migrate
Afterwards, we can move over obtaining our desired BSD image that should be served by Incus.
Download FreeBSD, OpenBSD or NetBSD Cloud Image
Instead of building your own images, you can use prebuilt BSD cloud images maintained by the community. The projects at bsd-cloud-image.org and hcartiaux provide regularly updated images for FreeBSD, NetBSD, OpenBSD, and even DragonFlyBSD.
These cloud images come with cloud-init support and are compatible with major cloud platforms. While they are unofficial, they are well tested on OpenStack and NoCloud environments and work perfectly with Incus.
# FreeBSD
14.2 UFS: https://object-storage.public.mtl1.vexxhost.net/swift/v1/1dbafeefbd4f4c80864414a441e72dd2/bsd-cloud-image.org/images/freebsd/14.2/2024-12-08/ufs/freebsd-14.2-ufs-2024-12-08.qcow2
14.2 ZFS: https://object-storage.public.mtl1.vexxhost.net/swift/v1/1dbafeefbd4f4c80864414a441e72dd2/bsd-cloud-image.org/images/freebsd/14.2/2024-12-08/zfs/freebsd-14.2-zfs-2024-12-08.qcow2
# NetBSD
10.1 UFS: https://object-storage.public.mtl1.vexxhost.net/swift/v1/1dbafeefbd4f4c80864414a441e72dd2/bsd-cloud-image.org/images/netbsd/10.1/2025-02-15/ufs/netbsd-10.1-2025-02-15.qcow2
# OpenBSD
7.7 UFS: https://github.com/hcartiaux/openbsd-cloud-image/releases/download/v7.7_2025-04-28-11-38/openbsd-min.qcow2
You can download the desired image directly using wget. For example, to fetch the FreeBSD 14.2 ZFS image, run:
wget https://object-storage.public.mtl1.vexxhost.net/swift/v1/1dbafeefbd4f4c80864414a441e72dd2/bsd-cloud-image.org/images/freebsd/14.2/2024-12-08/zfs/freebsd-14.2-zfs-2024-12-08.qcow2
The obtained image must be modified/migrated before it can be used with Incus.
Migrate the Cloud Image
Once the image is downloaded, the next step is to import it into Incus. This is done using the incus-migrate command, which supports qcow2, raw, and vmdk disk images.
Start the migration process by running:
incus-migrate
During the interactive setup, specify the image path and make sure to select a virtual machine (option 2). BSD cloud images typically do not use UEFI, so disable UEFI booting when prompted.
Starting the Virtual Machine
After the migration completes, Incus automatically creates the virtual machine with the correct configuration. You can start the BSD VM and verify its status with:
incus start freebsd
incus list
You can manage the VM either via cloud-init or by accessing the console directly:
incus console freebsd
If you are using the Incus web UI, the integrated console provides a convenient way to interact with your BSD virtual machine as well.
Conclusion
Incus proves to be an excellent platform for running BSD virtual machines. With native VM support and a clean migration workflow, FreeBSD, NetBSD, and OpenBSD integrate seamlessly into Incus-based environments.
By combining community-maintained BSD cloud images with the incus-migrate tool, deploying BSD systems becomes fast, reproducible, and easy to automate.
If you want to run BSD alongside Linux containers and virtual machines using a unified toolchain, Incus is a powerful and flexible solution worth serious consideration.