wsl修改默认安装目录到其他盘

1. 查看WSL分发版本

在Windows PowerShell中输入如下命令:

1
wsl -l --all -v

注意一下,如果加*标的不是ubuntu,请参考上篇教程修改默认wsl版本。

我的输出是:

1
2
3
4
  NAME                   STATE           VERSION
* Ubuntu Running 1
docker-desktop-data Stopped 2
docker-desktop Stopped 2

2. 导出分发版为tar文件到目标路径

1
wsl --export <name> <target-dir>\wsl-ubuntu.tar

这里将<name>替换为你的wsl发行版名称,<target-dir>替换为你希望保存的路径,比如我想把wsl的路径修改为d:\WslUbuntu\

1
wsl --export Ubuntu d:\WslUbuntu\wsl-ubuntu.tar

注意盘符是小写。

3. 注销当前分发版

1
wsl --unregister <name>

例如我的是

1
wsl --unregister Ubuntu

4. 重新导入并安装WSL在目标路径下

1
wsl --import <name> <target-dir>\wsl-ubuntu <target-dir>\wsl-ubuntu.tar --version <version>

最后的<version>是你在第一步中看到的版本号,例如我的是

1
wsl --import Ubuntu d:\wsl\ubuntu d:\WslUbuntu\wsl-ubuntu.tar --version 1

5. 设置默认登陆用户为安装时用户名

1
<name> config --default-user <Username>

最后,可以把产生的tar文件删除。

1
wsl --install Debian --name openwrt --location D:\wsl\openwrt --web-download

选项说明

选项 作用
--name openwrt 命名为 openwrt
--web-download 从网络下载(不用商店)
--location D:\wsl\openwrt 指定安装路径
--no-launch 安装后不自动启动

wsl相关参数

一、运行 Linux 二进制文件

1. 启动默认 shell

1
wsl

📌 不带参数,直接进入默认发行版的默认 shell。


2. --exec, -e 不使用 shell 执行命令

1
2
3
4
5
# 直接执行命令,不经过 shell
wsl -e ls -la

# 在指定发行版中执行
wsl -d Debian -e cat /etc/os-release

📌 区别:-e 直接执行二进制文件,不会加载 .bashrc 等配置。


3. --shell-type 指定 shell 类型

1
2
3
4
5
6
7
8
# 使用标准 shell
wsl --shell-type standard

# 使用登录 shell(加载完整配置)
wsl --shell-type login

# 不使用 shell
wsl --shell-type none -e ls

4. -- 按原样传递命令行

1
2
3
4
5
# -- 后面的内容原样传递给 Linux
wsl -- ls -la /home

# 传递带特殊字符的命令
wsl -- echo "Hello World"

二、运行选项

1. --cd 指定工作目录

1
2
3
4
5
6
7
8
9
10
11
# 进入 Linux 绝对路径
wsl --cd /home/user/project

# 进入用户主目录
wsl --cd ~

# 进入 Windows 路径
wsl --cd "D:\Projects\myapp"

# 组合使用
wsl -d Debian --cd /var/log ls -la

2. --distribution, -d 指定发行版

1
2
3
4
5
6
# 进入指定发行版
wsl -d Debian
wsl --distribution Ubuntu

# 在指定发行版执行命令
wsl -d Debian uname -a

3. --distribution-id 指定发行版 ID(GUID)

1
2
# 使用 GUID 运行(适用于脚本)
wsl --distribution-id {12345678-1234-1234-1234-123456789abc}

📌 GUID 可以在注册表中找到:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss


4. --user, -u 指定用户

1
2
3
4
5
6
7
8
9
POWERSHELL# 以 root 用户进入
wsl -u root
wsl -d Debian -u root

# 以普通用户进入
wsl -d Debian -u myuser

# 以 root 执行命令
wsl -d Debian -u root apt update

5. --system 启动系统发行版

1
2
# 进入 WSL 系统发行版(用于调试)
wsl --system

📌 这是 WSL 内部使用的特殊发行版。


三、帮助与调试

1. --help 显示帮助

1
wsl --help

2. --debug-shell 调试 shell

1
2
# 打开 WSL2 调试 shell(用于诊断问题)
wsl --debug-shell

四、安装相关

1. --install 安装发行版

1
2
3
4
5
6
7
8
9
# 默认安装(Ubuntu)
wsl --install

# 安装指定发行版
wsl --install Debian
wsl --install Ubuntu-22.04

# 查看可安装的发行版
wsl --list --online

安装选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# --enable-wsl1:启用 WSL1 支持
wsl --install --enable-wsl1

# --fixed-vhd:创建固定大小的磁盘
wsl --install Debian --fixed-vhd

# --from-file:从本地文件安装
wsl --install --from-file D:\Download\debian.tar.gz --name MyDebian

# --legacy:使用旧分发版清单
wsl --install --legacy

# --location:指定安装路径
wsl --install Debian --location D:\wsl\debian

# --name:设置发行版名称
wsl --install --from-file D:\debian.tar --name CustomDebian

# --no-distribution:仅安装 WSL 组件
wsl --install --no-distribution

# --no-launch, -n:安装后不启动
wsl --install Debian --no-launch
wsl --install Debian -n

# --version:指定 WSL 版本
wsl --install Debian --version 2

# --vhd-size:指定磁盘大小
wsl --install Debian --vhd-size 50GB

# --web-download:从网络下载(非商店)
wsl --install Debian --web-download

完整示例:安装到 D 盘指定路径

1
wsl --install Debian --location D:\wsl\debian --version 2 --no-launch

五、管理发行版 --manage

1. --move 移动发行版位置

1
2
# 将 Debian 移动到 D 盘
wsl --manage Debian --move D:\wsl\debian-new

2. --set-sparse 设置稀疏磁盘

1
2
3
4
5
6
# 启用稀疏模式(自动回收空间)
wsl --manage Debian --set-sparse true
wsl --manage Debian -s true

# 禁用稀疏模式
wsl --manage Debian --set-sparse false

3. --set-default-user 设置默认用户

1
2
3
# 设置 Debian 的默认用户
wsl --manage Debian --set-default-user myuser
wsl --manage Debian --set-default-user root

4. --resize 调整磁盘大小

1
2
3
4
5
# 将 Debian 的磁盘扩大到 100GB
wsl --manage Debian --resize 100GB

# 缩小到 50GB(需要先在 Linux 内缩小文件系统)
wsl --manage Debian --resize 50GB

六、磁盘挂载 --mount

1. 基本挂载

1
2
3
4
5
# 挂载物理磁盘
wsl --mount \\.\PhysicalDrive1

# 挂载虚拟磁盘 (VHD)
wsl --mount D:\disks\mydisk.vhdx --vhd

2. 挂载选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# --vhd:指定为虚拟硬盘
wsl --mount D:\disk.vhdx --vhd

# --bare:仅附加,不挂载
wsl --mount \\.\PhysicalDrive1 --bare

# --name:自定义挂载点名称
wsl --mount \\.\PhysicalDrive1 --name mydisk
# 挂载后路径:/mnt/wsl/mydisk

# --type:指定文件系统类型
wsl --mount \\.\PhysicalDrive1 --type ext4
wsl --mount \\.\PhysicalDrive1 --type ntfs

# --options:额外挂载选项
wsl --mount \\.\PhysicalDrive1 --options ro # 只读
wsl --mount \\.\PhysicalDrive1 --options "ro,noatime"

# --partition:指定分区索引
wsl --mount \\.\PhysicalDrive1 --partition 2 # 第2个分区

完整示例:

1
2
# 挂载第二块硬盘的第一个分区,ext4 格式,只读
wsl --mount \\.\PhysicalDrive1 --partition 1 --type ext4 --options ro --name backup

七、卸载磁盘 --unmount

1
2
3
4
5
# 卸载指定磁盘
wsl --unmount \\.\PhysicalDrive1

# 卸载所有磁盘
wsl --unmount

八、版本与默认设置

1. --set-default-version 设置默认 WSL 版本

1
2
3
4
5
# 新安装的发行版默认使用 WSL2
wsl --set-default-version 2

# 新安装的发行版默认使用 WSL1
wsl --set-default-version 1

2. --set-default, -s 设置默认发行版

1
2
3
wsl --set-default Debian
wsl -s Debian
wsl -s Ubuntu-22.04

3. --set-version 转换发行版版本

1
2
3
4
5
# 将 Debian 从 WSL1 转为 WSL2
wsl --set-version Debian 2

# 将 Debian 从 WSL2 转为 WSL1
wsl --set-version Debian 1

九、关闭与终止

1. --shutdown 关闭所有 WSL

1
2
3
4
5
# 正常关闭
wsl --shutdown

# 强制关闭(可能丢失数据)
wsl --shutdown --force

2. --terminate, -t 终止指定发行版

1
2
3
POWERSHELLwsl --terminate Debian
wsl -t Debian
wsl -t Ubuntu

十、状态与版本信息

1. --status 显示状态

1
wsl --status

输出示例:

1
2
3
4
5
TEXT默认分发版: Debian
默认版本: 2
Windows Subsystem for Linux 上次更新时间: 2024/1/15
WSL 自动更新已启用。
内核版本: 5.15.133.1-1

2. --version, -v 显示版本

1
2
wsl --version
wsl -v

输出示例:

1
2
3
4
5
6
7
TEXTWSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22631.2861

十一、导出 --export

1
2
3
4
5
6
7
8
9
10
11
# 导出为 tar 文件
wsl --export Debian D:\Backup\debian.tar

# 导出到标准输出
wsl --export Debian - > D:\Backup\debian.tar

# --format:指定导出格式
wsl --export Debian D:\Backup\debian.tar --format tar
wsl --export Debian D:\Backup\debian.tar.gz --format tar.gz
wsl --export Debian D:\Backup\debian.tar.xz --format tar.xz
wsl --export Debian D:\Backup\debian.vhd --format vhd

十二、导入 --import

1. 基本导入

1
2
3
4
5
6
7
8
9
10
11
12
wsl --import <名称> <安装路径> <文件路径> [选项]
POWERSHELL# 从 tar 文件导入
wsl --import MyDebian D:\wsl\mydebian D:\Download\debian.tar

# 从标准输入导入
cat debian.tar | wsl --import MyDebian D:\wsl\mydebian -

# --version:指定 WSL 版本
wsl --import MyDebian D:\wsl\mydebian D:\Download\debian.tar --version 2

# --vhd:从 vhdx 文件导入
wsl --import MyDebian D:\wsl\mydebian D:\Backup\debian.vhdx --vhd

2. --import-in-place 就地导入

1
2
# 直接使用现有的 vhdx 文件(不复制)
wsl --import-in-place MyDebian D:\wsl\existing\ext4.vhdx

📌 必须是 ext4 格式的 vhdx 文件。


十三、列出发行版 --list, -l

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 基本列表
wsl --list
wsl -l

# --all:包括正在安装/卸载的
wsl --list --all
wsl -l --all

# --running:仅运行中的
wsl --list --running
wsl -l --running

# --quiet, -q:仅显示名称
wsl --list --quiet
wsl -l -q

# --verbose, -v:详细信息
wsl --list --verbose
wsl -l -v

# --online, -o:显示可安装的发行版
wsl --list --online
wsl -l -o

wsl -l -v 输出示例:

1
2
3
4
TEXT  NAME      STATE           VERSION
* Debian Running 2
Ubuntu Stopped 2
Alpine Stopped 1

十四、删除/注销 --unregister

1
2
3
4
# 删除指定发行版
wsl --unregister Debian
wsl --unregister Ubuntu
wsl --unregister MyCustomDistro

⚠️ 警告:会永久删除所有数据!

安全删除流程:

1
2
3
4
5
6
7
8
9
10
11
# 1. 查看有哪些发行版
wsl -l -v

# 2. 备份
wsl --export Debian D:\Backup\debian.tar

# 3. 删除
wsl --unregister Debian

# 4. 确认
wsl -l -v

十五、更新与卸载

1. --update 更新 WSL

1
2
3
4
5
# 更新到最新稳定版
wsl --update

# 更新到预发行版
wsl --update --pre-release

2. --uninstall 卸载 WSL

1
2
# 卸载 WSL 包(组件)
wsl --uninstall

📌 这会卸载 WSL 核心组件,但不会删除已安装的发行版。


十六、完整命令速查表

命令 作用
wsl 进入默认发行版
wsl -d Debian 进入指定发行版
wsl -d Debian -u root 以 root 进入
wsl -e ls 不使用 shell 执行命令
wsl --cd /home 指定工作目录
wsl --shell-type login 使用登录 shell
wsl --help 显示帮助
wsl --debug-shell 调试 shell
wsl --install 安装 WSL
wsl --install Debian 安装指定发行版
wsl --install --location D:\wsl 安装到指定路径
wsl --install --from-file file.tar 从文件安装
wsl --install --no-launch 安装后不启动
wsl --manage Debian --move D:\wsl 移动发行版
wsl --manage Debian --set-sparse true 设置稀疏磁盘
wsl --manage Debian --set-default-user myuser 设置默认用户
wsl --manage Debian --resize 100GB 调整磁盘大小
wsl --mount \\.\PhysicalDrive1 挂载磁盘
wsl --mount disk.vhdx --vhd 挂载虚拟磁盘
wsl --unmount 卸载所有磁盘
wsl --set-default-version 2 设置默认 WSL 版本
wsl --set-default Debian 设置默认发行版
wsl --set-version Debian 2 转换发行版版本
wsl --shutdown 关闭所有 WSL
wsl --shutdown --force 强制关闭
wsl -t Debian 终止指定发行版
wsl --status 显示状态
wsl --version 显示版本
wsl --export Debian backup.tar 导出发行版
wsl --export Debian backup.vhd --format vhd 导出为 VHD
wsl --import Name Path file.tar 导入发行版
wsl --import-in-place Name file.vhdx 就地导入
wsl -l -v 列出发行版(详细)
wsl -l -o 列出可安装的发行版
wsl -l --running 列出运行中的
wsl --unregister Debian 删除发行版
wsl --update 更新 WSL
wsl --uninstall 卸载 WSL