← Features
Before anything is installed

The preflight

“It does not work on my machine” has five common causes on Windows, and five different remedies. freewilly --preflight names the one you have, prints the command that fixes it, changes nothing, and exits 1 so an installer can stop rather than fail halfway.

freewilly --preflight
FreeWilly preflight — what this machine can host

  [ok  ]  Windows build            Windows 10.0, build 26200
  [ok  ]  Hardware virtualization  enabled — a hypervisor is already running
  [FAIL]  WSL2                     not installed — wsl.exe is not on this machine
           -> Run `wsl --install --no-distribution` in an administrator terminal, then
              reboot.
  [ok  ]  Container engine         nothing else owns the docker command or the docker_engine pipe

1 row blocks an install. Nothing has been copied to disk.

Five rows, each with its remedy

  • Windows build — 19041 or later, because below it no configuration gets a WSL2 kernel.
  • Hardware virtualization — read the hypervisor bit first, because Windows reports the firmware bit as off once something has claimed it.
  • WSL2 — a missing wsl.exe, a kernel-less half-install, and “new distros default to WSL1” are three states with three lines.
  • Container engine — anything else owning the docker command or the docker_engine pipe, because two engines on one pipe leaves neither working.
  • Docker context — where your own docker command points, because an engine that is running and a client aimed somewhere else fail with the same sentence.

The order is the argument

Reading the hypervisor before the firmware bit is the row that took an argument to get right: the naive order sends a plainly virtualizing machine into a BIOS to enable what is already on. --json gives an installer the same report, verdicts and remedies included, and the same check runs inside the installer and against a clean Windows 11 VM on the way to a release.