Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Yes: you can use a Windows PC as a Linux and FreeBSD learning lab by running Linux under WSL2, then installing the Incus server inside that Linux distribution. Use Incus containers to practise Linux administration and Incus virtual machines (VMs) to run FreeBSD, which needs its own kernel. Incus’s Windows build is a client, not a Windows-native server: its documentation says, “The Incus daemon only works on Linux.”
Can I use WSL2 and Incus on Windows?
Yes, with a Linux layer between Windows and Incus. WSL2 runs a Linux distribution using virtualization support; the Incus server runs inside that distribution. You can issue Incus commands from its Linux shell. The optional Windows Incus client can administer a server, but installing that client alone does not create a local Incus server.
This setup is different from running Incus directly on Windows. It is also different from using FreeBSD itself as a virtualization host. FreeBSD supports bhyve as a separate design, but for this Windows-based lab the practical path is WSL2, Linux, Incus, and a FreeBSD VM.
See Microsoft’s WSL FAQ for WSL2’s architecture and Incus’s installation guide for server platform and package guidance.
#1 Best Overall
What runs in each layer?
| Layer or instance | What it does | Best use in this lab |
|---|---|---|
| Windows | Host operating system that provides the virtualization platform for WSL2. | Runs your desktop apps and hosts the WSL2 environment. |
| WSL2 Linux distribution | Provides the Linux environment in which the Incus daemon runs. | Practise Linux shell basics and manage Incus. |
| Incus system container | Runs a Linux userspace while sharing the host Linux kernel. | Practise Linux distribution administration when kernel-level differences are not the lesson. |
| Incus VM | Runs a guest operating system with its own kernel. | Practise VM operations or run another OS, including FreeBSD. |
A container and a VM are not interchangeable. A Linux system container is efficient for learning users, packages, files, services, and many administration tasks, but it does not boot an independent kernel. A VM has a separate guest kernel and is the appropriate Incus instance type for FreeBSD. Incus documents FreeBSD as a VM guest and describes an ISO-based VM creation route in its instance creation guide.
What do you need before installing?
- A supported Windows release: Microsoft documents
wsl --installfor Windows 10 version 2004 (Build 19041) or later, and Windows 11. The command enables WSL and Virtual Machine Platform, installs the Linux kernel, sets WSL2 as the default, and installs Ubuntu by default. A restart may be required. For another supported distribution, use the distribution-specific installation option in Microsoft’s WSL installation guide. - Virtualization support: WSL2 needs the Virtual Machine Platform and virtualization capabilities enabled on the machine. If Windows itself runs inside a VM, the parent hypervisor must expose nested virtualization for this arrangement to work. Microsoft explains the WSL2 requirements in its WSL FAQ and the nested-virtualization scenario in its Hyper-V nested virtualization guide.
- A Linux distribution supported by Incus: Incus package availability and installation steps depend on the distribution. Consult the official Incus installation guide for current package instructions and release branches. It distinguishes the 6.0 LTS branch from the 6.x feature branch; choose deliberately between the LTS track and newer features, and check the guide for current release details.
- Appropriate resources for your guests: The official guidance cited here does not establish a universal CPU, RAM, or storage minimum for the combined Windows, WSL2, Incus, and guest workload. Needs vary with guest count, guest workloads, and whether instances run concurrently. Nested virtualization also adds overhead.
How do you set up the learning lab?
- Install WSL and a Linux distribution. In an elevated Windows Terminal or PowerShell session, run
wsl --installfor the default Ubuntu setup, or follow Microsoft’s distribution-specific instructions if you want another supported Linux distribution. Restart if prompted, then complete the distribution’s first-run setup. - Check that the distribution uses WSL2. Run
wsl --list --verbosein Windows Terminal or PowerShell. Confirm that your chosen distribution shows version2. If it does not, consult Microsoft’s WSL installation and conversion instructions before proceeding. - Learn the Linux basics in the distribution. Practise shell navigation, package management, user accounts, services, filesystems, and networking. This makes it easier to tell whether a problem belongs to Linux, Incus, a guest, or the WSL boundary.
- Install and initialize Incus in Linux. Use the official instructions for your distribution and choose the LTS or feature branch that fits your learning goals. Incus setup and package commands vary by Linux distribution, so follow the current installation guide rather than applying one distribution’s command to another.
- Create a Linux system container. Launch a Linux container and use it for ordinary distribution administration: install packages, create users, inspect services, and practise file and network configuration. A container shares the WSL distribution’s Linux kernel, so it is not the right environment for lessons that require an independent kernel.
- Create a VM when the guest needs its own kernel. Use Incus’s VM workflow for operating systems such as FreeBSD. Follow the documented ISO-based path in the instance guide, and identify the guest as FreeBSD so Incus applies the documented FreeBSD-specific behavior.
- Practise lifecycle and recovery operations. Once an instance is working, explore starting and stopping it, snapshots, storage, networking, and backups. Treat WSL2, Incus, and each guest as separate layers when diagnosing a failure.
How do you run FreeBSD in an Incus VM?
Use an Incus virtual machine, not a Linux system container. The VM runs a guest kernel, which is essential for learning FreeBSD as an operating system. Incus’s instance guide documents FreeBSD-specific VM behavior and an ISO-based installation path; follow that procedure and ensure the instance is identified as FreeBSD.
Do not interpret the presence of a FreeBSD userspace or files in a Linux container as running the FreeBSD kernel. Containers share the Linux kernel supplied by the WSL/Incus host. If your goal is to learn FreeBSD’s own virtualization-host role with bhyve, that is a different project from running FreeBSD as an Incus guest in this lab. The FreeBSD Handbook’s virtualization chapter covers that separate context.
Can WSL2 run nested virtual machines?
WSL2 uses virtualization, and running it inside a virtual machine requires nested virtualization to be enabled by the parent hypervisor. On a physical Windows PC, confirm that hardware virtualization and the Virtual Machine Platform are available and enabled. If Windows is itself a guest, check the hypervisor’s nested-virtualization support and configuration before attempting to run the lab.
Recommended Free Tools
Nested virtualization can add performance and resource overhead. The reviewed official documentation does not give a universal minimum for CPU, RAM, or disk for this particular stack, so size the lab around the operating systems and workloads you plan to run rather than relying on a single generic figure.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How does WSL networking affect Incus guests?
WSL2’s default networking is virtualized, and the Linux distribution may have a different IP address from Windows. That matters when you connect to services running in the distribution or in Incus instances, especially if you expect a service to be reachable from another device or network.
Rank #4
| Networking mode | Availability and behavior | What to consider |
|---|---|---|
| Default virtual networking | WSL2’s default model; the distribution may have an IP address different from Windows. | Plan how clients reach services and account for Windows or Hyper-V firewall rules when exposing them. |
| Mirrored networking | Documented for Windows 11 version 22H2 and later; uses a different networking architecture. | It can improve VPN compatibility and localhost access, but does not remove the need to understand firewall rules for exposed services. |
Microsoft explains the modes and their implications in its guides to WSL networking and accessing network applications with WSL. Check your Windows version and current WSL configuration before following networking instructions written for a different mode.
Quick Recap
Best Value
What should you learn first, and what should come next?
- Start with the WSL distribution: learn the shell, package manager, accounts, services, files, and network tools.
- Add Incus only after the Linux foundation is comfortable: learn the daemon and instance lifecycle, then practise with a Linux system container.
- Move to VMs for kernel and operating-system differences: create a VM for FreeBSD and other guests that need their own kernels.
- Expand into operations: practise snapshots, storage, network configuration, and backups, keeping the WSL host, Incus server, and guest configuration distinct.
Common problems and what to check
- Incus commands are available on Windows, but no local server starts: the Windows build is a client. Install and run the Incus daemon inside a supported Linux distribution under WSL2.
- WSL2 or the Incus VM will not start: check that virtualization features are enabled. If Windows is a VM, verify nested virtualization at the parent hypervisor.
- Service-management steps do not work in the WSL distribution: WSL systemd support and distribution requirements matter. Microsoft documents enabling systemd with
[boot]andsystemd=truein/etc/wsl.conf, then shutting down and restarting the distribution. See Microsoft’s systemd guide and verify your WSL version and distribution support. - A guest service is not reachable from Windows or another machine: check whether WSL is using default virtual networking or mirrored mode, then review the applicable Windows and Hyper-V firewall rules. Do not assume that an instance’s network behavior is identical to a native Linux host.
- FreeBSD behaves like a Linux container rather than a separate OS: check that you created an Incus VM and followed the FreeBSD-specific guest procedure. A system container shares the Linux kernel.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems

