我正在尝试在 Windows Bash(测试版)中安装 VirtualBox,但收到以下持续错误消息:
somasundaram@host:~/kernel34$ 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-3.4.0+.
You will not be able to start VMs until this problem is fixed.
4.3.36_Ubuntur105129
我还尝试安装 3.4.1 的 Linux 头文件并重新配置
somasundaram@host:~/kernel34$ sudo dpkg-reconfigure virtualbox-dkms
但无济于事。
答案1
VirtualBox 很大程度上依赖于它所运行的硬件,并且它无法理解 Windows 上的 Bash。在 BoW 上运行 Vbox 从来不是 Canonical、Microsoft 或 Oracle 的意图。
正如解释的那样微软:
这是一套开发者工具集,可帮助您为所有场景和平台编写和构建所有代码。”它不是完整的 Ubuntu 虚拟机。您不能像在 Linux 上那样使用它来托管服务器。
它只是一个开发人员工具集;仅此而已。
您需要在硬件层面进行更改才能实现此功能。可能 Oracle 和 Microsoft 都需要进行更改。
以目前的技术,我认为这是不可能的。
顺便说一句,如果你认为你有足够的能力解决这个问题:你发布的通知是关于两件事
- 字符设备
/dev/vboxdrv
不存在。请安装 virtualbox-dkms 包 - 和适当的标题,最有可能是linux-headers-3.4.0+。
您可能可以virtualbox-dkms
使用进行安装apt
。另外,您需要检查您拥有哪些标头。一般来说,您可以使用以下方式安装这些:
apt-get install linux-headers-`uname -r`
dpkg-reconfigure virtualbox-{numbers}
如果 uname -r 显示 3.4。否则您需要自己插入数字。
如果你能让这 2 个程序运行,那么你可能已经离目标很近了。不过我怀疑你能否让第二个程序运行(vBox 无法安装在它不适用的系统上)。
答案2
Windows Bash 是不是Linux。Windows Bash 基本上是一个 API 模拟,它允许您运行一些 Linux 二进制文件,前提是它们不执行任何操作特别的换句话说,Windows 模拟了 Linux ABI 中更常用的部分,足以完成一些简单的操作,例如打开文件、读取和写入内容以及执行网络 I/O。但是,诸如与硬件交互(VirtualBox 通常所做的操作)或甚至与某种帧缓冲区交互(X 需要,因此 Unity 也需要,但您可以绕过这一点)之类的操作无法模拟,并且会失败。VirtualBox 想要构建一个设备驱动程序 - 使用此模拟模型根本不可能实现,因为没有可以为其构建的内核。因此,内核头文件或 dkms 模块的安装将失败。
TLDR:Windows 上的 Windows Bash 之于 Linux 就如同 Linux 上的 wine 之于 Windows。
答案3
Windows 上的 Bash 没有 Virtual Box 所需的 Linux 内核。它所做的只是提供与 Bash 类工具对 Linux 内核的期望类似的功能。
更具体地说,Windows 上的 Bash 只是提供了一些 GNU 工具,可以在模拟 Linux 内核的 Windows 子系统上运行。
由于没有内核,因此 Virtual Box 不会有模块。因此,安装会失败,无法安装。
答案4
我意识到这是一个老问题,但如果你使用 Vagrant,似乎有一个解决方法。根据流浪汉,如果你在 WSL 中安装 Vagrant,它可以与常规的 Windows Virtualbox 安装一起使用。具体来说,他们指出
Vagrant 将检测它何时在 WSL 中运行,并调整其定位和执行第三方可执行文件的方式。例如,当使用 VirtualBox 提供程序时,Vagrant 将与安装在 Windows 系统上的 VirtualBox 交互,而不是在 WSL 中。确保任何所需的 Windows 可执行文件在您的 PATH 中可用以允许 Vagrant 访问它们非常重要。
我链接的文章有更详细的信息。