1.启用wsl

首先是启用你的wsl,参考本站wsl安装centos8中的第一步安装wsl的教程。

启用wsl功能后,需要更新一下。如果默认的wsl --update命令很慢,可以考虑使用wsl --update --web-download命令。下载完毕更新后会弹出一个管理员权限确定框,选择是即可。

1
2
3
4
# 从微软商店下载wsl更新
wsl --update
# 更新 WSL,从 GitHub 而不是 Microsoft Store 下载最新更新
wsl --update --web-download

另外,建议设置wsl默认版本为wsl2,后续其他的操作会方便一些。

1
2
# 设置wsl默认版本为2,不然ubuntu可能安装失败
wsl --set-default-version 2

wsl1和2的区别在于,wsl2有完整的虚拟机内核,这一点很重要。在wsl1中,部分linux下的系统调用接口会因为没有完整内核而无法正常执行,或者代码无法正常通过编译。wsl2下就不会有此类问题。

2.安装ubuntu

在微软商店搜索ubuntu,根据你的需要安装指定的版本,我选择的是标明了版本号的Ubuntu 22.04.3 LTS版本。个人也比较推荐这个版本。

image.png

下载完毕后,在微软商店里面点击打开,会弹出一个新的终端,进行后续安装流程。

image.png

随后会提示你输入一个用户名,以及该用户名的密码。为了方便辨识不同的虚拟机,我直接将用户名设置为wsl了。密码随意设置,这个是虚拟机,不需要设置特别复杂的密码。

注意此处输入密码和linux系统里面输入密码的时候,都是不会有任何提示的,这是正常情况,输入之后回车就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wsl
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 4.4.0-22621-Microsoft x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

This message is shown once a day. To disable it please create the
/home/wsl/.hushlogin file.
wsl@7945R9P:~$

在wsl的linux终端中输入exit可以退出,回到windows的终端。

在windows的终端里面使用wsl -l -v命令可以看到当前安装的ubuntu虚拟机

1
2
3
PS C:\Users\S2522> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 1

注意这里的version是1,是因为我最开始的时候没有将wsl默认设置为wsl2,可以用如下命令进行版本的修改。如果wsl -l -v命令显示的version已经是2了,则不需要做额外操作。

1
wsl --set-version Ubuntu-22.04 2

如果你的ubuntu安装了之后没有出现上面贴出的初始化用户名和密码的步骤,可以参考下图执行wsl --unregister 虚拟机名字命令,卸载并删除已有虚拟机之后,重新运行开始菜单里面的ubuntu 22.04程序。

a6b79d75a4f4efc226b1eead4745e405.png

3.移动ubuntu安装位置

参考: WSL修改默认安装目录到其他盘

此时先不要急着做下一步,因为默认情况下这个wsl主机是安装在C盘的,对于Linux系统而言,后续用久了容易涨到30GB甚至更大的存储空间消耗。除非你的C盘有非常非常非常多的剩余空间,不然还是建议移动到其他盘去重新安装。

首先用shutdown命令关闭虚拟机

1
wsl --shutdown

随后用export导出命令将该虚拟机打包导出到一个存储路径中

1
wsl --export 虚拟机名字 导出文件路径

下面是一个示例命令,稍等片刻即可成功导出。

1
2
3
PS C:\Users\S2522> wsl --export Ubuntu-22.04 d:\wsl-ubuntu22.04.tar
正在导出,这可能需要几分钟时间。
操作成功完成。

使用wsl --unregister 虚拟机名字删除当前的虚拟机。注意删除虚拟机会将文件全部删除,一定要确保你的导出已经完成了再执行此命令。

1
wsl --unregister Ubuntu-22.04

把刚刚导出的tar文件,导入wsl中。此时可以选择我们需要的安装路径,并且指定wsl版本为2(在这之前需要执行wsl --update命令)。这里就可以指定一个非C盘的安装路径了。

1
wsl --import 虚拟机名字 安装路径 tar包路径 --version 2

注意,如果你的安装路径里有空格(比如Progarm Files文件夹),则需要用英文引号将路径给括起来。

如下所示,导入成功,并且版本为wsl2。导入后,原有导出的tar文件可以删除,不会影响虚拟机使用。

1
2
3
4
5
6
7
8
9
PS C:\Users\S2522> wsl --unregister Ubuntu-22.04
正在注销。
操作成功完成。
PS C:\Users\S2522> wsl --import Ubuntu-22.04 "D:\Program Files\WSL" "D:\Program Files\WSL\wsl-ubuntu22.04.tar" --version 2
正在导入,这可能需要几分钟时间。
操作成功完成。
PS C:\Users\S2522> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Stopped 2

查看一下这个安装路径,能在里面找到一个vhdx虚拟磁盘文件,这就代表我们移动安装目录成功了。不用担心自己的C盘被挤爆了。

image.png

使用wsl命令即可进入该虚拟机(如果虚拟机是关闭状态,wsl命令也会自动启动虚拟机)。

因为当前的wsl虚拟机不是从微软商店直接安装的,所以默认进入的是root用户,不建议大家在root用户在操作虚拟机,建议改成刚刚我们配置的子用户。

1
2
3
4
5
6
7
8
9
10
11
PS C:\Users\S2522> wsl
^EWelcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/root/.hushlogin file.
root@7945R9P:/mnt/c/Users/S2522#

输入exit回到windows的命令行,使用如下命令配置默认用户为刚刚我们初始化时设置的用户(当时我设置的用户名是wsl)。注意ubuntu2204是一个固定的命令,并非wsl虚拟机的名字。

1
ubuntu2204 config --default-user 用户名

这样配置了之后,wsl命令默认进入的用户就是你刚刚从微软商店下载时初始化的子用户了。

1
2
3
4
5
6
PS C:\Users\S2522> ubuntu2204 config --default-user wsl
PS C:\Users\S2522> wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

wsl@7945R9P:/mnt/c/Users/S2522$

4.ubuntu系统更新和安装必要软件包

上述操作执行完毕后,我们就有了一个完全可用的wsl2 ubuntu虚拟机了。

在ubuntu的命令行中,使用如下apt命令更新软件源,更新完毕后就可以自行下载你需要的软件包了。执行sudo命令会要求你输入密码,密码就是我们刚刚安装wsl时设置的密码。

1
sudo apt -y update && sudo apt -y upgrade

这里列出我自己需要使用的软件包的安装命令,这些软件基本都是必备的,可以安装一下。

1
sudo apt -y install vim git net-tools cmake make automake unzip wget curl g++ gcc

The end

后续就是Ubuntu的正常使用和Linux环境安装过程了,祝你使用愉快!