关于 WSL

WSL | Windows Subsystem for Linux | Windows Linux 子系统

或许有人会问装 WSL 干嘛,WSL 更轻量,可以用来学习 Linux,做开发,且更方便与 Win 之间切换互通,我第一次了解到它是在 Win 上用 Docker 的时候,还有就是很好玩😋

关于终端软件

过程中要一直使用终端,可以直接用 Win 自带的终端,顺便也推荐几款终端:

Tabby

个人一直在使用,主要是现代美观,还是开源软件,可以配合插件,有中文

MobaXterm

有免费和收费两个版本,免费就够用了,听别人说好用,不过不怎么好看(个人感觉)

Termius

有手机版和桌面版,这个我多用在手机上连接 SSH,Github 的学生包里面有这个,看起来挺美观,但是没有中文

安装 WSL

1. 启用 Windows 功能

搜索“启用或关闭 Windows 功能”

WSL1.png

开启下面两项

WSL2.png

2. 安装 Linux 并将其移动到其他盘

开启终端 powershell,将 WSL 默认版本设置为 WSL2

1
wsl --set-default-version 2

再输入以下指令列出所有可选的版本

1
wsl --list --online

WSL3.png

新手推荐使用 Ubuntu,我日常用的是 Ubuntu-24.04,不过我也装了个 archlinux,喜欢折腾的可以试试,按自己的喜好选择即可,下面开始安装

1
2
3
wsl --install <自己选择的发行版的NAME>
# 例如
wsl --install Ubuntu-24.04

安装 WSL2 的时候可以使用 --location 指定安装位置,比如

1
wsl --install Ubuntu-24.04 --location D:\WSL\Ubuntu-24.04

等待安装,如果下载较慢可以更换网络环境

安装完成后根据引导创建用户设置密码

默认安装的发行版位置在 C:\Users\你的用户名\AppData\Local\wsl 如果后期安装的东西多了会很占空间,下面是未指定位置的迁移指南

输入 exit 退回 powershell,输入以下命令导出自己的发行版

1
2
3
wsl --export <发行版名称> <导出路径>
# 例如
wsl --export Ubuntu-24.04 D:\WSL\Ubuntu-24.04\Ubuntu-24.04.tar

然后注销原发行版,同时会删除默认位置的发行版

1
2
3
wsl --unregister <发行版名称>
# 例如
wsl --unregister Ubuntu-24.04

将导出的发行版导入到自己选择的位置

1
2
3
wsl --import <自己起的发行版名称> <导入位置> <导出的发行版.tar压缩包所在位置>
# 例如
wsl --import Ubuntu-24.04 D:\WSL\Ubuntu-24.04 D:\WSL\Ubuntu-24.04\Ubuntu-24.04.tar

现在就可以删除导出的 .tar 压缩包了(如果要做备份那可以保留)

下面是一些常用的 wsl 命令:

1
2
3
4
5
wsl --list --verbose # 或 wsl -l -v 列出所有已安装的发行版及使用的WSL版本
wsl --set-default <发行版名称> # 设置默认发行版,例如 wsl --set-default Ubuntu-24.04
wsl --shutdown # 关闭所有启动的发行版
wsl -d <发行版名称> # 进入发行版,例如 wsl -d Ubuntu-24.04
wsl # 进入默认发行版

3. 配置自己的发行版

用户问题

有时进入自己的发行版后可能是 root 用户,可能是你未创建其他用户,自己找教程创建,然后设置默认用户,打开配置文件

1
sudo vim /etc/wsl.conf

WSL4.png

下方即为设置默认用户,改为你的用户名

然后退出,在 powershell 输入命令重新开启进入

1
2
wsl --shutdown
wsl -d Ubuntu-24.04

详细配置

还有很多其他关于 wsl.conf(特定发行版设置,位于每个发行版的 /etc/wsl.conf)和 .wslconfig(全局设置,位于Windows C:\Users\你的用户名\.wslconfig)的设置,在这里我就不赘述了,具体配置方法参考微软文档 WSL 中的高级设置配置

推荐直接在开始菜单界面的全部应用里找到 WSL Settings,在图形化界面里进行全局设置,这样更加方便直观,而且每个设置项下方都有小字介绍

展示一下我的 .wslconfig (在 WSL Settings 里调整的设置好像不会显示在 .wslconfig 文件中)

1
2
3
4
5
6
7
[wsl2]
memory=4GB # 内存
processors=8 # 处理器数量
defaultVhdSize=30GB # 虚拟硬盘大小

[experimental]
sparseVhd=true # 使发行版虚拟硬盘只占用实际存储的大小,而不是预先分配的最大大小

sparseVhd=true 我也不太懂,貌似没什么用,启动时可能警告,如下:

1
2
3
wsl: 由于潜在的数据损坏,目前已禁用稀疏 VHD 支持。
若要强制分发使用稀疏 vhd,请运行:
wsl.exe --manage --set-sparse --allow-unsafe

替换镜像源

默认的源在国内用起来可能卡卡的,这时就需要替换为镜像源了

推荐使用换源脚本 LinuxMirrors

或手动换源:

  1. 备份原有源列表(可选)
1
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
  1. 编辑源列表文件替换为镜像源
1
sudo vim /etc/apt/sources.list.d/ubuntu.sources

将文件中的如下部分

1
2
3
4
5
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

替换为

1
2
3
4
5
Types: deb
URIs: http://cn.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

这样就好了,可以执行下方命令试试

1
sudo apt update && sudo apt upgrade -y && sudo apt autoclean && sudo apt clean && sudo apt autoremove

如果想在 WSL 中操作 Win 上的文件可以进入 /mnt,里面有 Win 的各个盘符的挂载文件夹。

关于 WSLg

可以在 Windows 系统上运行 WSL 中带图形界面的应用程序,直接在 WSL 中用命令运行带图形界面的应用程序即可,记得确保在 WSL Settings 中打开如下设置

WSLg.png

在 VS Code 中连接 WSL

可能有人用不惯终端编辑器,接下来简单说一下在 VS Code 中连接 WSL 进行文件编辑开发,要安装如下插件

VSC-WSL1.png

VSC-WSL2.png

然后就可以在左侧栏的远程资源管理器中连接 WSL 发行版了

VSC-WSL3.png

在 WSL 中使用 Docker

最好不要同时装 Docker Desktop 和 WSL 内的独立 Docker 引擎

1. 与 Docker Desktop 集成

先确保在 Windows 主机中安装了 Docker Desktop,并在设置中开启 Use the WSL 2 based engine

docker1.png

然后在如下位置打开 WSL 集成,勾选你想要使用 docker 的发行版,记得应用设置

docker2.png

现在你可以直接在 WSL 中使用 docker 拉取镜像创建容器了

下面介绍一些常用的 docker 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker images # 列出所有镜像,包括Windows中的镜像,这些全由 Docker Desktop 统一管理
docker container ls # 列出所有容器
docker volume ls # 列出所有卷
docker network ls # 列出所有网络

docker rmi <镜像名/镜像ID> # 删除镜像
docker container rm <容器ID> # 删除容器
docker volume rm <卷名> # 删除卷
docker network rm <网络ID> # 删除网络

docker pull <各种可选项> <容器名:标签> # 拉取镜像
docker ps # 查看运行中的容器
docker logs <容器名/容器ID> # 查看容器日志,可选各种参数,参数问AI

docker system prune # 清理 Docker 中不再使用的资源,慎用

2. 在 WSL 内安装独立 Docker 引擎

具体安装方法在这里不做介绍了,请参考 Docker 官方文档