在Debian 12 中安装了 VB ,一路顺利,没想到安装虚拟系统时出现错误。提示如下:
Kernel driver not installed (rc=-1908)
The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing
'/sbin/vboxconfig'
as root.
If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.
where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.
1、经过一番解读加搜索,得到如下答案:
该错误信息表明在尝试运行VirtualBox上的Debian 12时,遇到一个问题:内核驱动程序没有正确安装或设置。具体错误信息解释如下:
-
错误描述:“Kernel driver not installed (rc=-1908)”意味着VirtualBox需要的内核模块(例如vboxdrv)没有被正确安装或加载到你的Linux系统中。rc=-1908是一个返回代码,表示驱动程序未安装。
-
解决建议:错误信息建议你以root权限执行命令
/sbin/vboxconfig
来重新设置驱动。这个命令会尝试编译并安装VirtualBox的内核模块。你需要在终端中输入此命令,并确保有足够权限执行这一操作。 -
EFI Secure Boot问题:如果您的系统启用了EFI Secure Boot(一种安全启动机制),可能还需要对内核模块(vboxdrv, vboxnetflt, vboxnetadp, vboxpci)进行签名才能加载它们。这是因为Secure Boot会阻止未签名的驱动程序加载,以增强系统的安全性。你应该参考Linux发行版的官方文档来了解如何对这些模块进行签名。
-
技术细节:“where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908)”进一步说明了问题所在,即suplibOsInit初始化失败,并且给出了错误代码VERR_VM_DRIVER_NOT_INSTALLED,这意味着支持驱动程序没有安装。”On linux, open returned ENOENT.” 表示在Linux系统中尝试打开驱动程序时遇到了“不存在(No such file or directory)”的错误。
综上所述,为了解决这个问题,你需要先关闭Secure Boot(如果开启了的话)或者学习如何对内核模块进行签名,并通过运行/sbin/vboxconfig
命令来重新配置VirtualBox的内核模块。如果问题依旧,可能需要检查系统日志或寻求特定于你Linux发行版的支持论坛或文档的帮助。
2、赶紧启动root用户,运行命令 /sbin/vboxconfig
得到如下输出:
oot@PC:/sbin# ./vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
linux-headers-amd64 linux-headers-6.1.0-21-amd64
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
linux-headers-amd64 linux-headers-6.1.0-21-amd64
There were problems setting up VirtualBox. To re-start the set-up process, run
/sbin/vboxconfig
as root. If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.
3、又是一同查找加翻译,得到结论如下:
上述命令输出表明在尝试使用./vboxconfig
命令配置VirtualBox内核模块时遇到了问题。具体来说,系统提示缺少与当前内核版本匹配的Linux内核头文件(kernel header files),这是构建VirtualBox所需模块的前提条件。以下是详细的解读及解决步骤:
解读
-
停止与启动VirtualBox服务:首先,脚本尝试停止并重新启动VirtualBox服务,这是配置过程的一部分。
-
构建内核模块失败:系统指出当前不具备构建VirtualBox内核模块的条件,因为缺少必要的Linux内核头文件。
-
所需内核头文件提示:明确指出了可能需要安装的两个软件包名称,即
linux-headers-amd64
和linux-headers-6.1.0-21-amd64
,这两个包包含了为当前系统添加硬件支持所需的内核头文件。 -
EFI Secure Boot注意事项:最后,提示如果系统启用了EFI Secure Boot,可能还需要对生成的内核模块进行签名才能加载。
解决步骤
- 安装缺失的内核头文件:根据提示,使用包管理器(如
apt
对于Debian及其衍生版,如Ubuntu)安装推荐的内核头文件包。打开终端并执行以下命令:
bash
sudo apt update
sudo apt install linux-headers-amd64 linux-headers-6.1.0-21-amd64
注意:请根据你的实际内核版本调整上述命令中的版本号。如果提供的包名不准确,可以通过查询当前内核版本(使用uname -r
命令)并查找对应的内核头文件包。
- 重新配置VirtualBox:安装完内核头文件后,再次运行
vboxconfig
脚本来配置VirtualBox内核模块:
bash
sudo /sbin/vboxconfig
- 处理Secure Boot:如果系统确实启用了EFI Secure Boot,根据错误信息的指引查看Linux系统的文档,了解如何对VirtualBox的内核模块(vboxdrv, vboxnetflt, vboxnetadp, vboxpci)进行签名。这通常涉及使用系统提供的签名工具或密钥。
通过以上步骤,你应该能够解决内核模块构建失败的问题,并成功配置VirtualBox。如果在执行过程中遇到其他问题,可能需要进一步查阅VirtualBox的官方文档或社区支持。
4、期间又查了如何在VB中控制安全启动(secure boot)
关闭VirtualBox虚拟机中的Secure Boot功能通常需要在虚拟机的设置中进行操作,而不是在宿主机的BIOS设置里。这是因为Secure Boot主要是针对操作系统级别的安全启动机制,特别是对于像Windows这样的客户端操作系统。下面是关闭VirtualBox虚拟机Secure Boot的步骤:
-
打开VirtualBox:首先,启动Oracle VM VirtualBox Manager。
-
选择虚拟机:在VirtualBox的主界面中,从左侧的虚拟机列表中选择你想要修改的虚拟机。
-
设置菜单:点击顶部的“设置”按钮(或右键单击虚拟机名称,然后选择“设置”)来打开虚拟机设置对话框。
-
系统设置:在设置对话框中,选择“系统”选项卡。
-
固件类型:在“系统”选项卡下,找到“固件”部分。这里通常会让你选择BIOS或UEFI作为固件类型。如果想要调整Secure Boot设置,确保你的虚拟机设置为使用UEFI固件。
-
UEFI Secure Boot:如果UEFI选项可用,并且你已经选择了UEFI固件类型,应该可以看到一个关于Secure Boot的选项。取消勾选“Enable Secure Boot”复选框来关闭Secure Boot功能。
-
保存设置:完成设置后,点击“确定”或“应用”按钮保存更改。
请注意,不是所有版本的VirtualBox或所有类型的虚拟机都支持修改Secure Boot设置,尤其是如果虚拟机是为了特殊目的创建,如某些企业或教育环境下的预配置映像,它们可能锁定了这些安全设置。
如果你遇到问题或找不到相关选项,可能是因为你的虚拟机配置不支持Secure Boot修改,或者需要查阅VirtualBox的最新文档,确认你的VirtualBox版本是否支持此功能及具体的操作步骤。
最后,再次安装虚拟系统终于没有错误了:)
5、总结
捋一下,本来是想在VB安装一个debian 12来联系一下系统使用。结果,碰到 VB 中 提到的内核驱动安装错误,建议重新配置一下。即再次运行 vboxconfig ,它又提到内核头文件没有安装的错误。这就清楚了,是内核头文件缺失 -> 导致内核驱动安装失败 -> 导致 VB 安装虚拟系统失败。