一、准备工作

1.1 开启WSL功能

在 Windows 搜索栏输入“启用或关闭 Windows 功能”,勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”,然后重启电脑。

1.2 设置默认版本

管理员身份打开 PowerShell,输入 wsl --set-default-version 2,确保后续安装使用 WSL2。

二、在C盘中安装Ubuntu20.04(默认LTS版本)

2.1 安装系统

使用科学上网,打开规则模式,根据网上一个博主的内容,他说如果没有科学上网可以使用wsl --install -d Ubuntu-20.04 --web-download,详情参考:https://www.bilibili.com/video/BV1tW42197za?spm_id_from=333.788.videopod.sections&vd_source=d281c2477c5b78e0ebea5a0b97d495d6

如果有科学上网,正常使用如下命令:
在 PowerShell 中输入 wsl --install -d Ubuntu-20.04

2.2 设置用户

安装完成后会自动弹出一个窗口,按照提示设置你的用户名密码
成功后一般会自动进入,可以输入lssudo apt update等命令进行验证。

2.3 验证安装

输入exit或者使用Ctrl + D退出当前Linux
输入 wsl -l -v
可以输入wsl -d Ubuntu-20.04启动
输入wsl --shutdown终止

如果还想安装其它的发行版,输入wsl --list --online即可查看要安装的内容,输入wsl --install <名称>即可安装,如果无科学上网,需要加上--web-download

三、迁移系统到E盘

3.1 关闭 WSL

在 PowerShell 输入 wsl --shutdown,确保系统完全停止

3.2导出备份

将系统打包成一个文件。
我在E盘建立了一个名为WSL的文件夹。
输入以下命令:

1
wsl --export Ubuntu-20.04 E:\WSL\ubuntu-backup.tar

3.3 删除原系统

注销 C 盘上的旧系统,释放空间。

1
wsl --unregister Ubuntu-20.04

3.4 导入到 E 盘

将备份文件解压到 E 盘的新位置。

1
wsl --import Ubuntu-20.04 E:\WSL\Ubuntu-20.04 E:\WSL\ubuntu-backup.tar --version 2

四、修复用户权限

迁移后,系统默认会以 root​ 用户登录。
如果你不想每次都用 root,需要设置回你之前创建的用户。

4.1 设置默认用户

在 PowerShell 中输入:

1
Ubuntu-20.04 config --default-user <yourusername>

如果上面的不行,可以使用下面的命令:

1
wsl -d Ubuntu-20.04 --user <yourusername>

如果都不行,可以先看看自己的用户名是不是一开始在C盘装的时候的用户名,如果是,就不用再搞了,说明已经成功了。

4.2 验证

直接在powershell中输入wsl或者打开一个Ubuntu终端,看用户名是否是自己设置的那个即可

五、删除备份文件

确认正常后,之前的.tar就可以删除了
.vhdx是镜像文件,Ubuntu系统的东西就是在这里面

六、字体问题

如果你也有这个问题,可以去Ubuntu官网上下载字体,网址是:https://design.ubuntu.com/font

运行UbuntuMono-R.ttf即可

七、启用systemd

systemd是现代 Linux 发行版默认的初始化系统和服务管理器。它的作用包括:

  • 管理开机启动项(服务)
  • 管理进程生命周期(启动、停止、重启)
  • 挂载文件系统、管理日志、处理硬件热插拔
  • 提供日志系统(journalctl)、用户登录管理等

在 WSL2 早期版本中,没有原生支持 systemd,导致很多依赖 systemd的服务(如 sshd、docker、systemctl命令)无法正常使用。

不过现在应该都默认配置了,我的就是默认配置的,可以在Ubuntu终端中输入:

1
sudo vi /etc/wsl.conf

里面应该有:

1
2
[boot]
systemd=true

如果没有就加上。
输入:

1
systemctl

如果输出一个列表,说明已经启用。

八、共享IP

WSL2 默认使用的是 NAT(网络地址转换)模式,它像一个“虚拟机”一样:

  • 有自己的独立 IP(如 192.168.128.1192.168.133.20
  • 与 Windows 不在同一个网络命名空间
  • Windows 可以通过 localhost访问 WSL2(因为 WSL2 会监听 127.0.0.1:端口并转发给 Windows)
  • WSL2 无法通过 localhost访问 Windows 服务,必须手动指定 Windows 的 IP(如 192.168.x.x

微软在 WSL 2.0.0+(0.67.6+)版本中引入了 “镜像网络”模式(Mirror Networking),可以让 WSL2 和 Windows 共享同一个网络栈,实现:

  • IP 地址完全一致(都是 Windows 的 IP)
  • localhost双向互通
  • 代理自动同步
  • 局域网设备可直接访问 WSL2 服务

8.1 创建/编辑配置文件

在 Windows 资源管理器的地址栏输入 %UserProfile%并回车,进入你的用户文件夹

在此文件夹下,创建一个名为 .wslconfig​ 的文件,用记事本打开,输入以下内容:

1
2
[wsl2]
networkingMode=mirrored

8.2 重启WSL

保存文件后,在 Windows 终端(PowerShell 或 CMD)中执行以下命令:

1
wsl --shutdown

等待几秒后,重新打开WSL,输入ifconfig,可以看到IP和Windows一样了。

九、安装Docker

9.1 下载与安装

我使用的是这个网址
https://github.com/tech-shrimp/docker_installer/releases/tag/latest

使用命令行安装:

1
start /w "" "docker_desktop_installer_windows_x86_64.exe" install --installation-dir=D:\Docker\setup

9.2 配置镜像源加速

点击设置,点击Docker Engine
找到这个,

1
2
3
4
5
6
7
8
9
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false
}

修改为:

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
34
35
36
37
38
39
40
41
42
43
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1ms.run",
"https://hub.rat.dev",
"http://mirror.azure.cn",
"https://docker.1panel.live/",
"https://mirror.ccs.tencentyun.com",
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1panel.live",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}