You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Debian 12 Bookworm安装VirtualBox遇多类错误求助

Debian 12 Bookworm安装VirtualBox遇多类错误求助

问题背景

我刚从国内拿到一台Clevo PD70SND-G,装了Debian 12 Bookworm,现在想安装并使用VirtualBox来访问一台原本在Windows 10主机上创建的Ubuntu 22.04虚拟机,遇到了两个主要问题:

  1. /etc/apt/sources.list添加Debian官方源后安装VirtualBox,出现了依赖错误;
  2. 转而安装VirtualBox官网提供的Debian 12包后,VirtualBox管理器能正常打开,但启动虚拟机时提示内核驱动未安装,还出现了模块“未签名”的报错。另外,之前为了让NVIDIA GPU在Secure Boot开启状态下工作,已经创建过MOK签名文件。

解决方案

兄弟,你这情况是Secure Boot开启后内核模块必须签名导致的,加上Debian源的VirtualBox版本可能适配性问题,咱们一步步来解决:

一、先解决内核模块未签名的核心问题(适用于官网安装的VirtualBox)

既然你已经有MOK签名密钥了,直接复用它给VirtualBox的内核模块签名就行:

  1. 先确认当前内核版本,方便后续找模块和头文件:
    uname -r
    
  2. 找到你之前生成的MOK密钥文件(一般是MOK.privMOK.der,可能在/root或者你的用户目录下)
  3. 定位VirtualBox的所有内核模块:
    find /lib/modules/$(uname -r) -name vbox*.ko
    
  4. 逐个给这些模块签名(替换下面的密钥路径为你实际的路径):
    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /path/to/MOK.priv /path/to/MOK.der /path/to/vboxdrv.ko
    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /path/to/MOK.priv /path/to/MOK.der /path/to/vboxnetflt.ko
    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /path/to/MOK.priv /path/to/MOK.der /path/to/vboxnetadp.ko
    
  5. 重新加载VirtualBox内核模块:
    sudo modprobe vboxdrv
    
  6. 要是你找不到之前的MOK密钥了,就重新生成并注册:
    • 生成密钥:
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox Module Signing/"
      
    • 导入密钥到MOK:
      sudo mokutil --import MOK.der
      
    • 重启电脑,进入UEFI的MOK管理界面,按照提示完成密钥注册(记得输入你设置的密码)

二、修复Debian源安装时的依赖问题(可选,如果你想换回官方源安装)

如果之后你想从源安装VirtualBox,按照以下步骤操作:

  1. 先卸载当前的官网版VirtualBox:
    sudo apt purge virtualbox-*
    
  2. 安装对应内核的头文件(必须,不然模块编译失败):
    sudo apt install linux-headers-$(uname -r) build-essential dkms
    
  3. 添加VirtualBox官方源(比Debian默认源的版本更适配):
    • 导入签名公钥:
      sudo wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor -o /usr/share/keyrings/oracle-virtualbox-2016.gpg
      
    • 添加源到sources.list.d:
      echo "deb [signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bookworm contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
      
  4. 更新源并安装VirtualBox:
    sudo apt update && sudo apt install virtualbox-7.0
    
  5. 安装完成后,重复方案一的步骤给VirtualBox模块签名,就能正常启动虚拟机了

额外提醒

  • 检查Secure Boot状态:mokutil --sb-state,如果显示SecureBoot enabled,那所有第三方内核模块必须签名,这是你遇到问题的根本原因
  • 启动VirtualBox前,确保用户加入了vboxusers组:sudo usermod -aG vboxusers $USER,然后注销重新登录

备注:内容来源于stack exchange,提问作者Joshua E. Vines

火山引擎 最新活动