WSL简单使用
⚠️ 关注朋蛋、码上小明
1 介绍
⚠️ WSL用起来确实比VM和VirtualBox更顺手。
WSL(Windows Subsystem for Linux)适用于 Linux 的 Windows 子系统,是 Windows 自带功能,不用装传统虚拟机、不用双系统,就能在 Windows 里面跑 Linux。此外,还有VM、VirtualBox也有同样的功能。
WSL:Windows 自带,轻量跑 Linux,和 Windows 互通方便,主打开发用,隔离弱。
VMware(VM):完整虚拟机,独立系统,快照、USB、图形性能强,适合测试、靶场。
VirtualBox:免费开源虚拟机,独立系统,基础虚拟化够用,性能偏弱。
WSL参考文档
https://learn.microsoft.com/en-us/windows/wsl/
2 安装WSL
⚠️注意: 命令需在PowerShell执行,中断中输入PowerShell即可进入命令页面。
⚠️ 注意:我的操作系统是Win10。
2.1 WSL安装命令
# 启用运行WSL和安装Linux发行版所需的功能,并默认安装Ubuntu,默认安装在C盘
wsl --install
# 开启后一定要关机,重启
# 更新高版本内核
wsl --update
# 上面的方法会比较忙,可以直接到GitHub上下载最新版本直接安装,地址如下
https://github.com/microsoft/WSL/releases
# 高版本wsl支持指定版本和安装目录
# -d 指定版本
# --location Ubuntu的安装目录
# --web-download 下载方式为互联网下载,默认从Microsoft Store下载(容易失败)
# --name 指定实例名称,不是必须,如果需要多个实例时,需要设置
wsl --install -d Ubuntu-22.04 --location D:\wsl\ubuntu2204 --web-download --name ubuntu-test
安装报错,因为国内网络拿不到Github上分发列表(可以过一会再试,因为Github时好时坏,连接上时就可以正常使用了);此时,已经启用WSL成功。
请求的操作成功。直到重新启动系统前更改将不会生效。
无法从"https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"中提取列表分发。操作超时
Error code: Wsl/InstallDistro/0x80072ee2
解决方法---离线导入
# 在下面地址中找出适合你操作系统的版本,然后手动下载
https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json
# 离线导入wsl发行包
wsl --import Ubuntu-22.04 D:\wsl\ubuntu2204 D:\wsl\tmp\Ubuntu2404.wsl
安装结果

2.2 WSL其他命令
# 查看版本
wsl --version
# 查看帮助参数
wsl --help
# 查看在线Linux系统版本
# --list可以替换为 -l
wsl --list --online
# 查看已经安装的Linux系统
wsl --list
# 查看实例数量
# --verbose可以替换为-v
wsl --list --verbose
# 同样作用
wsl -l -v
# 启动Linux系统实例
wsl -d Ubuntu-22.04
# 取消注册分发并删除根文件系统
wsl --unregister Ubuntu-22.04
# 停止所有运行的虚拟机
wsl --shutdown
2.3 导入导出命令
⚠️ 假设数据在C盘中;
⚠️ 旧版本中无法直接生成多个相同操作系统的实例,因此需使用下面导入导出的方法
# 先关闭wsl
wsl --shutdown
# 导出备份tar
wsl --export Ubuntu-22.04 D:\wsl\tmp\ubuntu-22.04.tar
# 注销C盘里的旧实例
wsl --unregister Ubuntu-22.04
# 导入到D盘
wsl --import Ubuntu-22.04 D:\wsl\Ubuntu2204 D:\wsl\tmp\ubuntu-22.04.tar
2.4 WSL实例和Windows交换数据
直接路径访问
# \\wsl$\<发行版名>
\\wsl$\Ubuntu-22.04

直接使用命令
# Windows 盘符:/mnt/c/、/mnt/d/
cp /home/test.txt /mnt/d/data/
