(K)Ubuntu 17.10 - nouveau 또는 nvidia-384가 포함된 2개의 NVidia 카드에 있는 loginctl 다중 시트

(K)Ubuntu 17.10 - nouveau 또는 nvidia-384가 포함된 2개의 NVidia 카드에 있는 loginctl 다중 시트

두 개의 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)

그런 다음 loginctlGT 730을 좌석 1에 할당하고 GT 740은 그대로 두었으므로 여전히 좌석 0에 할당되어 있습니다. Seat0에는 모니터가 2개 있고, Seat-1에는 모니터가 하나만 있습니다.

누보 사용하기

XOrg 드라이버를 사용하면 nouveau두 좌석을 모두 사용할 수 있습니다. 두 좌석 모두 lightdm로그인 화면을 표시하고 로그인을 허용합니다.

여기에는 두 가지 문제가 있습니다.

  • Seat0은 세션이 잠겨 있을 때만 자주 잠깁니다. 마우스는 계속 움직이지만 키보드 입력을 받아들이지 않습니다. 심지어 시계 업데이트도 중단됩니다.
    • 이 문제는 상자에 ssh를 사용하거나 Seat-1에 로그인하고 lightdm( service lightdm restart)을 다시 시작하면 해결될 수 있지만 분명히 이렇게 하면 두 좌석이 모두 로그아웃되므로 기껏해야 불편합니다.
    • dmesg | grep nouveaunouveau 0000:01:00.0: fifo: SCHED_ERROR 08 []다음과 같은 몇 가지 메시지를 보여줍니다 .nouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
  • 예를 들어 웹 페이지에서 스크롤할 때 Seat-1 디스플레이가 깜박입니다. 이는 비디오 메모리 대역폭이 너무 낮기 때문일 수 있습니다.누보 문제 해결 - 빈 모니터, 깜박임, 눈 또는 기타 임의의 라이브 이미지 손상. 나는 아직 이것을 조사하지 않았습니다.

독점 NVidia 드라이버 사용

전용 nvidia 드라이버( )를 설치하면 apt install nvidia-384GT 740(seat0에 할당, 모니터 2개 장착)만 사용할 수 있습니다. GT 730의 다른 디스플레이(1개의 모니터가 장착된 좌석-1에 할당됨)는 검정색으로 유지됩니다.

그러나 장점은 Seat0에서 더 이상 잠김이 발생하지 않았다는 것입니다(그리고 Seat-1에서는 더 이상 깜박임이 발생하지 않지만 이는 실제로 개선되지는 않습니다 ;-)).

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 구성을 수정하지 않았습니다. 거기에 무엇을 넣어야 할지 몰랐기 때문입니다... 엔비디아 드라이버가 두 번째 카드를 인식하도록 만드는 것만으로도 효과가 있을 것이라고 생각하지만 잘 모르겠습니다. 이것을 달성하는 방법.

어떤 아이디어가 있나요?

미리 감사드립니다, 패트릭

답변1

좋아, 드디어 해냈어.

일반적인

이 섹션은 다른 사람들을 위한 작은 "시작"으로, 그리고 나 자신을 위한 작은 "보좌관"으로 여기에 있습니다... 이것은 유일한 방법도 아니고 어쩌면 가장 좋은 방법도 아닐 수도 있습니다. 단지 제가 한 방식일 뿐입니다. 그것.

  1. 두 개의 USB 허브를 구입하여 두 좌석에 하나씩 배치하세요. 기기의 USB 포트 2개에 연결하세요.
  2. USB 사운드 카드(마이크 입력 커넥터 1개와 라인 출력 커넥터 1개가 있는 소형 USB 동글)를 구입하여 컴퓨터의 다른 USB 포트에 연결하세요. 이는 Seat0에서 사용할 다른 (온보드) 사운드 장치가 이미 있다고 가정합니다.
  3. 두 개의 USB 무선 마우스/키보드 콤보를 구입하고 두 개의 USB 허브 각각에 USB 동글 중 하나를 연결하세요.
  4. 허브를 해당 좌석( loginctl attach seat1 /dev/...)에 할당합니다. 그러면 허브에 연결된 마우스와 키보드가 자동으로 할당됩니다.
  5. Seat1에 USB 사운드 카드를 할당합니다.
  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
    

누보

누보드라이버 사용시 Seat1 화면 깜박임과 Seat0 잠금 현상에 대해 어떻게 해야 할지 모르겠습니다. 이 문제에 대한 해결책을 찾고 있다면 다음을 살펴보는 것이 좋습니다. https://wiki.archlinux.org/index.php/Xorg_multiseat이는 다음과 같이 말합니다.

찢어짐을 방지하려면 거의 모든 구성에 도움이 되는 것 같습니다. /etc/environment에 다음을 추가하세요.

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

또 다른 힌트는 사용자를 그룹에 추가하는 것이었습니다. video그렇지 않으면 사용자가 DRI 인터페이스에 액세스하지 못할 수도 있기 때문입니다.

이것이 제가 말할 수 있는 전부이며 Nvidia 바이너리 드라이버를 사용하도록 전환했습니다.

엔비디아

제가 겪었던 문제는 GPU-1이 Seat1에 할당되어 있음에도 불구하고 Seat0의 X 서버가 어떻게든 두 GPU를 모두 제어하려고 한다는 것이었습니다.

이로 인해 X 화면이 뒤섞이고 좌석 1의 X 서버가 사용 가능한 화면을 찾을 수 없습니다.

/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. Seat0 및 Seat1 설정과 각각 일치하도록 이 두 개의 Xorg 구성 파일을 수정합니다. GPU의 PCI 주소와 모니터 수 등 몇 줄만 변경하면 되었습니다. 그러나 명확성을 위해 식별자의 이름도 변경했습니다. 실제로는 필요하지 않을 것 같습니다. 아래는 내 구성입니다.

    • 좌석0

      # 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
      
    • 좌석1

      # 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-seat[01].conf 파일에는 좌석에 대한 힌트가 포함되어 있지 않습니다. 문자열 Seat0 및 Seat1을 사용하여 식별자의 이름을 지정했지만 관련성이 없습니다.

그러나 lightdm 구성에서는 좌석을 생성할 때 좌석에 할당한 이름을 사용해야 합니다. Seat0은 변경할 수 없지만 두 번째 좌석에는 원하는 이름을 지정할 수 있습니다( seat문자, 숫자, - 및 _로 시작하고 뒤에 오는 경우 에만). 두 번째 좌석을 구성하려면 해당 이름을 사용해야 합니다. 저는 seat1간단하게 유지했습니다.

X 구성 파일에서 제거할 수 있는 항목이 있다고 확신하지만 아직 정리하려고 시도하지 않았습니다. 잘 작동하는 최소한의 파일을 찾으면 여기에 댓글을 게시해 주세요. 그러면 정보를 추가해 드리겠습니다. (글쎄, 자신의 전체 답변을 게시하고 싶지 않은 경우는 제외됩니다.)

예를 들어, 두 X 구성 파일 모두에 구성된 마우스나 키보드가 내 컴퓨터에 존재하지 않습니다. 이는 에서 추가한 더미 장치입니다 nvidia-settings. 물리적 장치(USB 무선 마우스 및 키보드)는 각각 Seat0과 Seat1에 연결되어 있으므로 즉시 추가됩니다.

관련 정보