Ubuntu 22.04.3 LTS下保留modesetting驱动配置双物理+虚拟显示器的方法
Ubuntu 22.04.3 LTS下保留modesetting驱动配置双物理+虚拟显示器的方法
我之前也碰到过一模一样的场景:两台物理显示器设置为镜像,同时用一个VIRTUAL1作为主显示器供TeamViewer远程使用——这样远程操作时,完全不会打断物理显示器上全屏运行的浏览器界面。但升级到Ubuntu 22.04.3 LTS后,默认启用的modesetting驱动直接让虚拟显示器失效了,我不想禁用modesetting放弃它的特性,最后找到了启用**Virtual Kernel Mode Setting (VKMS)**内核模块的完美解决办法。
先说说我的设备情况(和你的配置高度相似):
- 显卡:Intel TigerLake-LP GT2 [Iris Xe Graphics],内核驱动为i915
- 当前显示配置:X.Org使用modesetting驱动,两台物理显示器(DP-1和HDMI-A-1)处于镜像状态,还有空余的物理接口未使用
解决步骤:
1. 启用VKMS内核模块
VKMS是虚拟内核模式设置模块,启用它就能在保留modesetting驱动的同时,重新支持虚拟显示器。可以通过以下脚本实现永久生效+当前会话临时生效:
if [ -z "$(grep vkms /etc/modules-load.d/modules.conf)" ]; then echo "Enable Virtual Kernel Mode Setting (VKMS) permanently" echo "vkms" | tee -a /etc/modules-load.d/modules.conf fi if [ -z "$(lsmod | egrep "^vkms")" ]; then echo "Enable Virtual Kernel Mode Setting (VKMS) for current session" modprobe vkms fi
执行完成后,运行xrandr命令,就能看到虚拟显示器(通常命名为VIRTUAL1)已经出现在输出列表里了。
2. 配置虚拟显示器的分辨率和位置
接下来用xrandr给虚拟显示器添加需要的分辨率,并设置它的主显示器属性和相对位置:
# 请先替换${VIRTUAL_LABEL}为你的虚拟显示器名称(比如VIRTUAL1),${HDMI_LABEL}为其中一台物理显示器名称(比如HDMI-A-1) xrandr --addmode ${VIRTUAL_LABEL} 3840x2160 xrandr --fb 4320x3840 --output ${HDMI_LABEL} --mode 3840x2160 --rotation left --output ${VIRTUAL_LABEL} --mode 3840x2160 --primary --rotation left --right-of ${HDMI_LABEL}
这样设置后,虚拟显示器会成为主显示器,位于物理显示器右侧,同时保留modesetting驱动的所有功能,物理显示器的镜像状态完全不受影响,远程操作再也不会干扰到本地的全屏浏览器界面。
备注:内容来源于stack exchange,提问作者Linn
相关产品推荐
相关产品推荐

