使用 X.org 和一张带有两个输出端口的 NVidia 卡设置多座席?(Ubuntu 14.04)

使用 X.org 和一张带有两个输出端口的 NVidia 卡设置多座席?(Ubuntu 14.04)

两天来,我一直在尝试设置我的 NVidia 卡以支持多座位安装,但感觉没有取得任何进展。

首先,我尝试按照此处的 Ubuntu 说明进行操作:

https://wiki.ubuntu.com/MultiseatTeam/Instructions

这些还不算太糟,只有 NVidia 驱动程序不提供为每个输出连接器选择一个座位的方法,因为它在设备列表中只定义了一个设备:

udevadm info --export-db

这给了我 NVidia 视频板的以下条目:

P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0
E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0
E: DRIVER=nvidia
E: ID_MODEL_FROM_DATABASE=GF108GL [Quadro 600]
E: ID_PCI_CLASS_FROM_DATABASE=Display controller
E: ID_PCI_INTERFACE_FROM_DATABASE=VGA controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=VGA compatible controller
E: ID_VENDOR_FROM_DATABASE=NVIDIA Corporation
E: MODALIAS=pci:v000010DEd00000DF8sv000010DEsd00000835bc03sc00i00
E: PCI_CLASS=30000
E: PCI_ID=10DE:0DF8
E: PCI_SLOT_NAME=0000:01:00.0
E: PCI_SUBSYS_ID=10DE:0835
E: SUBSYSTEM=pci
E: USEC_INITIALIZED=85345

音频有其他条目,但视频没有其他条目。因此,无法创建两个“视频席位”(实际上,我loginctl list-seats在席位列表中从未看到过除“seat0”之外的任何内容,尽管我将第二个鼠标和键盘标记为“seat-1”……从自由桌面网站,听起来添加任何名为“seat-???”的标签就足以创建一个loginctl list-seats最终会显示的座位。对我来说,即使重新启动后,它也没有用。)

该条目有一个有趣的方面,它不包含座位标签,正如我们在其他一些条目中看到的那样:

E: TAGS=:seat:

因此,我很确定,除非您有 2 个或更多视频板,否则上面链接的 Ubuntu 页面提供的简洁设置根本无法与 NVidia 一起使用。

后来我尝试了旧方法,即创建一个带有 2 个屏幕的 xorg.conf 设置。NVidia 提供了一种自动进行设置的方法,这很棒(即可以使用 nvidia-settings 工具保存有效的 xorg.conf。)这种方法确实有效,因为我们确实获得了两个独立的屏幕,但我还没有找到在第二个屏幕(屏幕 1)上放置登录屏幕的方法。我尝试启动 X 两次,如在各个地方所示,但当为屏幕 1 启动 X 时,NVidia 驱动程序告诉我某些资源不可用(被屏幕 0 锁定)。

[Seat0]
xserver-command=/usr/bin/X :0
[Seat1]
xserver-command=/usr/bin/X :1

我不太确定 lightdm 是否会尝试启动两个 X 服务器,因此我手动从 ssh 会话中尝试,在启动第一个 X 实例时,它工作正常。第二个实例生成错误并退出,因为它无法初始化驱动程序(这是有道理的,因为两者都会尝试使用相同的硬件资源。)我使用的完整命令行是:

/usr/bin/X -config /etc/X11/xorg.conf -isolateDevice PCI:1:0:0 :0 \
          -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -sharevts -keeptty

并对另一个使用:1。

因此,我认为我需要使用直接的屏幕 0 和 1 设置,并确保屏幕 1 为其他用户保留。有人知道如何实现这一点吗?

到目前为止,我尝试了 xorg.conf 的一个版本,但我还没有找到获取第二个登录屏幕的方法……

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 331.20  (buildd@roseapple)  Mon Feb  3 15:07:22 UTC 2014

Section "ServerLayout"
    Identifier     "seat0"
    Screen         "Screen0" 0 0
    #Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    #Option         "Xinerama" "0"
    # Avoid having X add all the devices to all the layouts
    Option         "AutoAddDevices" "False"
    Option         "AutoEnableDevices" "False"
EndSection

Section "ServerLayout"
    Identifier     "seat1"
    Screen       0 "Screen1" 0 0
    InputDevice    "Keyboard1" "CoreKeyboard"
    InputDevice    "Mouse1" "CorePointer"
    #Option         "Xinerama" "0"
    # Avoid having X add all the devices to all the layouts
    Option         "AutoAddDevices" "False"
    Option         "AutoEnableDevices" "False"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    #Option         "Device" "/dev/psaux" -- default setup
    Option         "Device" "/dev/input/mouse0"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse1"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mouse1"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
    # /devices/platform/i8042/serio0/input/input2
    Option         "Device" "/dev/input/event2"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard1"
    Driver         "kbd"
    # /devices/platform/i8042/serio0/input/input2
    Option         "Device" "/dev/input/event7"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Sony SDM-S73"
    HorizSync       28.0 - 65.0
    VertRefresh     57.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Samsung SyncMaster"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro 600"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro 600"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-0"
    Option         "metamodes" "DVI-I-0: nvidia-auto-select +0+0; DVI-I-0: 1280x1024 +0+0; DVI-I-0: 1024x768 +0+0; DVI-I-0: 800x600 +0+0; DVI-I-0: 640x480 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DP-0: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

相关内容