WSL Overview
WSL is a project-group — not one app, but a shared workflow applied to ten separate Linux distribution workspaces (antix, brunson, cbpp, clearlinux, crunchbang, feren, nitrux, peppermint, solus, and more), each converting a distro's ISO or squashfs rootfs into a WSL-importable tarball, then packaging it as an MSIX launcher for Windows.
:::note A working ISO warehouse, not just source code
The WSL folder holds the actual source material for this work: full distro ISOs (several multi-GB), extracted rootfs images, and frozen working baselines, alongside the scripts and process docs. This is where the raw Linux images live while they're being converted.
:::
Who it's for
An operator who wants a curated set of Linux distributions available as native WSL2 distros with a proper Windows launcher — rather than only the handful Microsoft or the community officially package for the Windows Store.
The core concept
Each child distro workspace follows the same repeatable pipeline:
Live ISO / filesystem.squashfs
│ extract_iso_and_unsquashfs
▼
Extracted rootfs (on WSL-native ext4 — not NTFS, see below)
│ trim_rootfs_for_wsl, apply_rootfs_overrides
▼
Trimmed rootfs
│ create_wsl_rootfs_tar
▼
install.tar.gz ── import_and_launch_wsl_distro ──▶ test import under wsl.exe
│
▼ package_msix_with_winapp + build_launcher_exe_with_ps2exe
MSIX installer + launcher EXE
Every artifact along the way — source ISO, extracted rootfs, final tar, frozen baseline — gets a recorded SHA-256, at least in the distros that have followed the practice through (Clear Linux is the model example; its PROCESS.md records the hash chain from source ISO all the way to the frozen first-working tarball).
Why this shape
The Clear Linux PROCESS.md documents a real, specific gotcha that explains a key architectural constraint: extracting Clear Linux's SquashFS (which uses many hardlinks) directly onto an NTFS-mounted path through WSL fails with create_inode: failed to create hardlink, because Invalid argument. Extraction has to target a WSL-native ext4 filesystem instead. This kind of filesystem-semantics mismatch is exactly why each distro gets its own workspace and process doc rather than one generic script — different base distros hit different edge cases during conversion.