私は 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 はそのままにしておいたので、GT 740 は seat0 に割り当てられたままです。seat0 にはモニターが 2 台ありますが、seat-1 にはモニターが 1 台しかありません。
nouveauの使用
XOrg ドライバーを使用するとnouveau
、両方のシートを使用できます。両方のシートに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!
- これは、ボックスに ssh で接続するか、シート 1 にログインして lightdm (
- 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
よし、やっとうまくいった。
一般的な
このセクションは、他の人のためのちょっとした「入門」として、また私自身のためのちょっとした「備忘録」としてここにあります... これは唯一の方法ではなく、おそらく最善の方法でもありませんが、私が行った方法です。
- USB ハブを 2 つ用意し、2 つの座席にそれぞれ 1 つずつ配置します。それらをマシンの 2 つの USB ポートに接続します。
- USB サウンド カード (マイク入力コネクタ 1 つとライン出力コネクタ 1 つを備えた小型の USB ドングル) を入手し、マシンの別の USB ポートに接続します。これは、seat0 で使用される別の (オンボード) サウンド デバイスが既にあることを前提としています。
- USB ワイヤレス マウス/キーボード コンボを 2 つ用意し、2 つの USB ハブのそれぞれに USB ドングルを 1 つずつ差し込みます。
- ハブをそれぞれのシートに割り当てます (
loginctl attach seat1 /dev/...
)。これにより、ハブに接続されているマウスとキーボードが自動的に割り当てられます。 - USBサウンドカードをseat1に割り当てる
- Nvidia カードの 1 つ (DRM およびサウンド デバイスを含むすべて) を seat1 に割り当てます。
- すでに割り当てられているハブに接続されていない他のデバイスがある場合は、それらも割り当てます。
を実行します
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 構成を提供することでした。
したがって、私の手順は次のようになりました。
loginctl attach seat1 ....
必要なすべてのデバイスをシート1に割り当てるために使用しますNVIDIA の専用ドライバーをインストールします (システムに適したものを選択してください。ターミナルで実行すると、
ubuntu-drivers devices
利用可能なドライバーの一覧が表示されます)。apt install nvida-384
- リブート
- seat0にログインして実行します
nvidia-seetings
。X Server Display Configuration
左側を選択し、save to X Configuration File
右下をクリックして、ファイルを~/xorg-templateとして保存します。 - ~/xorg-template 設定ファイルを に 2 回コピーします
/etc/X11
。1 回は としてxorg-seat0.conf
、もう 1 回は としてxorg-seat1.conf
これら 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
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
- リブート
お気づきかもしれませんが、xorg-seat[01].conf ファイルには、座席に関するヒントがまったく含まれていません。識別子に seat0 および seat1 という文字列を使用して名前を付けましたが、これは無関係です。
ただし、lightdm 構成では、シートを作成するときに割り当てた名前を使用する必要があります。seat0 は変更できませんが、2 番目のシートには任意の名前を付けることができます (先頭が でseat
、その後に文字、数字、-、_ のみが含まれている必要があります)。2 番目のシートを構成するときは必ずその名前を使用してください。私はシンプルさを保つためにこの名前を使用しましたseat1
。
X 構成ファイルから削除できるものがあることは確かですが、まだ整理していません。より最小限のファイルでうまく機能することがわかった場合は、お気軽にここにコメントを投稿してください。情報を追加します (ただし、回答全体を投稿したくない場合は別です)。
たとえば、両方の X 構成ファイルで構成されているマウスもキーボードも私のマシンには存在しません。これらは によって追加されたダミー デバイスですnvidia-settings
。物理デバイス (USB ワイヤレス マウスとキーボード) は、それぞれ seat0 と seat1 に接続されているため、オンザフライで追加されます。