Show HN 出了一个「Linux 版 WSL」:一个 VM 装多个发行版,把宿主系统焊死

我在 Hacker News 上看到这个项目时,第一反应是「这名字起得有点冒犯」。NSL,全称是 WSL for Linux——把微软那个让 Windows 用户眼馋的玩意儿反过来搬到 Linux 上。作者 Brian Ketelsen 自己说,Windows 真正做对的一件事就是 WSL2,而他日常用的是 atomic Linux 发行版,想要的是「用 WSL 那种体验去跑多个不同的发行版」。于是他写了一个答案。

这个东西的技术底座其实不复杂:一个由 systemd-vmspawn 启动的单一 VM,里面再用 systemd-nspawn 跑一个或多个容器,作为你的开发实例。宿主文件编辑、端口共享这些 WSL 该有的都跟着来了,图形应用则共用宿主的 Wayland 会话。作者把 NSL 定位成「用 WSL 的体验替代一台远程电脑或整台 VM」,而不是又一层 $HOME 覆盖工具。

评论区最热闹的,是围绕「这到底比 distrobox 强在哪」的争论,以及作者本人那句让我很有共鸣的动机陈述。他说自己有个「开发者诅咒」:为了编译某个东西装了 libWhatever3.2-dev,结果下次打开 Chrome 才发现系统被悄悄搞坏了——「有几十种办法解决这个问题,devcontainers、docker、incus、独立 VM 都行,但我就喜欢 WSL2 那种体验,所以我要那个 UX。」这话坦承,也点到了常年跟宿主系统较劲的人的疼处。

对比 distrobox 时,作者点出一个关键差异:distrobox 默认把 $HOME 挂进容器,WSL 和 NSL 都不这么做。这意味着你可以在容器里随便改 path、改 dotfiles,而不影响宿主——那些会破坏系统的开发依赖,就让它们在容器里折腾去。

讨论里还有一条有意思的线:有人问为什么不直接用 systemd-nspawn,非得套一层 VM。回答是隔离性更好,还能用不同的内核。评论区有人指出,现在连「中等水平的 LLM 都可能在 LXC/Docker/nspawn 里 breakout」,甚至引出了一段 Trail of Bits 测试 GPT-5.6-Cyber 反复逃逸 VM 的讨论,有人干脆建议用 Firecracker 这类更专业的隔离方案。

另一个绕不开的话题是「LLM 味」。有人翻 GitHub 看到 0.6 版本是 2022 年发布的,然后上周突然冒出 1.0.0,紧接着一路冲到 1.8.0,评论直接说「这明显是最近被 Claude 狂灌了一顿」。但也有人替作者说话:他的主页写着「Foundation for Reproducible OS Technologies」,本人是微软的 engineering manager,还常在 uBlue 和 Project Bluefin 上贡献,说明不是那种拿 AI 堆砌的 vibeloaper。作者自己也承认 README「大概 50/50 是手写和 LLM 写的」。

说到底,NSL 解决的问题不新——隔离、多发行版、干净宿主,这些 Nix、Podman、LXC 早就各有各的答案。但作者反复强调一个观点:很多工具都能拼出这个效果,可没有哪一个有 WSL 那种顺手感。有位评论说得挺到位:「你确实能拿一堆工具自己拼,但重要的是 UX。」这大概就是 NSL 最戳人的地方——在 Linux 生态里,把「用不同的机器工作」这件事做得像 WSL 一样无感。

项目的地址在 frostyard.github.io/nsl,感兴趣可以自己翻一翻源码和文档,看看那个 VM 里的容器是不是你想要的隔离级别。