web-dev-qa-db-ja.com

(K)Ubuntu 17.10-nouveauまたはnvidia-384の2枚のNVidiaカードでloginctl Multi-Seat

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)

その後、loginctlを使用してGT 730をseat-1に割り当て、GT 740をそのままにして、seat0に割り当てたままにします。 seat0には2台のモニターがあり、seat-1には1台しかありません。

Nouveauを使用する

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

ここで2つの問題:

  • 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!などのいくつかのメッセージを表示します
  • たとえば、Webページでスクロールすると、seat-1ディスプレイがちらつきます。これは、 Nouveau Troubleshooting-空白のモニター、ちらつき、雪、またはその他のランダムなライブ画像の破損 に従って、ビデオメモリの帯域幅が低すぎることが原因である可能性があります。これについてはまだ調査していません。

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

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

しかし、利点は、私はseat0でこれ以上ロックアップを経験しなかったことです(そして明らかにseat-1でこれ以上ちらつきはありませんが、これは実際には改善ではありません;-))

また、ハードウェアドライバー設定アプリまたはコンソールのubuntu-driversを使用してドライバーに切り替えようとしました。両方とも、1つの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ドライバーに2番目のカードを認識させるだけでうまくいくと思いますが、私にはわかりませんこれを達成する方法。

何か案は?

事前に感謝、パトリック

5

OK、ようやく機能しました。

一般的な

このセクションは、他の人にとっては小さな「はじめに」として、そして私自身にとっては小さな「側近の記憶」としてここにあります...これが唯一の方法ではなく、おそらく最善の方法でもないのです。それ。

  1. 2つのUSBハブを入手し、2つの座席のそれぞれに1つずつ配置します。それらをマシンの2つのUSBポートに差し込みます。
  2. USBサウンドカード(1つのマイク入力コネクタと1つのライン出力コネクタを備えた小さなUSBドングル)を入手して、マシンの別のUSBポートに差し込みます。これは、seat0で使用される別の(オンボード)サウンドデバイスが既に存在することを前提としています。
  3. 2つのUSBワイヤレスマウス/キーボードコンボを入手し、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ドライバーを使用しているときに、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バイナリドライバーの使用に切り替えました。

NVidia

私が抱えていた問題は、GPU-1がseat1に割り当てられているにもかかわらず、seat0のXサーバーが何らかの方法で両方のGPUを制御しようとしていたことでした。

これにより、座席1のXスクリーンと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に2回、1回はxorg-seat0.confとして、1回はxorg-seat1.confとしてコピーします
  6. これらの2つのXorg構成ファイルを変更して、それぞれseat0とseat1のセットアップに一致させます。 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は変更できませんが、2番目の座席には任意の名前を付けることができます(seatで始まり、その後に文字、数字、-、_のみが続く場合)。その名前を使用してセカンドシートを設定するようにしてください-seat1を使用してシンプルにしました。

X構成ファイルから削除できるものがあると確信していますが、まだ整理していません。うまく機能するためのよりミニマルなファイルを見つけた場合は、ここにコメントを投稿してください。あなたの情報を追加します(自分の答え全体を投稿したくない場合を除き)。

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

4