无痛使用wsl

用 WSL ,当命令行糕手(x

无痛安装 WSL

启动WSL功能

在【控制面板 -> 程序 -> 程序和功能 -> 启用或关闭 Windows 功能】中勾选【适用于 Linux 的 Windows 子系统】

如果你的电脑里有用过 VMware ,需要把 hy­per-v 也勾上。

如果没有 hy­per-v ,请跳转自助填坑-1

在终端管理员里执行下面的两条命令

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

指定 wsl2 为默认版本

需要先下载更新包,直接 wsl --update

1
wsl --set-default-version 2

需要看一下自己的电脑版本是不是符合条件,wsl2要求 For x64 systems: Version 1903 or later, with Build 18362 or later.

win+R 输入 winver:

下载Ubuntu镜像

直接去微软商店里搜就行了。都是免费的

安装要挺久的,加上我之前代理有一点 bug,只能把代理关了才能用商店,啥事都干不了🥹

下载好之后就可以像打开一个软件一样打开 ubuntu ,在命令行里面操作辣。

好玩的

还在冲浪的时候看到给 WSL 配置代理的教程,发现有的佬说可以直接开 clash 的 TUN Mode。clash 主页也有提示,需要下载一个对应的插件工具,就可以无痛走代理了。

自助填坑

1-请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。

发生在启用 wsl 的时候

可以在任务管理器里查看自己的电脑是否开启了虚拟化,没开的话退回到第一步检查一下

大部分的解决方案都是说在 powershell 里面执行下面的命令

1
bcdedit /set hypervisorlaunchtype auto

这个适用于你的其他选项都正常只是没有开启 hyper-v 。很大原因是你的电脑上同时存在 VMware,而虚拟机会把你的 hyper-v 关掉。

但是问题是我根本没有 hyper-v 。

下载组件就好:

新建一个txt文件,把下面的内容复制进去

1
2
3
4
5
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

修改后缀为 cmd ,直接用管理员方式运行

安装完成之后,打开 Win­dows 功能,把 hy­per-v 打开,勾选上,重启电脑。

再来一次 bcdedit /set hypervisorlaunchtype auto

2-Ubuntu运行时报错 WslRegisterDistribution failed

wsl 版本不匹配,太低或太高,自行安装不同版本调整

3-wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

可能是因为我开了代理吧,需要处理一下

WSL 中有一个配置文件用于配置高级设置选项 .wslconfig ,这个文件默认是没有的,我们要手动创建。

这个文件需要保存在 C:\Users\<UserName>\.wslconfig 中,我们在这个目录里面创建 txt 然后改文件名 ( 这个操作不会有人不会吧!!) 。

创建文件后,填入以下内容并保存。

1
2
3
4
5
6
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

再打开 power shell,输入 wsl --shutdown,重新打开 WSL,就没有之前的提示了。

4-WSL和虚拟机的兼容

如果不兼容就是 vm 版本太低了,更新一下就好

或者每次使用之前开关 hy­per-v

反正我是不用做任何的操作就直接可以兼容的

5- 404 Not Found [IP: 127.0.0.1 7890]

因为是新的虚拟机嘛,配环境要下载一些工具,直接就来了库库报错,如下图:

我一看这不是我的代理地址吗?

这是 clash 给我整的本机的代理地址,但我不想要虚拟机使用这样的代理地址,所以需要关闭一下

可以通过这个命令来查看ubuntu的代理配置 env | grep -i proxy

大致内容有 http_proxy,HTTPS_PROXY 和 HTTP_PROXY 这三项内容中的一项或者多项,对应地使用命令将其全部删除即可,例如 unset HTTP_PROXY

wsl 和 windwos 互传文件

我肯定会忘所以放这里

在 windows 可以在文件资源管理器里通过 \\wsl$ 访问 WSL 分发版的默认用户。

也可以直接点那个 Linux 进入。

在 linux 里直接 cd /mnt/[对应盘符] 就可以访问到 windwos 主机的文件


无痛使用wsl
https://shmodifier.github.io/2024/06/29/无痛使用wsl/
作者
Modifier
发布于
2024年6月29日
许可协议