我正在尝试排除在最新 Windows 11 Pro 安装中运行的 WSL 2 中的 Ubuntu VM。
问题是当 Windows Defender 处于活动状态时,我的本地构建速度非常慢。设置如下:
Java、maven、docker 和代码都安装在 ubuntu vm 中。
我在 Windows 中使用 IntelliJ 2022.1 来运行并使用 wsl 路径构建项目:
\\wsl$\Ubuntu\home\<user>\<maven project>
这有效并从 VM 中识别出正确的 JDK 等。问题是“反恶意软件服务可执行文件”进程阻止了所有 I/O,导致构建速度极慢。(卡住了 40 分钟)
一旦我停用 Windows Defender 的实时保护,构建速度就会非常快 ->
https://medium.com/@leandrocrs/speeding-up-wsl-io-up-than-5x-fast-saving-a-lot-of-battery-life-cpu-usage-c3537dd03c74
这当然会导致系统基本上失去保护,这不是一个真正的长期解决方案。
我阅读了很多关于这个问题的文档和不同的帖子,但几乎所有的都是关于 WSL 1 的,并建议更改为 WSL2。特别是这个帖子有很多关于这个主题的信息:https://github.com/Microsoft/WSL/issues/1932
主要方法是将特定文件夹排除在 Windows Defender 扫描范围之外,该功能在 WSL 1 中存在,但在 WSL 2 中不再存在。这是因为 WSL 2 现在使用 ext4 映像并且不再公开本地文件夹。我对 WSL2 尝试了同样的方法。
最重要的一个是我的 VM 的一个:
\\wsl.localhost\Ubuntu
这不起作用,并且不会排除虚拟机内的项目被 Windows Defender 扫描。
有人知道如何从 WSL 2 VM 中排除文件夹/文件吗?
我的 Windows Defender 排除项
答案1
事实证明,微软有一种名为 Credential Guard 的东西,它使用基于虚拟化的安全性。例如,在 Defender 安全扫描中使用 Hyper-V。我无法说出它是如何或为何在我的计算机上启用的,但它使用 Hyper-V,即使可选的 Windows 功能被禁用。
我发现这只是为了尝试与 Oracle VirtualBox 中的新虚拟机进行比较。那里的虚拟化仅适用于软件模拟,因为 Hyper-V 处于活动状态(对于 Virtualbox 本机虚拟化,Hyper-V 必须处于非活动状态)。检查此线程以分析 Credential Guard 是否处于活动状态以及如何禁用它: https://social.technet.microsoft.com/Forums/en-US/8a1f9ba3-9d6b-439a-99a7-f2c318169f9c/why-is-the-hypervisor-running-even-after-hyperv-is-uninstalled-?forum=winserverhyperv
我不知道这个“功能”是如何启用的。在第二台安装了全新 Windows 11 和 WSL2 的 PC 上,这种情况不会发生。禁用它后,启用 Defender 后性能恢复正常。