Skip to content

Add WSL2 setup guide — urunc works on WSL2 but is completely undocumented [Docs] #643

@abhaygoudannavar

Description

@abhaygoudannavar

Description

WSL2 is how most Windows developers run Linux tooling, and urunc actually works perfectly on WSL2 with KVM — but there is currently zero mention of WSL2 anywhere in the documentation.

While setting up urunc on WSL2, I went through the entire process and hit multiple undocumented blockers. After resolving them, I confirmed urunc runs unikernels successfully on WSL2 with KVM support. The docs should highlight this rather than leave users guessing.

A dedicated wsl2-setup.md (or a section in the existing installation docs) would cover:

  • KVM verification on WSL2: How to confirm /dev/kvm is available (ls -la /dev/kvm) and enable nested virtualization if needed.
  • Why to use nerdctl instead of Docker on WSL2: Docker Desktop on WSL2 adds its own containerd layer, making it harder to register custom runtimes. nerdctl + standalone containerd is the cleaner path.
  • nerdctl + CNI plugins installation: Steps to install nerdctl and the required CNI plugins (bridge, portmap, etc.) since they don't come bundled.
  • Using overlayfs instead of devmapper: The default WSL2 kernel does not load the dm_thin_pool module, so --snapshotter devmapper fails silently. overlayfs works out of the box.
  • The working final command: A copy-paste-ready command that actually works on WSL2.

This is a positive story for the project — urunc works on WSL2, which expands the potential contributor base to Windows developers. The docs should reflect that.

System info

  • Urunc version: main (HEAD)
  • Arch: x86_64 (WSL2 on Windows 11, kernel 5.15+)
  • VMM: QEMU / Firecracker
  • Unikernel: Unikraft (nginx)

Steps to reproduce

  1. Be a Windows developer using WSL2.
  2. Follow the existing installation docs at https://urunc.io/getting-started/installation/.
  3. Attempt to run the quick start command.
  4. Hit dead ends at: Docker daemon configuration, devmapper unavailability, and nerdctl flag differences.
  5. No documentation exists to guide you past any of these blockers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions