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

Fedora36重装后VirtualBox报rc=-1908内核驱动错误如何解决

Fedora 36 环境VirtualBox启动报rc=-1908错误排查解决

第一步:校验内核版本匹配性

该错误最常见的初始诱因是当前运行内核与安装的内核开发包版本不匹配,Fedora内核更新频率高,更新内核后未重启就安装依赖极易触发该问题:

  • 执行uname -r查询当前实际运行的内核版本号
  • 执行rpm -q kernel-devel kernel-headers查询已安装的内核开发包、头文件版本
  • 若版本不一致,二选一处理即可:
    • 重启系统,在启动菜单选择最新版本内核进入系统
    • 执行sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r),安装和当前运行内核完全匹配的开发包、头文件

第二步:补全编译依赖

VirtualBox内核模块需要完整的编译工具链才能正常构建,Fedora官方源缺失部分相关依赖,需先配置好RPM Fusion free、nonfree软件源,再执行以下命令安装全量依赖:

sudo dnf makecache
sudo dnf install -y gcc make perl dkms elfutils-libelf-devel qt5-qtx11extras zlib-devel

第三步:处理Secure Boot模块签名限制

Fedora 36默认启用EFI Secure Boot,未经过签名的第三方内核模块会被系统直接拦截加载,即使编译成功也无法正常调用:

  • 执行mokutil --sb-state检查Secure Boot状态,若返回SecureBoot enabled则必须完成模块签名流程:
    1. 生成MOK签名密钥对:
    sudo mkdir -p /var/lib/shim-signed/mok
    sudo openssl req -nodes -new -x509 -newkey rsa:2048 -outform DER -addext "extendedKeyUsage=codeSigning" -keyout /var/lib/shim-signed/mok/MOK.priv -out /var/lib/shim-signed/mok/MOK.der -days 36500
    
    执行过程中证书字段可随意填写,不影响签名功能。
    2. 导入公钥到MOK信任列表:执行sudo mokutil --import /var/lib/shim-signed/mok/MOK.der,按提示设置1-8位的临时注册密码,后续重启验证时使用。
    3. 重启系统,开机阶段会自动弹出蓝色MOK管理界面,依次选择Enroll MOK -> Continue -> Yes,输入之前设置的临时密码,确认后选择重启完成公钥注册。
    4. 系统重启后执行以下命令给所有VirtualBox内核模块签名:
    sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der $(modinfo -n vboxdrv)
    sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der $(modinfo -n vboxnetflt)
    sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der $(modinfo -n vboxnetadp)
    sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der $(modinfo -n vboxpci)
    
  • 若不需要Secure Boot,也可以直接进BIOS/UEFI设置关闭Secure Boot功能,跳过签名流程。

第四步:重新编译加载内核模块

  • 先清理之前失败的DKMS编译缓存:
    sudo dkms remove vboxhost/$(vboxmanage -v | cut -dr -f1) --all
    
  • 重新执行模块构建命令:sudo /sbin/vboxconfig,观察命令输出,无编译报错即为构建成功。
  • 手动加载核心模块:sudo modprobe vboxdrv,命令无任何输出即代表加载成功。
  • 验证模块状态:执行lsmod | grep vbox,返回结果中包含vboxdrv、vboxnetflt、vboxnetadp、vboxpci四个模块即为正常。

第五步:收尾权限配置

执行sudo usermod -aG vboxusers $USER将当前登录用户加入vboxusers用户组,执行完成后注销当前用户重新登录,避免普通用户无权限调用VirtualBox驱动。

常见异常处理

  • 若执行/sbin/vboxconfig时提示gcc版本不匹配,对比gcc --version和cat /proc/version输出的gcc版本号,安装和内核编译时一致版本的gcc即可。
  • 若之前通过官方run包安装过VirtualBox,会和rpm版本产生文件冲突,先执行对应run包的uninstall脚本卸载干净旧版本,再重新安装rpm版本即可。
  • 若加载模块时提示权限不足,优先检查是否完成Secure Boot签名流程,未签名模块在Secure Boot开启状态下会被直接拒绝加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:18:43