You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 8下签名VirtualBox内核模块(vboxdrv、vboxnetflt、vboxnetadp、vboxpci)求助

CentOS 8下签名VirtualBox内核模块(vboxdrv、vboxnetflt、vboxnetadp、vboxpci)求助

嗨,我之前在CentOS 8开启Secure Boot的环境下也遇到过完全一样的问题!VirtualBox的内核模块因为没被UEFI信任所以加载失败,下面是亲测有效的手动签名步骤,跟着做就行:

  • 生成签名密钥对
    先创建自己的Machine Owner Key(MOK),这是UEFI用来验证模块签名的密钥。打开终端,以root身份执行:

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Your Custom Label/"
    

    把Your Custom Label换成你自己的标识(比如你的名字),这样后面在UEFI界面里能认出这个密钥。

  • 安装内核开发工具(如果需要)
    签名模块需要用到内核的sign-file工具,如果执行后续命令时报找不到这个工具,先安装对应版本的kernel-devel包:

    dnf install kernel-devel-$(uname -r)
    

    如果提示找不到包,可能是你的内核版本和软件源里的不一致,可以先更新内核再重启:

    dnf update kernel
    reboot
    

    重启后再重新安装对应版本的kernel-devel。

  • 签名所有VirtualBox内核模块
    找到VirtualBox模块的存放路径,用生成的密钥逐个签名:

    for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
      /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $modfile
    done
    

    这个命令会自动找到vboxdrv、vboxnetflt等所有相关模块并完成签名。

  • 将公钥导入UEFI的MOK列表
    现在要把生成的公钥告诉UEFI,让它信任我们签名的模块:

    mokutil --import MOK.der
    

    执行后会提示你输入两次临时密码,一定要记好这个密码!重启系统的时候会用到它。

  • 重启系统完成密钥 enrollment
    重启你的CentOS 8机器,这时候会进入一个蓝色的MOK管理界面(不会进入正常系统):

    1. 选择「Enroll MOK」选项
    2. 点击「Continue」确认
    3. 输入刚才设置的临时密码
    4. 选择「Reboot」重启系统
  • 验证模块加载并重新配置VirtualBox
    系统重启后,以root身份执行下面的命令验证模块是否能正常加载:

    modprobe vboxdrv
    

    如果没有报错,再重新运行VirtualBox的配置脚本:

    /sbin/vboxconfig
    

    这时候脚本应该能顺利完成,VirtualBox也就能正常启动虚拟机了!

备注:内容来源于stack exchange,提问作者Younes LAB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:53:18