WSL

WSL
hezhCaution
请先通篇读完再操作!
简介
WSL(Windows Subsystem for Linux,即Windows 下的 Linux 子系统)是微软开发的一个兼容层,让你可以在 Windows 上原生运行 Linux 环境(比如 Ubuntu、Debian 等),而不需要安装虚拟机(VMware)或双系统。
三种在Windows下实现Linux方式的优缺点:(由AI总结生成)
| 方式 | 优点 | 缺点 |
|---|---|---|
| WSL | 轻量、启动快、与Windows文件互通 | 不支持图形界面应用,部分底层功能受限 |
| 虚拟机 | 完整Linux环境,支持图形界面 | 资源占用大,启动慢 |
| 双系统 | 性能最高,完全控制硬件 | 切换需重启,不能同时使用两个系统 |
前置准备
-
确认开启CPU虚拟化
按 Ctrl + Shift + Esc 进入任务管理器,确保CPU虚拟化开启。
-
开启子系统和虚拟机平台
按 Win 搜索功能二字进入启用或关闭Windows功能。
勾选 适用于Linux 的Windows子系统 和 虚拟机平台,按照提示重启电脑。
安装
-
以管理员身份打开PowerShell,执行以下命令查看可安装的版本。
1
wsl --list --online # 缩写:wsl -l -o
-
选择一个版发行版下载,推荐 Ubuntu22.04 或者 Debin ,执行以下命令安装:
1
wsl --install <发行版的名字>最后输入用户名和密码(输密码时不会显示)即可。这时候在资源管理器里会出现Linux图标和全部的相关文件,可以从Windows从容拖放文件。
启动
在终端输入 wsl 或者直接下拉选项框选择相应的发行版即可进入。
迁移 WSL 下的系统到其他盘符
由于使用 wsl --install <发行版的名字> 命令来安装系统时都是默认安装在 C 盘,具体的路径是:
1 | |
部分用户的 C 盘预分配空间很少,而一个 WSL 下长期使用的系统基本都在 10GB+ ,如果装了不止一个 WSL 下的系统,这就导致 C 盘空间很紧张。如图:
ext4.vhdx 本质上是一个虚拟硬盘镜像,里面是完整的 Linux 文件系统,相当于把整个 Linux 的根目录(/)都打包在这一个文件里。
目前 WSL 安装系统无法实现在安装前加上某个参数就能指定盘符。一般有做法:
- 安装后立即
move(最简单): 装完之后马上执行--move,趁着还没写入多少数据,迁移很快。 - 先导出C盘WSL下的系统的 tar 包,再把压缩包导入其他盘符,最麻烦。
- 用
--import指定路径安装(需要自己找 tar 包来源,比较麻烦,不推荐)
第一点和第二点各有优缺点:
- 用 move 命令迁移速度很快,但稳定性和兼容性不是最好的。
- 导出导入的方法繁琐,但这是官方推荐的做法,稳定性和兼容性相对更好。
⚠️ 以下两个方法任选其一即可。
1. 使用 move 命令(不推荐)
Caution
这个方法不一定能移动成功,可能会导致环境无法启动,发现在联想电脑上都会失败,其他电脑用这个命令没问题,目前没搞懂原因。导出 tar 包再安装是官方的推荐方式,更稳定,出事的可能性更小,本人也试过这种方法,不算繁琐,挺快的。参考:【硬核】全网最详细WSL迁移指南,手把手带你清理C盘】 https://www.bilibili.com/video/BV1VhAAecEYP/?share_source=copy_web&vd_source=36ed1d2e47ac14f687ed1e9f8afd9c10
-
更新 WSL 版本(可以不更)
1
wsl --update若更新失败,可以加一个
--web-download参数。1
wsl --update --web-download -
查看发行版名称
1
wsl -l -v -
关闭 WSL
1
wsl --shutdown -
迁移
1
2mkdir D:\WSL # 创建 WSL 目录
wsl --manage <发行版名称> --move D:\WSL<发行版名称> 必须写全,有数字也要写(对于Ubuntu来讲,比如Ubuntu-22.04、Ubuntu-24.04等)。
这时候 ext4.vhdx 就会出现在 D 盘的 WSL 目录下,对应 C 盘的空间也会腾让出来。
2. 导出/导入 tar 包(推荐)
-
查看发行版名称
1
wsl -l -v -
关闭 WSL
1
wsl --shutdown -
导出 tar 包
1
2mkdir D:\wsl-backup # 先创建一个目录存放 tar 包
wsl --export <发行版名称> D:\wsl-backup\ubuntu.tar -
注销原来在 C 盘的发行版
1
wsl --unregister <发行版名称> -
导入新位置(D 盘)
1
2mkdir D:\WSL # 创建 WSL 目录
wsl --import <发行版名称> D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tarTip
若执行到第五步后用户配置(用户名能正常显示)能正确加载出来,就不需要执行第六步了。重新导入新盘符后导致用户配置丢失的情况是小概率事件。
-
设置默认用户(否则会默认以 root 登录)
1
2
3<发行版名称> config --default-user <你原先的用户名>
# 或者
wsl -d <发行版名称> -u <你原先的用户名>
与vscode配合
插件市场搜 wsl 并安装。
左侧会出现小电脑图标,点击右箭头即可链接到对应的文件夹。
这时候底下的终端也不再是powershell了,而是WSL的Linux环境。
退出。
Note
如果把实验指导书的代码复制进去发现头文件处爆红,那么说明Linux环境缺少 c/c++ 的编译器(即 gcc 和 g++)。
请看这里:用 vscode + wsl 方案做操作系统实验
参考&致谢
blbl@技术爬爬虾:https://b23.tv/PetWC40




















