如何使用 Nvidia 专有驱动程序添加虚拟显示器?以前我在这个解决方案中使用了一张 Intel 卡,效果很好:Add VIRTUAL output to Xorg。
现在我想切换到没有英特尔卡的新硬件。VNC-Server中提到的作为扩展屏幕的虚拟 X11 监视器的解决方案在我的情况下不起作用。当我想将模式添加到输出时,xrandr
会引发错误。
xrandr --newmode test 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode "DP-1" test
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 41
Current serial number in output stream: 42
基本数据:
- 硬件:HP ZBook 15 G3,配置独立显卡(Optimus 不工作!)
- 软件:Debian 10.0.2;内核:4.19.0,Nvidia-Driver-Module:xserver-xorg-video-nvidia-legacy-390xx
如果你问,我为什么要这样做:我使用一个软件通过以太网将虚拟屏幕传输到另一台机器,以实现两个笔记本的双显示器。( https://github.com/B-LechCode/sooScreenShare )
更新:现在有一个建议的解决方案适用于我的机器,但它无法添加像 1920x1200 这样的新模式。也许有人有想法?
我有一个适合我的解决方案,尽管它缺少选择完全任意分辨率的能力。需要明确的是,这仅适用于专有的 nvidia 驱动程序;开源 nouveau 驱动程序的工作方式与其他显卡驱动程序不同。
简短的版本是:使用
ConnectedMonitor
nvidia xorg.conf Screen 选项来激活除主监视器之外的额外输出。这是长版本:
运行
xrandr --query
以获取您的主要输出的名称以及您计划用于虚拟屏幕的未连接输出的名称。例如,我得到以下输出:所以就我而言,笔记本电脑的屏幕是
LVDS-0
可用DP-0
的DP-5
。和你一样,我会选择DP-1
虚拟屏幕。您将需要添加一个 xorg.conf 屏幕配置,以及一个供屏幕使用的设备部分。这可以是 xorg 可以找到的任何地方。我把我的放进去
/etc/X11/xorg.conf.d/30-virtscreen.conf
。在该文件中,最小设置是:这告诉驱动程序使用
DP-1
输出,即使它没有检测到连接到它的监视器。请注意,如果您想使用它,您还必须列出您的笔记本电脑显示器(或真实的物理显示器)!如果您只列出虚拟输出,驱动程序将不会激活任何其他输出,即使它检测到连接到它们的监视器。现在重新启动 X。您应该会看到两个活动监视器
xrandr
以及其他显示查询程序。在我的系统上,新激活的虚拟输出有多种可用的分辨率。我可以选择其中任何一个(例如 via
xrandr --output DP-1 --mode 1600x900
),虚拟输出将自行调整大小。但是,我不能添加新模式(例如,如果我想要 1920x1080 分辨率)。那仍然给我“无效的参数属性”错误。幸运的是,我可以接受可用的模式。运气好的话,你也会有一些有用的预设。https://askubuntu.com/a/803053/1568608解决asciiphil问题,但您无法将分辨率更改为例如 1920x1080(asciiphil 答案中的参数属性无效问题)。要解决此问题,只需在“屏幕”部分添加第二个选项:
如果您想附加虚拟显示器,只需使用
将 HDMI-0 替换为您希望显卡用于虚拟显示到 xorg.conf 的“屏幕”部分的任何显示端口。添加以下行将禁用所有必要的检查,以允许您在较新的 NVIDIA 显卡上设置任何不受支持的分辨率。在“屏幕”部分下:
然后使用 cvt 的结果添加模式,你就可以开始了!如果您仍然无法设置分辨率,您可以将 ModeLine 添加到 Monitor 部分并将模式添加到 Display 部分以加载它。更完整的例子:
和
这些选项应该添加到您通过运行生成的配置文件中,
nvidia-xconfig
并且不代表完整或功能xorg.conf
。