Windows自带Linux子系统大家都知道,但是各种毛病还是很多的,整理了能开启符合正常使用习惯的WSL方法。原文链接:https://pa.ci/206.html
开启WSL2
虽然WSL已经更新到了第2版,但是目前win10默认的还是第1个版本,即Windows上的Linux应用而不是类似于虚拟机的独立系统。
开启WSL2的步骤如下,需使用管理员权限打开powershell执行命令:
- Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
复制代码
执行完成后,会询问是否重启,这里选择Y进行重启。重启后再次使用管理员权限打开powershell执行命令:
- wsl –set-default-version 2
复制代码
此时通过Microsoft store安装的Linux系统就是WSL2版本了,但是由于WSL2是独立内核,所以还需要执行以下命令更新内核,否则会出现WslRegisterDistribution failed with error: 0x800701bc错误:
- wsl –update
- wsl –shutdown
复制代码
至此,Linux子系统就是拥有独立内核的WSL2版本了,以Debian为例,neofetch信息如下图:
启用Systemd
WSL2默认使用init启动Linux系统的,但是目前绝大多数发行版都是用的systemd的。这导致很多服务都没法使用,比如在Debian/Ubuntu上的nginx和php-fpm等常用软件。所幸微软最近更新了这个功能,现在可以手动启用。
首先在powershell中执行
- wsl –version
复制代码
命令,确认wsl版本是大于0.67.6的。Win10 22H2进行过
- wsl –update
复制代码
之后,应该是1.0.0.0版本,如下:
- WSL 版本: 1.0.0.0
- 内核版本: 5.15.74.2
- WSLg 版本: 1.0.47
- MSRDC 版本: 1.2.3575
- Direct3D 版本: 1.606.4
- DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
- Windows版本: 10.0.19045.2311
复制代码
随后,在现有的Linux子系统内,在/etc/wsl.conf文件内添加以下内容(如果没有就新建一个):
- [boot]
- systemd=true
复制代码
修改完成后,在powerhell中执行
- wsl –shutdown
复制代码
以关闭linux子系统,随后再打开Linux子系统就会发现已经启用了systemd,使用
- systemctl list-unit-files –type=service
复制代码
将输出如下内容:
暂无评论内容