如何:使用 Nvidia 专有驱动程序添加虚拟监视器

B-L*_*ode 10 debian x11 nvidia

我想问一下是否有人想添加带有 Nvidia 专有驱动程序的虚拟显示器。以前,我在此解决方案中使用了 Intel 卡,效果很好:将 VIRTUAL 输出添加到 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
Run Code Online (Sandbox Code Playgroud)

基本数据: 硬件:HP ZBook 15 G3,为独立显卡配置(Optimus 不工作!)软件:Debian 10.0.2;内核:4.19.0,Nvidia-Driver-Module:xser​​ver-xorg-video-nvidia-legacy-390xx

如果你问,我为什么这样做:我使用一个软件通过以太网将虚拟屏幕传输到另一台机器,以实现两台笔记本的双显示器。( https://github.com/B-LechCode/sooScreenShare )

更新:现在有一个建议的解决方案适用于我的机器,但它无法添加新模式,如 1920x1200。也许有人有想法?

asc*_*hil 7

我有一个适合我的解决方案,尽管它缺少选择完全任意分辨率的能力。需要明确的是,这仅适用于专有的 nvidia 驱动程序;开源 nouveau 驱动程序的工作方式与其他显卡驱动程序不同。

简短的版本是:使用ConnectedMonitornvidia xorg.conf Screen 选项来激活除主显示器之外的额外输出。

这是长版本:

运行xrandr --query以获取主要输出的名称以及计划用于虚拟屏幕的未连接输出的名称。例如,我得到以下输出:

LVDS-0接初级1440x900+0+0(正常左倒右x轴y轴)331mm x 207mm
   [各种监控模式已省略]
DP-0断开(正常左倒右x轴y轴)
DP-1断开(正常左倒右x轴y轴)
DP-2断开(正常左倒右x轴y轴)
DP-3断开(正常左倒右x轴y轴)
DP-4断开(正常左倒右x轴y轴)
DP-5断开(正常左倒右x轴y轴)

所以就我而言,笔记本电脑的屏幕是LVDS-0可用DP-0DP-5。和你一样,我会选择DP-1虚拟屏幕。

您将需要添加 xorg.conf 屏幕配置以及供屏幕使用的设备部分。它可以在 xorg 能找到它的任何地方。我把我的放进去/etc/X11/xorg.conf.d/30-virtscreen.conf。在该文件中,最小设置是:

“设备”部分
    标识符“nvidiagpu”
    驱动程序“nvidia”
结束部分

“屏幕”部分
    标识符“nvidiascreen”
    设备“nvidiagpu”
    选项“ConnectedMonitor”“LVDS-0,DP-1”
结束部分

这告诉驱动程序使用输出DP-1,即使它没有检测到连接到它的监视器。请注意,如果您想使用您的笔记本电脑显示器(或真实的物理显示器),您也必须列出它!如果仅列出虚拟输出,驱动程序将不会激活任何其他输出,即使它检测到连接到它们的显示器也是如此。

现在重新启动 X。您应该看到两个活动监视器以及xrandr其他显示查询程序。

在我的系统上,新激活的虚拟输出有多种可用分辨率。我可以选择其中任何一个(例如 via xrandr --output DP-1 --mode 1600x900),虚拟输出将自行调整大小。但是,我无法添加新模式(例如,如果我想要 1920x1080 分辨率)。这仍然给我“无效的参数属性”错误。幸运的是,我可以接受我可以使用的模式。幸运的话,您还会获得一些有用的预设。