Ubuntu22.04 双显卡系统使用集显 DRM 渲染的完整流程记录
Ubuntu22.04 双显卡系统使用集显 DRM 渲染的完整流程记录
在一台搭载 Intel 集成显卡(HD Graphics 4000)和 NVIDIA 独立显卡(GeForce GT 640M)的 Dell 笔记本上,我尝试让系统使用集显进行 DRM 渲染,并解决了 NVIDIA 驱动加载但无法接管显示输出的问题。以下是完整的排查与解决过程。
🧭 系统环境与硬件信息
通过 lspci
命令确认显卡配置:
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller
01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 640M]
系统识别了双显卡架构:Intel 集显 + NVIDIA 独显。
⚙️ 安装 NVIDIA 驱动
使用 Ubuntu 推荐方式安装 NVIDIA 驱动:
sudo ubuntu-drivers autoinstall
安装完成后重启系统,并验证驱动是否加载成功:
nvidia-smi
输出显示 NVIDIA 驱动已加载,但 glmark2-drm
报错:
Failed to grab modeset ownership
Could not initialize canvas
🔍 确认 framebuffer 控制权
通过 dmesg
查看 framebuffer 绑定情况:
dmesg | grep drm | grep fb
输出:
fbcon: i915drmfb (fb0) is primary device
说明 Intel 集显控制了显示输出,NVIDIA 虽然驱动已加载,但无法接管 framebuffer。
🧪 尝试使用 i915 的 DRM 接口
确认设备归属:
ls -l /sys/class/drm/card*/device/driver
输出:
card0 → nvidia
card1 → i915
✅ 使用 kmscube 成功调用 i915 DRM
安装并运行 kmscube
:
sudo apt install kmscube
在图形界面下运行:
kmscube -D /dev/dri/card1
输出显示成功识别 Intel 显卡,但报错:
failed to set mode: Permission denied
🧨 解决权限问题:切换到纯 tty 环境
在图形界面下, framebuffer 被 Xorg/Wayland 占用,导致 kmscube
无法设置显示模式。解决方法:
-
按下
Ctrl + Alt + F3
切换到 tty 终端 -
登录后运行:
kmscube -D /dev/dri/card1
✅ 成功渲染出旋转立方体,说明 i915 的 DRM 接口工作正常!