非确定性图形卡设备名称

sgt*_*man 8 kernel xorg udev multiseat graphic-card

我的系统包含三张显卡,一张 radeon 和两张 nvidia。

我正在尝试配置多座设置,但显卡的“设备名称”不稳定,它从一个引导更改为另一个引导。

例子

  • 引导 1

    显卡 /sys/devices/pci0000:00/0000:00:03.0/0000:01:00.0/drm/card1

    英伟达1张卡 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/drm/card0

    英伟达2卡 /sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/drm/card2

  • 启动 2

    显卡 /sys/devices/pci0000:00/0000:00:03.0/0000:01:00.0/drm/card0

    英伟达1张卡 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/drm/card1

    英伟达2卡 /sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/drm/card2

等等...

这个问题使任何多座位配置不稳定(我使用 loginctl),因为将设备分配给座位是基于这些设备名称。另一个实际问题是,这会在内核级别和 Xorg 级别更改显卡的连接器名称(即 VGA-1 变为 VGA-2 等),因此我无法通过 xorg.conf 进行任何显示器配置,也无法使用“ video=" 内核选项,在我的设置中需要它来强制启用没有 EDID 的旧 crt 监视器。

这个“card0”“card1”.. 是不确定的,这是一个错误还是可以配置的东西(udev 或类似的东西),这是否正常?

编辑

正如用户@dirkt 在评论中所说,在 systemd 级别它是不确定的,实际上多座配置本身是可以的。我的主要问题是输出名称的不可靠性。我需要它们在内核级别指定“video=VGA-1:e”以强制启用输出。我需要在 xorg 级别使用 Option "Monitor-VGA-1" "Monitor-x".

sgt*_*man 1

我还没有设法解决这个问题,但我找到了输出名称的解决方法:

  • 在内核启动选项中,我激活了三个 VGA 连接器:

    video=VGA-1:e video=VGA-2:e video=VGA-3:e
    
    Run Code Online (Sandbox Code Playgroud)
  • xorg.conf在我为所有可能的输出定义监视器选项的设备部分中,不相关的输出将被简单地忽略:

    Option "Monitor-VGA-1"  "my-monitor"
    Option "Monitor-VGA-2"  "my-monitor"
    Option "Monitor-VGA-3"  "my-monitor"
    
    Run Code Online (Sandbox Code Playgroud)

这很黑客,但它解决了我的主要问题。

我现在仍然不接受这个答案,因为我对更好、更干净的解决方案感兴趣。