WSL是适用于Linux的Windows子系统,相当于是在我们的Windows系统中安装一个小的Linux系统,WSL比起虚拟机或者双系统,无论是便利性还是性能上都有着不错的优势。
1,安装WSL2
首先我们要知道,一个完整的Linux操作系统发行版是由下列两大部分组成:
- Linux内核(bootfs):是整个操作系统的核心,负责管理系统的硬件资源,并提供用户空间程序与硬件之间的接口
- 发行版文件(rootfs,根文件系统):发行版文件提供了基本的系统命令和运行库等等
目前有这么多的Linux发行版,例如Debian、Ubuntu等等,它们的内核(bootfs)部分事实上都是一样的,只不过发行版文件(rootfs)不一样罢了。
同样地,WSL2也由这两部分组成,在安装时,WSL2会将一个完整的Linux内核和发行版文件一起安装。也因此,WSL2可以安装多个发行版,多个发行版文件会使用同一个内核。
事实上,Docker的镜像、容器原理和这个类似,镜像中只存放发行版文件(rootfs),而多个容器运行时都是共用的宿主机的内核。
在安装之前,记得先进入电脑主板BIOS中开启CPU虚拟化(VT
)功能,否则会导致WSL2安装或者运行失败。
在较新的Windows 10或者Windows 11系统中,都自带了wsl
命令,通过该命令安装,打开cmd
或者终端,执行下列命令安装:
wsl --install
这样,默认安装的是Ubuntu的发行版文件,如果想安装其它发行版,可以先通过下列命令查看有哪些可以用的发行版:
wsl -l -o
然后再在安装命令中通过-d参数指定要安装的发行版,例如我要安装Debian发行版:
wsl --install -d Debian
等待片刻其安装完成,可能会提醒你重启电脑,重启电脑后,会弹出WSL的命令行窗口要你设置Linux子系统中的用户名和密码:
依次要输入的是用户名、密码和确认密码,然后设置完成,这个时候,子系统就安装完成了!
后面也可以通过wsl --install -d 发行版命令安装多个发行版。
2,进入子系统
我们随时可以用下列命令进入子系统:
wsl -d 发行版名称
比如我安装的是Debian发行版,则:
wsl -d Debian
这样,就进入了子系统,你的终端也变成了子系统中的终端,如果安装了多个发行版,也可以同时开多个终端并通过上述命令指定发行版名并启动,输入exit
即可退出子系统。
这个Linux子系统和我们使用的真正的Linux系统几乎没有区别,安装完成后,大家可以像往常一样,设置软件镜像源,安装常用命令等等。
3,访问子系统文件系统
打开此电脑,就可以在左侧看到Linux这一栏,点击进入即可:
不过在对其中文件进行操作时需要注意文件权限问题,详情查看官方文档。
4,网络问题
如果你在子系统中运行了例如Nginx的网络服务器,直接在Windows上通过localhost
是可以直接访问的,访问对应端口即可。
5,常用操作
(1) 开启systemctl
支持
默认情况下,WSL2中的Linux子系统无法使用systemctl
命令,这会使得一些应用程序无法正常启动。可以通过修改配置文件的方式来启用该命令。
首先进入子系统,通过下列命令创建并编辑配置文件/etc/wsl.conf
:
sudo touch /etc/wsl.conf
sudo vim /etc/wsl.conf
若提示找不到vim
则安装一下即可,记得先完成软件镜像源配置,和普通Linux系统中一模一样,或者换用vi
命令也行。
然后在配置文件中加入以下内容:
[boot]
systemd=true
编辑完成后,用exit
命令退出子系统,并重启内核:
wsl --shutdown
然后重新进入子系统即可。
(2) 软件镜像源配置
子系统的软件镜像源配置和真实的Linux系统配置是一模一样的,以Debian系Linux为例,参考这篇博客。
(3) 子系统的命令自动补全
在进入子系统时,大家可能会发现无法使用Tab命令补全功能,同样地,还是配置软件源后,通过下列命令安装自动补全功能:
sudo apt install bash-completion
(4) 子系统中文环境配置
子系统默认是英文的环境,命令行输出的系统提示也都是英文的,因此我们也可以像普通Linux系统中一样设置中文语言环境,参考这篇博客。
(5) 关闭WSL2内核
即使是我们退出了子系统,WSL2的内核仍然是在后台运行的,这样会占用很多内存:
在Windows中打开cmd或者终端,执行下列命令即可关闭内核:
wsl --shutdown
下次再进入子系统时,内核也会自动启动。
(6) 卸载发行版
如果要卸载已安装的发行版,执行:
wsl --unregister 发行版名称
这样,你的子系统及其所有文件都会被删除,不过内核不会被删除,下次可以重新安装发行版。
(7) 导出和导入发行版
我们可以通过导出命令,将现有的发行版文件(包括所有用户数据)导出为一个tar文件将其备份,或者是转移到别的电脑上使用,导出命令如下:
wsl --export 发行版名称 "导出tar文件路径"
例如我将Debian发行版导出备份为C:\Users\swsk33\Downloads\debian.tar
文件:
wsl --export Debian "C:\Users\swsk33\Downloads\debian.tar"
恢复时,通过导入命令即可:
wsl --import 导入后发行版名称 "导入安装路径" "发行版tar文件"
例如我要将debian.tar
导入安装到C:\Users\swsk33\Downloads\deb
目录下,导入后发行版名称为Debian-recovery
:
wsl --import Debian-recovery "C:\Users\swsk33\Downloads\deb" "C:\Users\swsk33\Downloads\debian.tar"
所以,如果你的C盘空间不足,则可以通过先导出发行版、再注销发行版、最后导入安装至别的盘的方式即可实现转移发行版的安装位置。
参考: