云网牛站
所在位置:首页 > Linux教程 > 在Windows WSL 1中运行Ubuntu 20.04会崩溃,附解决方法

在Windows WSL 1中运行Ubuntu 20.04会崩溃,附解决方法

2020-04-13 10:10:38作者:linux人稿源:开源中国站

如果你想在 Windows WSL 下运行 Ubuntu 20.04 版本,请仔细阅读本文,因为在 WSL 1 中运行 Ubuntu 20.04 会出现崩溃的情况。

 

关于 WSL 1

WSL,我们现在称为 WSL 1 的二进制转换层,为我们服务很好。WSL 1 为我们提供了几乎完整的 Linux syscall 支持,并且是一个稳定且成熟的平台。对于 WSL 用户而言,WSL 1 将继续是一个极好的选择。WSL 1 在低规格设备上的资源占用较小,并且简化了网络。许多企业和机构用户将在 WSL 2 发行之后的几个月甚至某些年内,使用仅 WSL 1 的 Windows 10 版本。WSL 1 是 Windows 10 Enterprise LTSC 和 Windows Server 2019 的一部分,它将在 2024 年之前得到支持。即使 Microsoft 的 WSL 团队将重点放在 WSL 2 上,我们也可以预期 WSL 1 将得到重要的修复。

参考:WSL 2和WSL 1最大的不同之处及新WSL命令、切换WSL 2与WSL 1的命令

 

前言

Ubuntu 论坛一个帖子指出[以下将附上截图],Windows 的 Linux 子系统 WSL 1 在运行 Ubuntu 20.04 LTS 时将会出现问题,提醒用户注意相关版本的使用。

问题来自 glibc 2.31 中的补丁,该补丁以类似于 UNIX 的方式实现了基于 CLOCK_REALTIME 的 nanosleep() 库调用。在 NT 内核上模拟 UNIX 系统时钟非常棘手。WSL 1 实现了最流行的基于时钟的系统调用,但并非全部都实现,并且没有将 CLOCK_REALTIME 支持构建到 nanosleep 中。

WSL 1 完全实现这一支持还需要一些时间,而除非是 Windows Insider 用户,否则可能几个月内都不会见到问题修复。没有此修复程序,WSL 1 上的 Ubuntu 20.04 往往会崩溃,甚至在升级到 Ubuntu 20.04 的过程中也会有问题。

用户可以怎么做呢?对于 WSL 1 用户,建议暂时停留在 Ubuntu 18.04 LTS,不向上升级到 Ubuntu 20.04。

对于 WSL 2 用户,Ubuntu 20.04 发布时可以随意升级,甚至更早就可以使用非稳定版本进行测试。

 

解决方法

对于升级到 WSL 2 的 WSL 1 用户,当 Ubuntu 20.04 可用时,应首先使用以下命令将 Ubuntu 18.04 镜像转换为 WSL 2:

$ wsl.exe --set-version Ubuntu 2

再将其升级到 Ubuntu 20.04。

而如果无论如何就是想要从 WSL 1 升级 Ubuntu 20.04,那么在升级前,先阻止 libc6 更新:

$ sudo apt-mark hold libc6

或者建议将 GNU coreutils 中的 sleep 替换为 busybox 中的 sleep 试试。

 

Ubuntu 20.04 and WSL 1 截图

在Windows WSL 1中运行Ubuntu 20.04会崩溃,附解决方法

 

相关主题

WSL 2比WSL 1更快获得Linux内核的最新改进,速度更快,附相关介绍

精选文章
热门文章