温馨提示×

如何在Ubuntu上升级VirtualBox内核

小樊
48
2026-01-08 15:19:02
栏目: 智能运维

在 Ubuntu 上升级 VirtualBox 内核的正确做法

一、先明确目标与原则

  • 升级内核后,需要让 VirtualBox 的内核模块(vboxdrv/vboxnetflt/vboxpci) 针对新内核重新编译并加载;这通常通过 DKMS 自动完成。
  • 不要手动编译 VirtualBox 内核模块;使用包管理器安装 virtualbox-dkms 并执行重建命令即可。
  • 若你只是想“升级内核”,请使用发行版仓库或主线内核 PPA;若是“升级 VirtualBox 程序”,请使用官方仓库的 VirtualBox 包,二者不要混淆。

二、升级内核的标准流程

  • 更新索引并安装最新通用内核与头文件(推荐):
    • sudo apt update
    • sudo apt install linux-image-generic linux-headers-generic
    • sudo reboot
  • 如需更新到“主线”最新内核(可选,适合需要新特性的场景):
    • 前往 kernel.ubuntu.com/~kernel-ppa/mainline/ 下载对应架构的 linux-image-…_amd64.deb、linux-headers-…all.deb、linux-headers-…-generic…_amd64.deb
    • 安装:sudo dpkg -i linux-*.deb
    • 更新引导:sudo update-grub
    • 重启后选择新内核启动
  • 说明:安装新内核时通常会自动处理 DKMS 模块;若未生效,再按第三节手动重建 VirtualBox 模块。

三、在新内核上重建 VirtualBox 内核模块

  • 安装或修复 DKMS 与头文件(确保与新内核版本一致):
    • sudo apt install --reinstall virtualbox-dkms linux-headers-$(uname -r)
  • 重建并加载 VirtualBox 内核模块:
    • 推荐:sudo /sbin/vboxconfig(较新的封装入口)
    • 或:sudo /etc/init.d/vboxdrv setup(旧入口,部分系统仍可用)
  • 验证模块就绪:
    • lsmod | grep vbox
    • systemctl status vboxdrv.service
  • 若重建失败,检查日志定位问题:
    • less /var/log/vbox-install.log
    • 常见原因是缺少当前内核头文件或编译环境,按提示安装对应 linux-headers-$(uname -r) 后重试。

四、常见报错与快速修复

  • 报错示例:
    • “Kernel driver not installed (rc=-1908)” 或 “/dev/vboxdrv 不存在”
    • “modinfo vboxdrv” 找不到模块
    • “vboxdrv: version mismatch” 版本不一致
  • 快速修复步骤:
    • 安装头文件与 DKMS:sudo apt install linux-headers-$(uname -r) virtualbox-dkms
    • 重建模块:sudo /sbin/vboxconfig 或 sudo /etc/init.d/vboxdrv setup
    • 若仍提示版本不一致,检查 VirtualBox 程序版本与内核模块版本是否匹配,必要时升级 VirtualBox 到与模块一致的版本后再重建
    • 查看详细错误:cat /var/log/vbox-install.log
    • 临时回退:在 GRUB 启动菜单选择旧内核启动,确认问题后再处理新内核模块重建

五、补充建议

  • 优先使用发行版仓库或 HWE 内核,减少与 VirtualBox 的兼容性问题。
  • 避免混用不同来源的 VirtualBox 包(如同时从 Ubuntu 仓库与 Oracle 官网安装)。
  • 若你是在虚拟机里升级内核,确保宿主机虚拟化支持开启,并为虚拟机分配足够资源(编译内核非常耗时耗资源)。

0