nsl(NSpawn Subsystem for Linux)定位为类似 Windows 子系统为 Linux(WSL)的 Linux 模拟:安装一个发行版,在当前目录打开一个 shell,运行命令,并保持主机不被修改。每台机器都是一个完整的发行版,作为由 systemd-vmspawn 在 QEMU/KVM 下启动的共享虚拟机内的 systemd-nspawn 容器运行。该 VM 的根文件系统可替换且不保存用户状态;机器数据存储在其自身的数据磁盘上。镜像会每周重建并通过 Frostyard 发布工作流进行签名;nsl 在使用前会验证签名。
nsl 项目的品牌展示为官方徽标,源自 Frostyard 发布工作流,该工作流负责签名并分发每周重建的镜像。
机器会在您的项目目录中提供一个 shell(`nsl`),或者执行单个命令(`nsl run make test`)并返回主机的退出状态;您的 `$HOME`、可移动媒体和 `/mnt` 会在内部以您的 UID/GID 出现并位于 `/mnt/host`,内部免密 `sudo`;端口转发到主机 `127.0.0.1`;通过 Waypipe 实现 Wayland 窗口;以及七种已签名的发行版供选择 — — Debian 13、Ubuntu 26.04 LTS、Fedora 44、CentOS Stream 10、Arch、openSUSE Tumbleweed 和 Leap 16.0。使用 `--isolated` 模式时,机器将置于其自身的 VM 中,没有宿主文件、桌面或宿主操作。
nsl 仓库的 GitHub Open Graph 图像将项目可视化地描述为“面向原子主机及希望保持主机整洁的用户的开发环境”,这与文章中关于 nsl 用途和架构的描述相符。
普通机器会被视为您本人可信:它可以读取您的主目录(包括密钥和令牌),但无法在宿主上获得 root 权限或访问宿主套接字。nsl 以您的用户身份运行,自身没有守护进程,且不会更改宿主的软件包、设备权限、组或 sudoers 配置。
v0.4.0 是当前设计的首个发行版;v0.3.0 及更早版本是已退役的原型。测试宿主为 Snow Linux 13,搭载 systemd 261.2、QEMU 10.0.13、virtiofsd 1.13.2 和 GNOME Wayland。前提条件:x86-64 Linux,需具备 KVM、systemd-vmspawn、带有 UEFI 固件的 QEMU、virtiofsd,以及 `kvm` 组成员资格。
项目描述了 VM-plus-nspawn 架构,但未说明为什么在 Linux 上需要 VM 层 — — 理论上 nspawn 可以在不依赖 VM 的情况下运行。所提供的资料也没有将 nsl 与现有的容器/VM 工具(如 toolbx、distrobox 或 lima)进行比较,因此在所提供的材料中没有记载选择 nsl 而非其他方案的依据。