在 VirtualBox 中安装 Linux 驱动的完整步骤
一 宿主机内核驱动 vboxdrv(解决 rc=-1908 等)
- 安装必备组件(Debian/Ubuntu 示例):
- sudo apt-get update
- sudo apt-get install dkms linux-headers-$(uname -r) build-essential
- 重建并加载内核模块:
- 新版本 VirtualBox:sudo /sbin/vboxconfig
- 旧版本或兼容脚本:sudo /etc/init.d/vboxdrv setup
- 若仍提示权限或找不到设备,检查并加载模块:
- lsmod | grep vboxdrv
- sudo modprobe vboxdrv
- 将当前用户加入 vboxusers 组(解决权限/设备访问问题):
- sudo usermod -aG vboxusers $USER && sudo reboot
- 若提示虚拟化未启用(如 VERR_VM_DRIVER_NOT_INSTALLED),进入 BIOS/UEFI 开启 VT-x/AMD-V。以上步骤可修复宿主机侧驱动未安装或版本不匹配导致的启动失败。
二 启用 Secure Boot 时的签名问题处理
- 现象:执行 modprobe vboxdrv 报错 “Required key not available”。
- 处理步骤:
- 安装 MOK 工具:sudo apt install mokutil
- 禁用验证并注册密钥:sudo mokutil --disable-validation,按向导设置密码
- 重启,在 MOK 界面选择 “Enroll MOK” → “Change Secure Boot state”,按提示输入密码的指定位置字符
- 选择 “Disable Secure Boot? Yes”,再次重启
- 进入系统后执行:sudo modprobe vboxdrv
- 说明:这是 Secure Boot 强制驱动签名所致,注册 MOK 后可正常加载未签名的内核模块。
三 客户机增强功能 Guest Additions(剪贴板、共享文件夹、分辨率自适应)
- 安装前准备(客户机内执行,确保与当前内核匹配):
- Debian/Ubuntu:sudo apt-get install build-essential linux-headers-generic
- RHEL/CentOS/Fedora:sudo yum install gcc make kernel-headers kernel-devel
- 其他发行版请安装对应的 “gcc/make/kernel-headers/kernel-devel” 包
- 安装步骤:
- 在虚拟机菜单:Devices → Insert Guest Additions CD image
- 挂载并运行安装脚本:
- sudo mount /dev/cdrom /mnt
- cd /mnt && sudo sh VBoxLinuxAdditions.run
- 如需为已安装的其他内核构建模块,可运行:sudo /sbin/rcvboxadd quicksetup all
- 重启客户机:sudo reboot
- 验证与使用:
- 共享文件夹自动挂载到 /media/sf_<共享名>(需将用户加入 vboxsf 组:sudo usermod -aG vboxsf $USER)
- 剪贴板、拖放与动态分辨率应已可用。以上步骤可解决客户机侧驱动与集成功能缺失问题。
四 常见问题快速排查
- 报错 “Kernel driver not installed (rc=-1908)”:安装 dkms 与当前内核 headers,再执行 vboxconfig 或 /etc/init.d/vboxdrv setup,必要时 sudo modprobe vboxdrv。
- 升级内核后无法启动虚拟机:对新内核执行 sudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms,随后 sudo modprobe vboxdrv。
- 启动报 “VERR_VM_DRIVER_NOT_INSTALLED”:在 BIOS/UEFI 启用 VT-x/AMD-V,并确认宿主机驱动已正确加载。
- 客户机增强功能编译失败:提示 “Kernel headers not found” 时,安装匹配当前内核的 kernel-headers/kernel-devel(如 kernel-uek-devel),再运行 VBoxLinuxAdditions.run 或 rcvboxadd 重建模块。