首先列出目前可用的 Linux 发行版:
wsl --list --online
显示:
以下是可安装的有效分发的列表。
使用“wsl.exe --install <Distro>”安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-16.0 openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0 SUSE Linux Enterprise 16.0
kali-linux Kali Linux Rolling
Debian Debian GNU/Linux
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
AlmaLinux-10 AlmaLinux OS 10
archlinux Arch Linux
FedoraLinux-43 Fedora Linux 43
FedoraLinux-42 Fedora Linux 42
eLxr eLxr 12.12.0.0 GNU/Linux
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_10 Oracle Linux 8.10
OracleLinux_9_5 Oracle Linux 9.5
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
如果不指定具体发行版,默认会安装 Ubuntu:
wsl --install
显示:
正在下载: Ubuntu
正在安装: Ubuntu
已成功安装分发。可以通过 “wsl.exe -d Ubuntu” 启动它
正在启动 Ubuntu...
Provisioning the new WSL instance Ubuntu
This might take a while...
接着它提示让你设置用户名和密码,密码在输入的时候光标是不会移动的也没有任何提示:
Create a default Unix user account: wxh1104
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
现在就到了 Linux 正式的命令行界面了:

但是 WSL 默认是安装到 C 盘,由于我的 C 盘空间紧张,遂准备将其迁移到 D 盘。
wsl --list --verbose
NAME STATE VERSION
* Ubuntu Stopped 2
现在我们要将这个系统连带着其中的数据打包到 D:\WSL\ubuntu.tar:
wsl --export Ubuntu D:\WSL\ubuntu.tar
正在导出,这可能需要几分钟时间。 (1549 MB)
操作成功完成。
打包完成后,相当于有了系统的完整备份,所以我们卸载原先 C 盘的系统:
wsl --unregister Ubuntu
正在注销。
操作成功完成。
然后再将备份导入路径 D:\WSL\Ubuntu。这将作为新子系统的根目录。
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\ubuntu.tar
我们成功将 Linux 子系统迁移到了 D 盘。
此时会发现在 D:\WSL\Ubuntu 目录下有两个文件:
ext4.vhdx 是一个虚拟硬盘镜像文件,换句话说就是整个 Ubuntu Linux 系统本体。运行时 WSL 会自动挂载 ext4.vhdx 并映射为 Linux 根目录 /。shortcut.ico 即 WSL 发行版图标,用于开始菜单的显示。现在 Windows 的开始菜单可以看到 Ubuntu 了,只要点击就可以打开到子系统的用户根目录:

有趣的是,如果先在 Windows 中打开命令提示符,然后运行
wsl命令,此时 Linux 命令行显示的当前目录是/mnt/c/Users/<用户名>(或其他类似的路径)。
问了 AI 后才知道这是 WSL 的默认行为:继承 Windows 当前工作目录的路径,并将其转换为 WSL 内部的路径格式。
我是在
C:\Users\<用户名>启动 WSL 的,WSL 会自动把 Windows 当前目录映射为 Linux 当前目录,相当于在根目录运行cd /mnt/c/Users/Wxh1104。这算是 WSL 的一个便利特性,可以直接在 Windows 目录下执行 Linux 命令来处理跨平台文件。
为了能够继续在 Linux 下折腾新项目、写代码,还需要将 WSL 连接到 Windows 上安装的 VS Code。在用户根目录运行:
wxh1104@WECHXEHO:~$ code .
会弹出一个 VS Code 窗口,一番加载后显示如图:
