WSL2 默认不支持修改Linux 安装路径,官方提供的方式,只有通过导出、导入的方式实现Linux子系统的迁移。
修改注册表的方式官方不推荐,没有尝试过,仅提供操作方式(自行评估风险,建议备份好数据)
1. 打开 **注册表编辑器** (`regedit`)。
2. 导航到以下路径:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
3. 找到 `BasePath` 或者 `Default` 键,并将其值修改为你想要的磁盘位置,例如 `D:\WSL`。
WSL2安装的Linux子系统默认都存放在 C盘中。
在实际场景中,会想要将子系统安装在特定的盘中,而不是挤占C盘空间,尤其是一些特殊系统,如在安装有 Stable Diffusion Web UI 的Linux 子系统中,大模型等会需要占用过多的磁盘空间。
为了避免占用过多的C盘,所以需要将已经安装完的Linux子系统进行迁移。
除了迁移、该方式也可以用来备份环境,环境污染了,重新从备份还原一下。
查看当前安装的发行版,并停止
WSL 安装的 Linux 子系统默认安装在:C:\Users\<用户名>\AppData\Local\Packages\<DistroPackageName>\LocalState\ext4.vhdx
例如:我安装的 Ubuntu24.04 ,文件路径为:
C:\Users\Admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc
## 查看当前安装的Linux子系统发行版(STATE=Running运行中)
PS C:\Users\Admin> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-24.04 Running 2
## 关停需要备份的子系统
PS C:\Users\Admin> wsl --shutdown Ubuntu-24.04
导出子系统到指定目录
## 查看当前 Linux 子系统(Stopped 表示停止)
C:\Users\Admin>wsl --list --verbose
NAME STATE VERSION
* Ubuntu-24.04 Stopped 2
## 导出 发行版名称=Ubuntu-24.04 的子系统到 D 盘
## 格式: wsl --export <发行版名称> D:\backup\<文件名>.tar
C:\Users\Admin>wsl --export Ubuntu-24.04 D:\mine\virtual_host\backup\ubuntu24_04_back.tar
正在导出,这可能需要几分钟时间。
操作成功完成。
卸载原有的子系统
## 卸载子系统
## 格式: wsl --unregister <发行版名称>
C:\Users\Admin>wsl --unregister Ubuntu-24.04
正在注销。
操作成功完成。
导入备份的子系统到指定路径中
## 导入
## 格式 wsl --import 新名称 新路径 <备份包.tar>
C:\Users\Admin>wsl --import ubuntu2404_AI D:\mine\virtual_host\unbuntu_24_04 D:\mine\virtual_host\backup\ubuntu24_04_back.tar
正在导入,这可能需要几分钟时间。
验证
keyboardman@papapa-keyboard-man:~$ sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
[sudo] password for keyboardman:
Tue Oct 22 00:53:55 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.51.01 Driver Version: 565.90 CUDA Version: 12.7 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4070 ... On | 00000000:01:00.0 On | N/A |
| 0% 38C P8 11W / 285W | 422MiB / 16376MiB | 2% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 33 G /Xwayland N/A |
+-----------------------------------------------------------------------------------------+