问题
许多 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 系统上的引导程序和服务管理系统init
)systemd
。因此,今天(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 提供。