问题

问题

问题

许多 apt-get 安装失败,因为系统无法确定当前的运行级别

背景规格:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
$ uname -a
Linux systemName 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux

说明

我尝试在 WSL 上安装 virtualbox,但出现以下错误:

$ VBoxManage --version
WARNING: The character device /dev/vboxdrv does not exist.
         Please install the virtualbox-dkms package and the appropriate
         headers, most likely linux-headers-Microsoft.

我解决了这个问题按照以下步骤操作。到dpkg-reconfigure virtualbox-dkms

但后来我得到了以下信息:

dpkg: warning: version '*-*' has bad syntax: version number does not start with digit
It is likely that 4.4.0-43-Microsoft belongs to a chroot's host
Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.
invoke-rc.d: could not determine current runlevel

如何让invoke-rc.d返回正确的运行级别?

答案1

Windows Subsystem for Linux 1 (WSL 1) 只是一个兼容层用于在 Windows 上运行 Linux 二进制可执行文件。除此之外,它没有提供更多的功能。特别是在您的情况下,您遇到了两个不受支持的组件/功能:

运行级别

WSL 不作为操作系统的单独实例运行,因此没有简单的方法来支持引导程序和服务管理系统(例如真实 Linux 系统上的引导程序和服务管理系统initsystemd。因此,今天(2019 年 2 月)Ubuntu for WSL 仍然不支持运行级别。

Linux内核

这是您的情况的根本限制。 VirtualBox 作为虚拟机管理程序需要与操作系统的内核集成(使用内核模块)。 WSL 只是一个兼容层。没有真正的 Linux 运行(没有 Linux 内核)。因此 VirtualBox 无法为 WSL 编译其内核模块。

如果您想在 Windows 计算机上运行 VirtualBox,请安装 Windows 版本。您无法在 WSL 1 中运行 Linux 版本。

WSL 2 更新

自最初的答案撰写以来,WSL 2 就已存在。 WSL 2 的架构非常不同。它在 Hyper-V 虚拟机内运行完整的 Linux 内核。不幸的是,截至今天(2022 年 1 月),默认的 WSL Ubuntu 20.04 仍然不支持运行级别。

在 Windows 11 上,自 WSL build 20175 起,Intel 和 AMD CPU 都支持嵌套虚拟化(在 WSL 2 中运行像 KVM 这样的虚拟机管理程序)。也许通过一些调整,可以在 WSL 2 中运行 VirtualBox。似乎这种组合也不受官方支持由 Oracle 或 Microsoft 提供。

相关内容