需要Windows10或以上系统版本。如果你的操作系统是Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11,并且你从来没有安装过WSL,你可以使用命令行简单的安装安装 WSL,使用管理员权限打开power shell运行 `wsl --install` 命令完成安装,

详细教程。

一、安装步骤

控制面板\程序\启用或关闭Windows功能

勾选这两个选项,点确定,之后重启计算机。

注:有的教程让打开这个,因为特别耗费资源试了一下,不用打开。

下载并运行 Linux内核更新包

1. 下载适用于 x64 计算机的 WSL2 Linux 内核更新最新包:(Intel处理器|ARM64)。可以在`设置\系统\系统信息\设备规格中查看是Intel还是ARM处理器。

2. 双击运行上一步中下载的更新包。

3.在PowerShall中输入命令`wsl --set-default-version 2`设置WSL2为默认版本。

下载Linux 发行版

1.打开 Microsoft Store,并选择你喜欢的 Linux 分发版,我下载的是ubantu。

2.打开在开始界面或其他地方点击运行 ubantu ,可能会出现错误或其他问题,我们在下面解决。

二、错误解决

如果上文第一步或第二步没有彻底完成,会有报错

Installing, this may take a few minutes…

WslRegisterDistributionfailed with error: 0x800701bc Error: 0x800701bc WSL 2 ???

https://aka.ms/wsl2kernel

Press any key to continue…

解决办法,仔细查看第一步第二步有没有遗漏的地方,全部完成后可能需要重启计算机。

重新打开Linux后,使用ifconfig命令发现无法使用

根据提示,使用命令安装网络工具:

sudo apt install net-tools

无法使用systemctl 命令

在发现无法使用systemctl命令后,出现如下报错:

root@**:c# systemctl status firewalld.service

System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down

以为是如上面的ifconfig命令一样没有安装,所以仿照上面的安装命令后出现如下报错:

root@**:c# sudo apt install systemctl

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:

The following packages have unmet dependencies:

init : PreDepends: systemd-sysv but it is not going to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

查阅相关资料后发现,可能是Windows Subsystem of Linux不使用 systemd 而是使用 SysVinit 应用来管理服务。输入下面命令后如果显示 init 或者 sysv ,就说明 这个Linux 系统使用SysVinit 来管理service。

ps -p 1 -o comm=

解决方法是使用 SysVinit应用的命令代替 systemd 应用的命令:

Systemd commandSysvinit commandsystemctl start service_nameservice service_name startsystemctl stop service_nameservice service_name stopsystemctl restart service_nameservice service_name restartsystemctl status service_nameservice service_name statussystemctl enable service_namechkconfig service_name onsystemctl disable service_namechkconfig service_name off

root@**:c# ps -p 1 -o comm=

init

root@**:c# service firewalld status

firewalld: unrecognized service

在进入Linux系统后无法使用cd 命令跳转到C盘,报错

root@**:**# wsl -l -v

-bash: cd: c: No such file or directory

查阅相关资料后发现,WSL的C盘挂载在`/mnt`目录下,需要在盘符前加上 `/mnt` 才能正常使用。

root@**:**# cd /mnt/c

root@**:c#

三、使用技巧

查看WSL的版本状态:在PowerShell下输入命令 `wsl -l -v`

Linux子系统的根目录位置:`C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs`

参考资料:

[1] 找了很多资料不是很统一,最有用的还是微软自己的教程旧版 WSL 的手动安装步骤 。

[2] ifconfig配置参考:https://blog.csdn.net/qq_16933601/article/details/115430863

[3] 解决systemctl 问题的参考:https://linuxhandbook.com/system-has-not-been-booted-with-systemd/

查看原文