首先,您可能能够以稍微不同的方式解决您的防火墙问题。我不能肯定地说(事情总是在变化),但根据我的经验,防火墙/防御者只检测和阻止 WSL1 应用程序。这至少对于恶意软件/防病毒检测是正确的,但我相信它也会扩展到防火墙功能。另一方面,如果没有,那么将实例移动到其他目录可能对您的问题没有帮助。
您可以使用wsl -l -v
. 如果它是版本 1,那么让我们尝试将其转换为 2(如果您的系统具有该权限)。
无论您只是转换实例还是移动它,这里的第一步都是相同的:
首先,退出您的 WSL/Debian 实例,然后发出wsl --shutdown
. 您可以从 PowerShell、CMD 或开始菜单执行此操作;但我将假设您在 PowerShell 中的其余说明。
在 PowerShell 中运行以下命令:
cd <your exclusion directory>
mkdir wsl\images
cd wsl\images
wsl --export Debian 2021-11-02_Debian_backup.tar
假设您的实例是 WSL1 并且您想尝试转换为 WSL2,那么您至少现在有一个备份。运行wsl --set-version Debian 2
将其转换为 WSL2。然后启动它,看看node
行为方式是否有任何差异。当然,您始终可以使用 将其转换回来wsl --set-version Debian 1
。
如果您仍需要尝试移动它:
cd <your exclusion directory>\wsl
mkdir instances\debian_exclude
wsl --import debian_exclude instances\debian_exclude images\2021-11-02_Debian_backup.tar --version 2
wsl -d debian_exclude
请注意,您当然可以随意调用文件名和目录。另请注意,您可以在导入时更改版本号。在那里选择您需要的任何 WSL 版本。
您现在应该在一个新的 Debian 实例中,但默认情况下您将以 root 身份运行。您需要通过以下方式创建导入实例的默认用户/etc/wsl.conf
:
[user]
default=<your_wsl_username>
退出实例,运行另一个wsl --shutdown
,然后重新启动。您现在应该以普通用户身份运行。在那里再试node
一次,看看新位置是否允许将其从防火墙规则中排除。
如果一切都按预期工作,您可以wsl --unregister Debian
删除旧实例。请注意,这将删除实例中的所有文件,因此请确保您的备份和新实例首先拥有您需要的一切。
取消注册旧实例应该将新实例设置为您的默认值,但如果没有,您可以使用wsl --set-default debian_exclude
.