WSL2全名为 windows Subsystem for Linux 2 相比1更加完善
1.先决条件
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。
备注
若要检查 Windows 版本及内部版本号,选择 Windows 键 + R,然后键入“winver”,选择“确定” 。 可通过选择“开始”“设置”“Windows 更新检查更新来更新到最新的 Windows 版本。
2.安装
2.1 BIOS中开启虚拟化
第一步是打开主板BIOS的虚拟化选项,如果你是这几年新买的电脑,默认这项是打开的。注意这一项每个电脑主板型号的不同,设置的方法也不同。所以最好的方法,是你根据自己主板的型号,去百度或者Google去搜索一下开启虚拟话的方法。
进入到BIOS后,找到Configuration选项或者Security选项,然后选择Virtualization,或者Intel Virtual Technology,就可以开始你的操作了。<br />![Universal-01.jpg](https://cdn.nlark.com/yuque/0/2022/jpeg/25356591/1644750560047-951e5828-abd1-474b-a87b-ef1e006b1d0e.jpeg#clientId=u5c599032-7f65-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=u27ace808&margin=%5Bobject%20Object%5D&name=Universal-01.jpg&originHeight=234&originWidth=466&originalType=binary&ratio=1&rotation=0&showTitle=false&size=15581&status=done&style=none&taskId=ude3746f9-e22a-4f12-b2d3-ca5d363fb3f&title=)
然后回车,将其值设置成:设置为Enabled<br />![Universal-02.jpg](https://cdn.nlark.com/yuque/0/2022/jpeg/25356591/1644750564388-fc12bfe9-0c9f-4d57-aa39-bb450d59c562.jpeg#clientId=u5c599032-7f65-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=u61e76760&margin=%5Bobject%20Object%5D&name=Universal-02.jpg&originHeight=115&originWidth=464&originalType=binary&ratio=1&rotation=0&showTitle=false&size=9256&status=done&style=none&taskId=u722178b2-4e34-4961-8556-2ae0ac791b5&title=)
然后重启电脑。
2.2 正式安装(默认安装Ubantu,若要安装其他版本优先查看2.3)
在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。
wsl --install
此命令将启用所需的可选组件,下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版(默认安装 Ubuntu,请参阅下文更改此设置)。
首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到计算机上。 未来的所有启动时间应不到一秒。
上述命令仅在完全未安装 WSL 时才有效,如果运行
wsl --install
并查看 WSL 帮助文本,请尝试运行wsl --list --online
以查看可用发行版列表并运行wsl --install -d <DistroName>
以安装发行版。
2.3 更改默认安装的 Linux 发行版
默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d
标志进行更改。
- 若要更改安装的发行版,请输入:
wsl --install -d <Distribution Name>
。 将<Distribution Name>
替换为要安装的发行版的名称。 - 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:
wsl --list --online
或wsl -l -o
。 - 若要在初始安装后安装其他 Linux 发行版,还可使用命令:
wsl --install -d <Distribution Name>
。
如果要通过 Linux/Bash 命令行(而不是通过 PowerShell 或命令提示符)安装其他发行版,必须在命令中使用 .exe:
wsl.exe --install -d <Distribution Name>
或若要列出可用发行版,则使用:wsl.exe -l -o
。
2.4 开启Windows子系统功能
不同的windows版本可能设置方式有所区别,但是大体上是一样的。这里我以我电脑现在的版本演示一下。
打开设置。步骤是:1、点击windows图标。2、点击设置图标。
点击应用
点击程序和功能
点击启用或关闭Windows功能
找到这一条,打对勾确定就行了。
然后按照指示重启电脑(有的版本可能不用重启电脑)。
2.5 检查正在运行的 WSL 版本
可列出已安装的 Linux 发行版,并通过在 PowerShell 或 Windows 命令提示符中输入以下命令来检查每个发行版的 WSL 版本:`wsl -l -v`。
要在安装新的 Linux 发行版时将默认版本设置为 WSL 1 或 WSL 2,请使用命令 `wsl --set-default-version <Version#>`,将 `<Version#>` 替换为 1 或 2。
要设置与 `wsl` 命令一起使用的默认 Linux 发行版,请输入 `wsl -s <DistributionName>` 或 `wsl --setdefault <DistributionName>`,将 `<DistributionName>` 替换为要使用的 Linux 发行版的名称。 例如,从 PowerShell/CMD 输入 `wsl -s Debian`,将默认发行版设置为 Debian。 现在从 Powershell 运行 `wsl npm init` 将在 Debian 中运行 `npm init` 命令。
要在 PowerShell 或 Windows 命令提示符下运行特定的 WSL 发行版而不更改默认发行版,请使用命令 `wsl -d <DistributionName>`,将 `<DistributionName>` 替换为要使用的发行版的名称。
2.6 将版本从 WSL 1 升级到 WSL 2
要在以前安装的 Linux 发行版上从 WSL 1 更新到 WSL 2,请使用命令 `wsl --set-version <distro name> 2`,将 `<distro name>` 替换为要更新的 Linux 发行版的名称。 例如,`wsl --set-version Ubuntu-20.04 2` 会将 Ubuntu 20.04 发行版设置为使用 WSL 2。
默认情况下,新的 Linux 安装将设置为 WSL 2,但 `wsl --set-version` 命令也可用于从 WSL 2 降级到 WSL 1。 要查看 Linux 发行版是设置为 WSL 1 还是 WSL 2,请使用命令 `wsl -l -v`。
3. 安装Windows Terminal(选做/推荐)
Terminal是命令行操作的输入输出环境,Windows Terminal只是众多命令行终端中的一种,可以调动各种系统中的命令行解释器,达到一个多命令行终端聚合的一个作用,省去在各种命令行中切换的操作。最主要是:终端下的linux系统支持ctrl+c复制,ctrl+v粘贴!!!
具体步骤如下
- 进入软件商店
- 搜索Windows Terminal
- 点击获取即可安装!
4.问题
4.1 VMware与WSL2兼容问题
由于WSL2需要hyper-v,而VMware不支持hyper-v。
- 所以在需要WSL2的时候执行
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
这样会导致VMWare不能使用,出现**VMware Workstation和Device / Credential Guard不兼容**这样的错误。
- 这时候若想使用VMware,则需要将命令禁用
Disable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
重启电脑后就可以使用VMware了。
4.2 安装Ubuntu时候出现的错误
错误代码:
windows10 WslRegisterDistribution failed with error: 0xc03a001a
解决办法:
- 在C:\ Users <您的用户名> \ AppData \ Local \ Packages下进行搜索Ubuntu(一般以C开头)
- 对文件夹右键属性-高级,找到图中的红勾去掉,再去安装Ubuntu就可以了