(K)Ubuntu 17.10 - nouveau または nvidia-384 を搭載した 2 枚の NVidia カードでの loginctl マルチシート

(K)Ubuntu 17.10 - nouveau または nvidia-384 を搭載した 2 枚の NVidia カードでの loginctl マルチシート

私は 2 枚の 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 を seat-1 に割り当て、GT 740 はそのままにしておいたので、GT 740 は seat0 に割り当てられたままです。seat0 にはモニターが 2 台ありますが、seat-1 にはモニターが 1 台しかありません。

nouveauの使用

XOrg ドライバーを使用するとnouveau、両方のシートを使用できます。両方のシートにlightdmログイン画面が表示され、ログインが許可されます。

ここで 2 つの問題があります。

  • seat0 は頻繁にロックアップしますが、どうやらセッションがロックされているときだけロックアップします。マウスは動きますが、キーボード入力は受け付けません。時計も更新されなくなります。
    • これは、ボックスに ssh で接続するか、シート 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 ディスプレイは、例えばウェブページをスクロールしているときにちらつきます。これは、ビデオメモリの帯域幅が低すぎることが原因である可能性があります。Nouveau トラブルシューティング - モニターが真っ白になる、ちらつく、雪が降る、その他のランダムなライブ画像の破損まだ調べていません。

独自のNVidiaドライバを使用する

独自の NVIDIA ドライバー ( apt install nvidia-384) をインストールすると、GT 740 (シート 0 に割り当てられ、モニターが 2 台装備) のみが使用可能になります。GT 730 (シート 1 に割り当てられ、モニターが 1 台装備) のもう一方のディスプレイは黒のままです。

ただし、良い点は、シート 0 でロックアップが発生しなくなったことです (シート 1 でちらつきがなくなったのは明らかですが、これは実際には改善ではありません ;-))

また、ハードウェア ドライバー設定アプリまたはコンソールを使用してドライバーを切り替えようとしましたubuntu-drivers。 どちらも、GT 740 という 1 つの NVidia カードのみをリストします。

$ 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 ドライバーに 2 番目のカードを認識させるだけでうまくいくと思いますが、これを実現する方法が分かりません。

何か案は?

よろしくお願いします、パトリック

答え1

よし、やっとうまくいった。

一般的な

このセクションは、他の人のためのちょっとした「入門」として、また私自身のためのちょっとした「備忘録」としてここにあります... これは唯一の方法ではなく、おそらく最善の方法でもありませんが、私が行った方法です。

  1. USB ハブを 2 つ用意し、2 つの座席にそれぞれ 1 つずつ配置します。それらをマシンの 2 つの USB ポートに接続します。
  2. USB サウンド カード (マイク入力コネクタ 1 つとライン出力コネクタ 1 つを備えた小型の USB ドングル) を入手し、マシンの別の USB ポートに接続します。これは、seat0 で使用される別の (オンボード) サウンド デバイスが既にあることを前提としています。
  3. USB ワイヤレス マウス/キーボード コンボを 2 つ用意し、2 つの USB ハブのそれぞれに USB ドングルを 1 つずつ差し込みます。
  4. ハブをそれぞれのシートに割り当てます ( loginctl attach seat1 /dev/...)。これにより、ハブに接続されているマウスとキーボードが自動的に割り当てられます。
  5. USBサウンドカードをseat1に割り当てる
  6. Nvidia カードの 1 つ (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ドライバ使用時にシート1の画面がちらつき、シート0がロックアップする問題については、どうしたらよいかわかりませんでした。この問題の解決策を探している場合は、次の記事を参考にするとよいかもしれません。 https://wiki.archlinux.org/index.php/Xorg_multiseatそれはこう言います:

ティアリングを回避するには、ほぼすべての構成でこれが役立つようです - これを /etc/environment に追加します:

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

もう 1 つのヒントは、ユーザーをグループに追加することです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 ....必要なすべてのデバイスをシート1に割り当てるために使用します
  2. NVIDIA の専用ドライバーをインストールします (システムに適したものを選択してください。ターミナルで実行すると、ubuntu-drivers devices利用可能なドライバーの一覧が表示されます)。

    apt install nvida-384
    
  3. リブート
  4. seat0にログインして実行しますnvidia-seetingsX Server Display Configuration左側を選択し、save to X Configuration File右下をクリックして、ファイルを~/xorg-templateとして保存します。
  5. ~/xorg-template 設定ファイルを に 2 回コピーします/etc/X11。1 回は としてxorg-seat0.conf、もう 1 回は としてxorg-seat1.conf
  6. これら 2 つの Xorg 構成ファイルを、それぞれ seat0 と seat1 の設定に合わせて変更します。変更する必要があったのは、GPU の PCI アドレスとモニターの数の 2 行だけです。ただし、わかりやすくするために識別子の名前も変更しました。これは実際には必要ないと思います。以下は私の構成です。

    • 座席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 は変更できませんが、2 番目のシートには任意の名前を付けることができます (先頭が でseat、その後に文字、数字、-、_ のみが含まれている必要があります)。2 番目のシートを構成するときは必ずその名前を使用してください。私はシンプルさを保つためにこの名前を使用しましたseat1

X 構成ファイルから削除できるものがあることは確かですが、まだ整理していません。より最小限のファイルでうまく機能することがわかった場合は、お気軽にここにコメントを投稿してください。情報を追加します (ただし、回答全体を投稿したくない場合は別です)。

たとえば、両方の X 構成ファイルで構成されているマウスもキーボードも私のマシンには存在しません。これらは によって追加されたダミー デバイスですnvidia-settings。物理デバイス (USB ワイヤレス マウスとキーボード) は、それぞれ seat0 と seat1 に接続されているため、オンザフライで追加されます。

関連情報