(K) Ubuntu 17.10 - loginctl Мультиместо на 2 картах Nvidia или с nouveau или с nvidia-384

Я имею, устанавливают машину с двумя видеокартами Nvidia:

$ lspci
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 740] (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)

Я затем использовал loginctl присваивать GT 730 для размещения 1 и оставленный нетронутый th GT 740, таким образом, это все еще присвоено seat0. seat0 имеет два монитора, место 1 имеет только один.

Используя nouveau

Используя nouveau Драйвер Xorg, я могу использовать оба места. Оба места отображаются lightdm войдите в систему экранируют и позволяют вход в систему.

Две проблемы здесь:

  • seat0 запирается часто, по-видимому только когда сессия заблокирована. Мышь все еще перемещается, но она не принимает ввод с клавиатуры. Даже часы прекращают обновлять.
    • Это может быть зафиксировано ssh-лугом в поле или входящий в систему на месте 1 и просто перезапускающий lightdm (service lightdm restart), но очевидно это выходит из системы оба места, который неудобен в лучшем случае
    • dmesg | grep nouveau шоу пара сообщений как nouveau 0000:01:00.0: fifo: SCHED_ERROR 08 [] или nouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
  • усадите 1 мерцание дисплея при прокрутке, например, в веб-странице. Это могло бы быть из-за слишком низкой пропускной способности видеопамяти согласно Nouveau, Диагностирующему - Пустой монитор, мерцание, снег или другое случайное живое повреждение изображения. Я еще не исследовал это.

Используя собственные драйверы Nvidia

Когда я устанавливаю собственные драйверы Nvidia (apt install nvidia-384), только GT 740 (присвоенный seat0, оборудованному двумя мониторами), применим. Другой дисплей на GT 730 (присвоенный для размещения 1, оборудованный одним монитором) остается черным.

Позитивный аспект однако - то, что я больше не испытывал тупики на seat0 (и очевидно больше никакого мерцания на месте 1, хотя это не действительно улучшение ;-))

Я также попытался переключиться на драйверы с помощью приложения установки Hardware Drivers или ubuntu-drivers на консоли. Они оба только перечисляют одну карту Nvidia, а именно, GT 740:

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd00000FC8sv00001458sd000036FFbc03sc00i00
vendor   : NVIDIA Corporation
model    : GK107 [GeForce GT 740]
driver   : nvidia-384 - distro non-free recommended
driver   : nvidia-340 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

== cpu-microcode.py ==
driver   : amd64-microcode - distro non-free

Заключение

Моя цель состоит в том, чтобы иметь оба выполнения мест, не запираясь и не мерцая. Я действительно не забочусь, достигается ли это с помощью nouveau или драйверы Nvidia.

Я в настоящее время не имею Xorg.conf или изменил lightdm конфигурацию, потому что я просто не знал, что поместить там... Я предполагаю, что просто создание драйвера Nvidia распознать вторую карту добилось бы цели, но я понятия не имею, как достигнуть этого.

Какие-либо идеи?

Заранее спасибо, Patrick

5
задан 6 November 2017 в 05:10

1 ответ

Хорошо, я наконец заставил его работать.

общая информация

Этот раздел здесь как немного "начинает" для других и такого же небольшого количества "памятки" для меня... Это не единственное и возможно даже лучший способ сделать это, это - просто способ, которым я сделал это.

  1. Получите два концентратора USB и поместите один в каждом из двух мест. Включите их в два USB-порта машины.
  2. Получите карту звука USB (маленький аппаратный ключ USB с одним микрометром - в и один коннектор строки) и включите его в другой USB-порт Вашей машины. Это предполагает, что уже существует другое (встроенное) звуковое устройство, которое должно использоваться на seat0.
  3. Получите две беспроводной мыши USB / комбинации клавиатуры и включите один из аппаратных ключей USB в каждом из двух концентраторов USB.
  4. Присвойте концентраторы соответствующим местам (loginctl attach seat1 /dev/...). Это автоматически присваивает мышь и клавиатуру, которые включаются в концентратор.
  5. Присвойте карту звука USB seat1
  6. Присвойте одну из карт Nvidia (все это, включая DRM и Звуковые устройства) к seat1.
  7. Если у Вас есть какие-либо другие устройства, которые не включаются в уже присвоенный концентратор, то присваивают им также.
  8. Выполненный loginctl seat-status seat1. Это - то, как это смотрит здесь:

    seat1
            Sessions: *c3
             Devices:
                      ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card1
                      │ [MASTER] drm:card1
                      ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/renderD129
                      │ drm:renderD129
                      ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2
                      │ sound:card2 "NVidia"
                      │ ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input20
                      │ │ input:input20 "HDA NVidia HDMI/DP,pcm=3"
                      │ └─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input21
                      │   input:input21 "HDA NVidia HDMI/DP,pcm=7"
                      ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8
                      │ usb:usb8
                      │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1
                      │ │ usb:8-1
                      │ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.3
                      │ │ │ usb:8-1.3
                      │ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.0/0003:046A:B102.0004/input/input5
                      │ │ │ input:input5 "HOLTEK USB Wireless Device"
                      │ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.1/0003:046A:B102.0005/input/input6
                      │ │   input:input6 "HOLTEK USB Wireless Device"
                      │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2
                      │   usb:8-2
                      │   └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2/8-2.3
                      │     usb:8-2.3
                      ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9
                      │ usb:usb9
                      │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1
                      │ │ usb:9-1
                      │ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1/9-1.3
                      │ │   usb:9-1.3
                      │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2
                      │   usb:9-2
                      │   └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2/9-2.3
                      │     usb:9-2.3
                      ├─/sys/devices/pci0000:00/0000:00:12.0/usb4
                      │ usb:usb4
                      │ ├─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.0/sound/card5
                      │ │ sound:card5 "Device"
                      │ └─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.3/0003:0D8C:0014.0001/input/input2
                      │   input:input2 "C-Media Electronics Inc. USB Audio Device"
                      └─/sys/devices/pci0000:00/0000:00:12.2/usb1
                        usb:usb1
                        ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-2
                        │ usb:1-2
                        ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/input/input15
                        │ input:input15 "UVC Camera (046d:0807)"
                        ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/video4linux/video0
                        │ video4linux:video0 "UVC Camera (046d:0807)"
                        ├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.2/sound/card3
                        │ sound:card3 "U0x46d0x807"
                        └─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5
                          usb:1-5
    

nouveau

Я не узнал, что сделать об экране, мерцающем на seat1 и тупики на seat0 при использовании nouveau драйвера. В случае, если Вы ищете решение для этой самой проблемы, это могло бы стоить взглянуть на https://wiki.archlinux.org/index.php/Xorg_multiseat, который говорит:

Чтобы постараться не рваться, это, кажется, помогает почти на всех конфигурациях - добавляет это к/etc/environment:

CLUTTER_PAINT=disable-clipped-redraws:disable-culling 
CLUTTER_VBLANK=True 

Другая подсказка должна была добавить пользователя к группе video потому что иначе у них не могло бы быть доступа к интерфейсу DRI.

Это обо всем, что я могу сказать, и я переключился на использование двоичных драйверов Nvidia.

Nvidia

Проблемой, которую я имел, был appearantly, что X-сервер seat0 так или иначе пытался взять под свой контроль оба GPU даже при том, что GPU-1 был, присвоен seat1.

Это так или иначе перепутало X экранов, и X-сервер для места 1 не мог найти применимые экраны.

Я провел часы игры с /etc/X11/xorg.conf.d файлы, куда я поместил крошечные части конфигурации как

Section "Device"
        Identifier      "graphic0"
        Driver          "nvidia"
        Option          "NoLogo"
        BusId           "PCI:1:0:0"
        MatchSeat       "seat-1"
        Option          "Monitor-DVI-1"         "monitor1"
EndSection

и

Section "ServerLayout"
        Identifier      "seat-1"
        Screen          "screen1"       0                   0
        InputDevice     "mouse1"        "CorePointer"
        InputDevice     "keyboard1"     "CoreKeyboard"
        Option          "Seat"  "seat-1"
        Option          "SingleCard" "on"
EndSection

как рекомендуется https://wiki.archlinux.org/index.php/Xorg_multiseat (партия полезной информации там, хотя это не решило мою проблему), или https://devtalk.nvidia.com/default/topic/936873/linux/-howto-multiseat-with-ubuntu-16-04-systemd-gdm-proprietary-drivers/1 (другое высококачественное обсуждение этой проблемы).

То, что наконец работало на меня, делало его твердый путь и предоставляло X конфигураций для каждого из мест.

Так, моя процедура была:

  1. использовать loginctl attach seat1 .... присваивать все выбранные устройства seat1
  2. установите Nvidia собственные драйверы (удостоверьтесь, что Вы выбираете правильный для Вас система; в выполненном терминале ubuntu-drivers devices видеть список доступных драйверов)

    apt install nvida-384
    
  3. перезагрузка
  4. вход в систему на seat0 и выполненный nvidia-seetings. Выбрать X Server Display Configuration слева, нажать save to X Configuration File нижняя правая часть и сохранила файл как ~/xorg-template
  5. Скопируйте ~/xorg-template файл конфигурации дважды к /etc/X11, однажды как xorg-seat0.conf и однажды как xorg-seat1.conf
  6. Измените эти два файла конфигурации Xorg для соответствия seat0 и установке seat1 соответственно. Я только должен был изменить несколько строк - адрес PCI GPU и количество мониторов. Я действительно однако также изменял именование Идентификаторов ради ясности - я предполагаю, что это действительно не требовалось бы. Ниже моя конфигурация:

    • seat0

      # xorg-seat0.conf
      Section "ServerLayout"
          Identifier     "Layout-seat0"
          Screen      0  "Screen-seat0" 0 0
          InputDevice    "Keyboard-seat0" "CoreKeyboard"
          InputDevice    "Mouse-seat0" "CorePointer"
          Option         "Xinerama" "0"
      EndSection
      
      Section "Files"
      EndSection
      
      Section "InputDevice"
          # generated from default
          Identifier     "Mouse-seat0"
          Driver         "mouse"
          Option         "Protocol" "auto"
          Option         "Device" "/dev/psaux"
          Option         "Emulate3Buttons" "no"
          Option         "ZAxisMapping" "4 5"
      EndSection
      
      Section "InputDevice"
          # generated from default
          Identifier     "Keyboard-seat0"
          Driver         "kbd"                                                                                                                                                                                                                    
      EndSection                                                                                                                                                                                                                                  
      
      Section "Monitor"                                                                                                                                                                                                                           
          # HorizSync source: edid, VertRefresh source: edid                                                                                                                                                                                      
          Identifier     "Monitor-seat0_1"                                                                                                                                                                                                        
          VendorName     "Unknown"                                                                                                                                                                                                                
          ModelName      "FUS H22-1W"                                                                                                                                                                                                             
          HorizSync       28.0 - 79.0                                                                                                                                                                                                             
          VertRefresh     50.0 - 75.0                                                                                                                                                                                                             
          Option         "DPMS"                                                                                                                                                                                                                   
      EndSection                                                                                                                                                                                                                                  
      
      Section "Device"                                                                                                                                                                                                                            
          Identifier     "Device-seat0"                                                                                                                                                                                                           
          Driver         "nvidia"                                                                                                                                                                                                                 
          VendorName     "NVIDIA Corporation"                                                                                                                                                                                                     
          BoardName      "GeForce GT 740"                                                                                                                                                                                                         
          BusID          "PCI:1:0:0"                                                                                                                                                                                                              
      EndSection                                                                                                                                                                                                                                  
      
      Section "Screen"                                                                                                                                                                                                                            
          Identifier     "Screen-seat0"                                                                                                                                                                                                           
          Device         "Device-seat0"                                                                                                                                                                                                           
          Monitor        "Monitor-seat0_1"                                                                                                                                                                                                        
          DefaultDepth    24                                                                                                                                                                                                                      
          Option         "Stereo" "0"
          Option         "nvidiaXineramaInfoOrder" "DFP-0"
          Option         "metamodes" "DVI-D-0: nvidia-auto-select +0+0, DVI-D-1: nvidia-auto-select +1680+0"
          Option         "SLI" "Off"
          Option         "MultiGPU" "Off"
          Option         "BaseMosaic" "off"
          SubSection     "Display"
              Depth       24
          EndSubSection
      EndSection
      
    • seat1

      # xorg-seat1.conf
      Section "ServerLayout"
          Identifier     "Layout-seat1"
          Screen      0  "Screen-seat1" 0 0
          InputDevice    "Keyboard-seat1" "CoreKeyboard"
          InputDevice    "Mouse-seat1" "CorePointer"
          Option         "Xinerama" "0"
      EndSection
      
      Section "Files"
      EndSection
      
      Section "InputDevice"
          # generated from default
          Identifier     "Mouse-seat1"
          Driver         "mouse"
          Option         "Protocol" "auto"
          Option         "Device" "/dev/psaux"
          Option         "Emulate3Buttons" "no"
          Option         "ZAxisMapping" "4 5"
      EndSection
      
      Section "InputDevice"
          # generated from default
          Identifier     "Keyboard-seat1"
          Driver         "kbd"
      EndSection
      
      Section "Monitor"
          # HorizSync source: edid, VertRefresh source: edid
          Identifier     "Monitor-seat1_1"
          VendorName     "Unknown"
          ModelName      "FUS H22-1W"
          HorizSync       28.0 - 79.0
          VertRefresh     50.0 - 75.0
          Option         "DPMS"
      EndSection
      
      Section "Device"
          Identifier     "Device-seat1"
          Driver         "nvidia"
          VendorName     "NVIDIA Corporation"
          BoardName      "GeForce GT 730"
          BusID          "PCI:2:0:0"
      EndSection
      
      Section "Screen"
          Identifier     "Screen-seat1"
          Device         "Device-seat1"
          Monitor        "Monitor-seat1_1"
          DefaultDepth    24
          Option         "Stereo" "0"
          Option         "nvidiaXineramaInfoOrder" "DFP-0"
          Option         "metamodes" "DVI-D-0: nvidia-auto-select +0+0"
          Option         "SLI" "Off"
          Option         "MultiGPU" "Off"
          Option         "BaseMosaic" "off"
          SubSection     "Display"
              Depth       24
          EndSubSection
      EndSection
      
  7. Создайте новый файл 10-seats.conf в /etc/lightdm/lightdm.conf.d/ (создайте папку, если это еще не там), и присвойте разметки и файлы конфигурации к каждому из X-серверов:

    # 10-seats.conf
    [Seat:seat0]
    xserver-command=/usr/bin/X :0
    xserver-config=/etc/X11/xorg-seat0.conf
    xserver-layout=Layout-seat0
    
    [Seat:seat1]
    xserver-command=/usr/bin/X :1
    xserver-config=/etc/X11/xorg-seat1.conf
    xserver-layout=Layout-seat1
    
  8. перезагрузка

Как можно заметить, место Xorg [01], .conf файлы не содержат подсказки к местам. Я назвал Идентификаторы с помощью строк seat0 и seat1, но это не имеет никакой уместности.

Но, в lightdm конфигурации это требуется, чтобы использовать имена, которые Вы присвоили местам при создании их. seat0 не может быть изменен, но второе место может иметь любое имя, которое Вы выбираете (как долго, поскольку это запускается с seat и сопровождается буквами, цифрами, - и _ только). Удостоверьтесь, что Вы используете то имя для конфигурирования второго места - я использовал seat1 сохранять это простым.

Я вполне уверен, что существуют вещи, которые могли быть удалены из этих X файлов конфигурации, но я еще не попытался убрать их. При нахождении более минималистического файла к работе хорошо не стесняйтесь добавлять комментарий здесь, и я добавлю информацию (хорошо, если Вы не будете испытывать желание отправлять свой собственный весь ответ, который является).

Например, ни мышь, ни клавиатура, настроенная в обоих из этих X файлов конфигурации, действительно не существуют на моей машине - они - фиктивные устройства, добавленные nvidia-settings. Физические устройства (беспроводная мышь USB и клавиатура) добавляются на лету, потому что они присоединены к seat0 и seat1 соответственно.

4
ответ дан 23 November 2019 в 09:30

Другие вопросы по тегам:

Похожие вопросы: