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

VirtualBox Linux内核驱动异常重启后复发,Fedora用户求助

VirtualBox驱动重启后失效的解决办法(Fedora系统)

问题根源是Fedora默认开启Secure Boot,且内核更新频繁,之前的CentOS 8签名步骤未做永久密钥导入+内核更新自动签名,导致重启或内核更新后模块签名失效。以下是针对性解决步骤:

1. 确认Secure Boot状态

先检查系统是否开启Secure Boot:

mokutil --sb-state

如果输出为SecureBoot enabled,必须完成后续签名配置。

2. 创建并永久导入签名密钥

  • 生成有效期100年的密钥对(存放在/root目录下):

    openssl req -new -x509 -newkey rsa:2048 -keyout /root/MOK.priv -outform DER -out /root/MOK.der -nodes -days 36500 -subj "/CN=VirtualBox Modules/"
    
  • 导入密钥到系统的MOK(Machine Owner Key)数据库:

    mokutil --import /root/MOK.der
    

    执行后设置一个临时密码(重启时需要用到),然后立即重启电脑。

  • 重启后会进入MOK管理界面,按以下操作:

    1. 选择Enroll MOK → Continue
    2. 输入刚才设置的临时密码 → OK
    3. 确认密钥导入,选择Reboot完成。

3. 配置内核更新时自动签名VirtualBox模块

  • 创建签名脚本:
    sudo mkdir -p /etc/vbox
    sudo tee /etc/vbox/sign-vbox-modules.sh <<EOF
    #!/bin/bash
    MODULE_DIR="\$(dirname \$(modinfo -n vboxdrv))"
    PRIV_KEY="/root/MOK.priv"
    PUB_KEY="/root/MOK.der"
    
    if [ -f "\$PRIV_KEY" ] && [ -f "\$PUB_KEY" ]; then
        for modfile in "\$MODULE_DIR"/*.ko; do
            echo "Signing module: \$modfile"
            /usr/src/kernels/\$(uname -r)/scripts/sign-file sha256 "\$PRIV_KEY" "\$PUB_KEY" "\$modfile"
        done
    else
        echo "Key files not found!"
        exit 1
    fi
    EOF
    
  • 给脚本添加执行权限:
    sudo chmod +x /etc/vbox/sign-vbox-modules.sh
    
  • 创建systemd服务,让内核更新后自动执行签名:
    sudo tee /etc/systemd/system/vbox-module-sign.service <<EOF
    [Unit]
    Description=Auto-sign VirtualBox kernel modules after kernel update
    After=kernel-install.target
    
    [Service]
    Type=oneshot
    ExecStart=/etc/vbox/sign-vbox-modules.sh
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  • 启用服务:
    sudo systemctl enable vbox-module-sign.service
    

4. 手动修复当前系统的驱动问题

  • 卸载现有VirtualBox模块:
    sudo modprobe -r vboxpci vboxnetadp vboxnetflt vboxdrv
    
  • 执行签名脚本:
    sudo /etc/vbox/sign-vbox-modules.sh
    
  • 重新加载模块:
    sudo modprobe vboxdrv vboxnetflt vboxnetadp vboxpci
    
  • 重启VirtualBox服务:
    sudo systemctl restart vboxdrv
    

完成以上步骤后,无论重启还是内核更新,VirtualBox模块都会自动完成签名,不会再出现驱动加载失败的问题。

内容的提问来源于stack exchange,提问作者asdafdasdsfasdf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:35:45