修复适用于 Linux 错误、问题和问题的 Windows 子系统

像所有软件一样,Windows 子系统 (WSL2)也有很多问题。在本指南中,我们将对Linux错误消息和代码的 Windows 子系统进行故障排除。(Windows Subsystem for Linux)

(Fix Windows Subsystem)修复适用于Linux 错误(Linux Errors)问题(Problems)问题的(Issues)Windows 子系统

这些是我们将针对Linux 错误消息(Linux Error Messages)代码的(Codes)Windows 子系统(Windows Subsystem)进行故障排除的消息。

  1. 看不到 WSL 2 的选项
  2. 错误:0x1bc
  3. 错误:安装时出现 0x80040306
  4. 无法从 Windows访问WSL文件(WSL)
  5. 无法启动WSL 2分发,只能在输出中看到“ WSL 2 ”
  6. 找不到命令
  7. 错误:0x80370102 无法启动虚拟机,因为未安装必需的功能
  8. 错误: Windows(Windows)更新后出现 0x80040154
  9. WSL 停止(WSL Stops)工作并出现 错误 0x80070003(Error 0x80070003)
  10. 在 WSL 中显示语言更改
  11. (Installation)Windows系统还原后的安装问题
  12. WSL 中无法访问 Internet
  13. 使用 Ping 时权限被拒绝
  14. 安装WSL 2(WSL 2)后无法启动
  15. 无法在分发服务器中运行Windows 命令(Windows Commands)
  16. ICS 已禁用
  17. Bash 挂了
  18. OpenSSH 服务器连接问题
  19. 找不到引用的程序集
  20. 更正(Correct)(与SSH相关的)权限错误

让我们详细谈谈它们。

1] 看不到 WSL 2 的选项

许多Windows用户抱怨说,即使他们的版本号为 1903,他们也看不到WSL 2的选项。当您的计算机尚未采用WSL 2的反向端口时,就会发生这种情况。

要解决此问题,您只需要检查更新( check for updates),就可以了。

2]错误:0x1bc

当“显示语言” (“Display Language” )或 “系统区域设置” (“System Locale” )未设置为 英语(English.)时,您可能会看到以下错误。

wsl --set-default-version 2

Error: 0x1bc

For information on key differences with WSL 2 please visit https://aka.ms/wsl2

要修复错误,您需要检查您的计算机上是否安装了内核。(Kernel)为此,请使用以下命令。

dir %SystemRoot%\system32\lxss\tools\kernel

如果您没有Kernel,请从aka.ms下载。确保以管理员身份下载并在您的机器上安装内核(Kernel)以修复错误。

3]错误:安装时出现0x80040306

修复适用于 Linux 错误、问题和问题的 Windows 子系统

如果您在安装时看到错误:0x80040306。要解决此问题,您需要禁用 旧版控制台。 (Legacy Console. )为此,请按照给定的步骤操作。

  1. 从开始菜单(Start Menu.)以管理员身份 打开 命令提示符 。(Command Prompt )
  2. 右键单击(Right-click)cmd 徽标并选择属性。(Properties.)
  3. 现在,取消选中使用旧控制台” (Use legacy console” ),然后单击确定。

最后,检查它是否解决了问题。

4] 无法从 Windows访问WSL文件(WSL)

如果您无法在Windows 上通过\\wsl$ 访问Windows Subsystem(Windows Subsystem) for Linux,这可能意味着 9P 协议文件服务器无法启动。

最简单的解决方法是更新您的计算机并启用“Windows Update 上的 Microsoft 产品更新”。 (“updates for Microsoft products on Windows Update”. )为此,您可以按照给定的步骤操作。

  1. 通过 Win + I.启动 设置 。(Settings )
  2. 单击 Update & Security > Advanced options.
  3. 使用切换禁用“在更新 Windows 时接收其他 Microsoft 产品的更新(Receive updates for other Microsoft products when you update Windows)”。

这将为您解决问题。

5] 无法启动WSL 2分发,只能在输出中看到“ WSL 2 ”

如果您的显示语言未设置为英语,则此错误是不可避免的。尝试启动WSL 2时,您将看到以下输出。

C:\Users\me>wsl

WSL 2

要修复该错误,您需要手动下载并安装内核。(Kernel)aka.ms/wsl2kernel下载该文件。安装内核(Kernel)以轻松修复错误。

6]找不到命令

这是他们在Linux中运行(Linux)Windows的 .exe 文件时看到的常见错误之一。尝试执行相同操作时,您可能会看到以下错误。

$ notepad.exe

-bash: notepad.exe: command not found

当 $PATH 找不到.exe文件时会发生这种情况。此错误的最佳解决方案是在终端(Terminal)中运行以下命令。

export PATH=$PATH:/usr/sbin

执行此操作并检查它是否修复了错误。

7]错误:0x80370102无法启动虚拟机,因为未安装必需的功能

许多人在尝试安装Linux分发器时遇到此错误。与以前的错误不同,此错误有多个解决方案。因此,系好安全带并阅读所有解决方案。

这些是您可以做的事情来修复错误:0x80370102, The virtual machine could not be started because an required feature is not installed。

  1. 启用 Hyper-V
  2. 启用硬件虚拟化
  3. 启用嵌套虚拟化

让我们详细谈谈它们。

启用 Hyper-V

如果没有Hyper-V,您将无法创建虚拟环境(Environment)。因此,请在以下步骤的帮助下启用它。

  1. 从 开始菜单(Start Menu.)打开 控制面板 。(Control Panel )
  2. 单击 Programs and Features > Turn Windows features on or off
  3. 向下滚动(Scroll)以找到Hyper-V,检查它,然后单击确定。

启用Hyper-V后,检查问题是否已修复。

启用硬件虚拟化

(Hardware Virtualization)尝试运行虚拟机时必须进行(Virtual Machine)硬件虚拟化。因此,如果您遇到错误:0x80370102,请尝试从 BIOS启用硬件虚拟化(enable Hardware Virtualization)以解决问题。

启用嵌套虚拟化

嵌套虚拟化(Virtualization)允许您在 VM 内运行Hypervisor。因此,如果您仍然面临错误,请尝试启用嵌套虚拟化(Virtualization)。为此,您需要以管理员身份运行PowerShell 并运行以下命令。(PowerShell )

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

让这个命令运行并检查它是否解决了问题。

8]错误: Windows(Windows)更新后0x80040154

对适用于 Linux 错误消息和代码的 Windows 子系统进行故障排除

如果由于Windows 更新(Windows Update)而禁用了适用于Linux的(Linux)Windows 子系统(Windows Subsystem),您可能会看到此错误。因此,要解决此问题,我们需要启用此选项。为此,请按照给定的步骤操作。

  1. 从 开始菜单(Start Menu.)启动 控制 。(Control )
  2. 单击 Programs and Features > Turn Windows features on or off
  3. 向下滚动以找到适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux),选中它,然后单击确定。

最后,重新启动计算机并检查问题是否仍然存在。

9] WSL 停止(WSL Stops)工作并出现 错误 0x80070003(Error 0x80070003)

如果 WSL 停止并出现此错误代码 0x80070003(error code 0x80070003),请使用本指南解决。

10]在WSL中更改显示语言(Display)

WSL会自动更改Ubuntu语言环境,使其与您的Windows计算机的语言相匹配。如果您不喜欢这个动作,请使用以下命令根据您的需要设置显示语言。

注意:以下命令会将语言更改为 en-US。

sudo update-locale LANG=en_US.UTF8

这样做并检查它是否解决了问题。

11] Windows系统还原后的安装(Installation)问题

如果您在Windows系统还原后遇到安装(Installation)问题,请尝试删除Windows Subsystem for Linux文件夹。以下是它的路径。

%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux

重新启动计算机,重新安装Bash并检查它是否解决了问题。

12] WSL 中无法访问互联网

许多用户报告说他们无法在WSL中访问(WSL)Internet。但是,解决方案可能比您想象的要容易。发生这种情况是因为您可能拥有任何第三方防病毒软件。由于防火墙阻止了互联网(Internet)。因此,要解决此问题,请删除防病毒软件,一切顺利。

13]使用Ping时权限被拒绝(Permission)

如果您无法在WSL中 Ping,则这意味着您没有管理权限。因此,您需要在具有管理权限的命令行解释器上运行具有管理权限的UbuntuLinuxBash.exe

希望这可以轻松解决问题。

14] 安装WSL 2(WSL 2)后无法启动

安装WSL 2(WSL 2)后无法启动的原因  仍然令人费解,但Microsoft正在尝试进行更新以全面诊断问题。但是,您可以做两件事,看看它是否能解决问题。

15] 无法在分发服务器中运行Windows 命令(Windows Commands)

Windows 应用商店(Windows Store)中的一些分销商并未完全优化以运行所有Windows 命令(Windows Commands)。您可能会收到以下任何错误。

-bash: powershell.exe: command not found
powershell.exe /c start

要修复此错误,请运行以下命令。

echo $PATH

现在,检查输出是否包含“/mnt/c/Windows/system32”,如果您遇到错误,那么很可能路径不存在。

现在,通过以下方式检查您的个人资料设置

cat /etc/profile

现在,检查路径(Path)分配是否以“#”开头,如果是,请注释掉该块。另外,检查wsl.conf是否存在并确保它没有appendWindowsPath=false. 如果是这样,请将其注释掉。

完成此操作后,您需要重新启动分发。您可以使用以下命令来执行此操作。

wsl -t <name of the distributor>

或者

wsl --shutdown

希望这个问题能得到解决。

16] ICS被禁用

没有ICS 或 Internet 连接共享(ICS or Internet Connection Sharing),WSL 就无法运行。主机网络服务 (HNS) (Host Network Service (HNS) )使用 ICSWSL 2构建基本虚拟网络,以创建NATDNSDHCP和主机连接共享。

要修复错误,我们需要启用ICS。因此,请按照给定的步骤启用ICS

  1. 从 开始菜单(Start Menu.)启动 服务 。(Services )
  2. 双击Internet 连接共享 (ICS), (Internet Connection Sharing (ICS), )如果它已停止,请单击 开始 。(Start )
  3. 最后,单击 Apply > Ok.

您还应该编辑一些策略。因此,启动 组策略编辑器 (Group Policy Editor )并导航到以下位置。

Computer Configuration > Administrative Templates > Network > Network Connections

并禁用以下策略。

  • 禁止(Prohibit)在您的DNS域网络上安装和配置网桥(Network Bridge)
  • 禁止在您的DNS域网络上使用Internet 连接防火墙(Internet Connection Firewall)
  • 禁止在您的DNS域网络上使用Internet 连接(Internet Connection)共享
  • 设置网络位置时要求(Require)域用户提升权限

17]重击挂起

Bash挂起或死锁并停止响应您的输入时,您可以重新启动计算机,因为这将修复错误或报告内存转储。后者可能会导致系统崩溃,因此,请在报告之前保存您的工作。

18] OpenSSH-Server 连接问题

如果您看到任何 OpenSSF-Server 连接问题,您需要做的第一件事是检查OpenSSH-Server是否正在运行。您可以使用以下命令来执行此操作。

sudo service ssh status

如果它没有运行,请使用以下命令启动服务。

sudo service ssh start

如果它正在运行,您应该使用以下命令重新启动服务并检查它是否解决了问题。

sudo service ssh restart

如果无法解决问题,请尝试在调试模式下启动SSHD 。在此之前,使用以下命令停止SSH服务。

sudo service ssh stop

现在,使用以下命令以调试模式启动SSHD

sudo /usr/sbin/sshd -d

希望这可以修复错误。

19]找不到引用的程序集

许多用户在尝试启用WSL附加功能时遇到“找不到引用的程序集” 。(“The referenced assembly could not be found”)如果您是其中之一,请尝试从控制面板启用(Control Panel)适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux )并更新您的计算机。希望(Hopefully)这将修复错误。

20]纠正(Correct)SSH相关)权限错误

如果您看到以下错误,请在此部分讨论解决方案。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.

要解决此问题,Microsoft建议您转到/etc/wsl.conf 文件并附加以下内容:

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

这将修复错误。在执行此操作之前,请确保您有足够的权限。

这些是一些适用于Linux 错误消息(Linux Error Messages)代码的(Codes)Windows 子系统(Windows Subsystem)及其故障排除技巧。我们希望它们能帮助您解决 WSL 错误、问题(Problems)问题(Issues)



About the author

我是一名计算机技术人员,拥有超过 10 年的经验和使用 Android 设备的经验。过去五年我也一直在办公室工作,在那里我学会了如何使用 Office 365 和 MacOS。在业余时间,我喜欢花时间在户外听音乐或看电影。



Related posts