Skip to main content

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.