WSL 上的 Ubuntu 22.04 LTS:安装软件包时出现“无法检索可用的内核版本”/“无法检查处理器微码升级”

WSL 上的 Ubuntu 22.04 LTS:安装软件包时出现“无法检索可用的内核版本”/“无法检查处理器微码升级”

我刚刚为 Windows Subsystem for Linux 安装了 Ubuntu 22.04 LTS,但遇到了一些问题。每次我使用 安装新软件包时sudo apt install,我都会收到 2 条消息,内容如下:

Failed to retrieve available kernel versions.
Failed to check for processor microcode upgrades.

使用 Ubuntu 20.04 LTS 时不会发生此问题。

尽管我收到了这些消息,但我可以安装 Linux 软件包并将其成功集成到 Visual Studio Code 中。当我使用 检查内核时uname -r,我得到了5.10.102.1-microsoft-standard-WSL2

一切正常,但是这些信息一直让我担心。

我想知道为什么会出现这些消息以及如何修复它们。有人能给我一些建议来解决这些问题吗?这些消息是致命的吗?

在此处输入图片描述

答案1

简短回答:

sudo -e /etc/needrestart/needrestart.conf

注意:-e使用默认系统编辑器。如果你想使用其他编辑器,只需运行sudo update-alternatives --config editor

取消注释并更改以下设置:

$nrconf{kernelhints} = 0;
$nrconf{ucodehints} = 0;

安装软件包时您将不再收到这些警告。

更多细节:

这与同一“问题”的背景类似发生在 Raspberry Pi 上,但根本原因略有不同。

真的没什么可担心的。这是 Ubuntu 在安装软件包后进行的(最近)新检查,以确定是否需要采取其他操作。

处理此问题(并导致这些警告)的软件包是needrestart。来自apt show needstart

Description: check which daemons need to be restarted after library upgrades
 needrestart checks which daemons need to be restarted after library upgrades.
 It is inspired by checkrestart from the debian-goodies package.
 
 Features:
  - supports (but does not require) systemd
  - binary blacklisting (i.e. display managers)
  - tries to detect required restarts of interpreter based daemons
    (supports Java, Perl, Python, Ruby)
  - tries to detect required restarts of containers (docker, LXC)
  - tries to detect pending kernel upgrades
  - tries to detect pending microcode upgrades for Intel CPUs
  - could be used as nagios check_command
  - fully integrated into apt/dpkg using hooks

由于我们在 WSL2 VM 内的容器中运行 Ubuntu(我们无法访问),因此在 WSL2 下,内核和微代码都无法正确报告。但是,根据上述信息,可能在某些情况下它可能会派上用场,具体取决于您运行的其他守护进程或容器。

您可以继续使用其余功能,而无需使用上述配置文件更改进行内核/微码检查。它们是否有用取决于您的 WSL2 用例。

或者,如果您发现额外的输出没有用处,您可以通过以下方式完全删除该功能(按照 Raspberry Pi 问题中的指导):

sudo apt-get purge needrestart

就我个人而言,我还不确定将此软件包作为 WSL2 默认 22.04 根文件系统的一部分是否真的有意义。但时间会证明一切。不过,我确信很多人在开始在 WSL 中安装 22.04 时都会有这个问题。

WSL1 用户

但是,如果您使用的是 WSL1,我在此阶段的调查建议是完全删除该软件包。用于检查过时软件包的过程似乎在 WSL1 的系统调用转换“伪内核”下不起作用,并且您会定期收到有关运行过时的二进制文件和库的needrestart误报,包括、和(等等)。needrestartshaptinit

相关内容