pve-ubuntu22.04虚拟机直通GPU
pve-ubuntu22.04虚拟机直通GPU
NVIDIA 官方驱动和 Ubuntu 自带的 nouveau 驱动互斥。当 nouveau 先加载并控制了你的 RTX 2060 后,nvidia 模块就会因为设备已被占用而报 No such device``modprobe: ERROR: could not insert 'nvidia': No such device 这个报错,结合 lspci 能看到显卡,说明模块文件编译成功了,但加载时被底层驱动“抢了先”。
简单来说,DKMS 的作用是让 NVIDIA 驱动能在内核升级后自动重新编译,避免你每次系统更新后都面临“驱动失效、黑屏、手动重装”的麻烦。
没有 DKMS 会怎样?
NVIDIA 驱动包含的核心部分叫做内核模块(如
nvidia.ko)。它必须针对你正在运行的特定内核版本进行编译,才能加载运行。
- 一次性编译:如果你直接安装预编译好的驱动包,它只适用于安装时的那一个内核版本。一旦系统更新内核,旧驱动模块就无法被新内核加载,图形界面可能会崩溃。
- DKMS 的动态编译:DKMS 是一个框架,它把驱动源码放在系统里。当检测到新内核时,它会自动调用编译器,为新内核重新构建并安装这个模块。
为什么要装
linux-headers-$(uname -r)?DKMS 本身只是个“调度员”,真正编译需要内核头文件(Headers)。这些文件包含了内核的接口定义,是编译任何内核模块的“图纸”。
你命令里的
linux-headers-$(uname -r)精确匹配当前正在运行的内核版本,确保 DKMS 能构建出当前能立即加载的模块。如果只装通用的头文件包,可能因为版本不匹配导致编译失败。
虚拟机配置
1、屏蔽开源驱动
1 | # 查看是否被驱动占用显卡 |
2、安装驱动
1 | sudo apt install -y dkms linux-headers-$(uname -r) |
效果
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment




